Ανανέωση ιστοσελίδας

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 03-09-12, 12:03
Όνομα: ΧΡΙΣΤΙΝΑ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 15-11-2010
Μηνύματα: 14
Προεπιλογή Διαχείριση αδειών

Γειά σας και πάλι.

Παραθέτω μια απορια ως προς ενα πόνημα που βρηκα στο forum το οποίο βοηθάει παρα πολύ.

http://www.ms-office.gr/forum/access...ma-access.html



Η απορία που έχω ειναι η εξης:

Οταν δίνω για κάποιο υπάλληλο
Ημερομηνια Από π.χ. 17-07-2012 και
Ημερομηνία Έως π.χ. 20-07-2012 και
επιλέγω ως Τύπο άδειας π.χ. Τιμητική (δεν εχει σημασία)

θελω να γίνεται το εξής:
Οταν δίνω για τον ίδιο υπάλληλο
Ημερομηνια Από π.χ. 18-07-2012 και
Ημερομηνία Έως π.χ. 20-07-2012 και
επιλέγω ως Τύπο άδειας π.χ. Τιμητική (δεν εχει σημασία)

να μην γίνεται αποδεκτο το διαστημα Απο - Εως!!!!
Γίνεται αυτό;...


Σας επισυναπτω την εικονα με την οποια δειχνω τι εννοω καθώς επίσης κι ενα πόνημα
με το οποίο φαινονται και οι σχεσεις των πινακων Προσωπικου - Αδειων.

Ελπίζω να εγινα κατανοητη.

Ευχαριστω εκ των προτερων για την απαντηση σας.
Συνημμένα Thumbnails
Διαχείριση αδειών-eikona_test.jpg  
Συνημμένα Αρχεία
Τύπος Αρχείου: zip example.zip (164,7 KB, 152 εμφανίσεις)
Απάντηση με παράθεση
  #2  
Παλιά 03-09-12, 15:11
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2012
Περιοχή: Πειραιάς
Μηνύματα: 181
Προεπιλογή

Χριστίνα καλό σου απόγευμα,

Στην φόρμα 'Δευτερεύουσα φόρμα QRY_adeies' στο πεδίο 'StartDate' στο συμβάν 'Before Update' βάλε αυτόν τον κώδικα

Κώδικας:
    Dim db As Database
    Dim rs As DAO.Recordset
    Dim sql As String
    Dim msg As String
    Dim rscnt As Integer
    Dim idpa As Integer
    
    idpa = Me.Parent.ID
    sql = "SELECT [Adeies].[ID], Min([Adeies].[StartDate]) AS minStartD," & _
          "       Max([Adeies].[EndDate]) AS MaxEndD, Year([EndDate]) AS etos" & _
          "  FROM Adeies" & _
          " GROUP BY [Adeies].[ID], Year([EndDate])" & _
          "HAVING [Adeies].[ID] = " & idpa & _
          "   AND Year([StartDate]) = " & Year(Me.StartDate)
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset(sql, dbOpenDynaset)
    rscnt = rs.RecordCount
    
    If rscnt = 0 Then
        rs.close
        Set db = Nothing
        Set rs = Nothing
        Exit Sub
    ElseIf Me.StartDate >= rs!minStartD And Me.StartDate <= rs!MaxEndD Then
        msg = MsgBox("Ο Συνεργάτης σας 'ΒΑΛΕ ΟΤΙ ΘΕΛΕΙΣ'", _
                      vbInformation, "Η εφαρμογή σας ενημερώνει ότι..")
        Me.Undo
    End If
    
    rs.close
    Set db = Nothing
    Set rs = Nothing
Στην φόρμα 'Δευτερεύουσα φόρμα QRY_adeies' στο πεδίο 'EndDate' στο συμβάν 'Before Update' βάλε αυτόν τον κώδικα

Κώδικας:
    Dim db As Database
    Dim rs As DAO.Recordset
    Dim sql As String
    Dim msg As String
    Dim rscnt As Integer
    Dim idpa As Integer
    
    idpa = Me.Parent.ID
    sql = "SELECT [Adeies].[ID], Min([Adeies].[StartDate]) AS minStartD," & _
          "       Max([Adeies].[EndDate]) AS MaxEndD, Year([EndDate]) AS etos" & _
          "  FROM Adeies" & _
          " GROUP BY [Adeies].[ID], Year([EndDate])" & _
          "HAVING [Adeies].[ID] = " & idpa & _
          "   AND Year([EndDate]) = " & Year(Me.EndDate)
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset(sql, dbOpenDynaset)
    rscnt = rs.RecordCount
    
    If rscnt = 0 Then
        rs.Close
        Set db = Nothing
        Set rs = Nothing
        Exit Sub
    ElseIf Me.EndDate >= rs!minStartD And Me.EndDate <= rs!MaxEndD Then
        msg = MsgBox("Ο Συνεργάτης σας 'ΒΑΛΕ ΟΤΙ ΘΕΛΕΙΣ'", _
                      vbInformation, "Η εφαρμογή σας ενημερώνει ότι...")
        Me.Undo
    End If

    rs.close
    Set db = Nothing
    Set rs = Nothing
Ελπίζω να σου κάνει.

Τελευταία επεξεργασία από το χρήστη ασχετος : 05-09-12 στις 08:28.
Απάντηση με παράθεση
  #3  
Παλιά 04-09-12, 10:04
Όνομα: Κώστας
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-01-2012
Περιοχή: Πειραιάς
Μηνύματα: 181
Προεπιλογή

Χριστίνα καλή σου μέρα,

Στον κώδικα που έγραψα, σβήσε τα σημασμένα με πράσινο
Απάντηση με παράθεση
  #4  
Παλιά 05-09-12, 08:00
Όνομα: Θανάσης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 22-02-2012
Μηνύματα: 238
Προεπιλογή

Καλημέρα σε όλους
Κοίτα και μια άλλη λύση, σε περίπτωση εισαγωγής ημερομηνία "εντός" πρέπει να ακυρώσεις την εγγραφή με ESC
Θανάσης
Συνημμένα Αρχεία
Τύπος Αρχείου: zip example.zip (215,7 KB, 151 εμφανίσεις)
Απάντηση με παράθεση
  #5  
Παλιά 05-09-12, 14:57
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.010
Προεπιλογή

Καλησπέρα σε όλους!

Θα μπορούσε να τροποποιηθεί η μακροεντολή CountDatesPeriod() για να αναιρεί την τελευταία καταχώρηση αν συμπίπτουν οι ημερομηνίες:

Κώδικας:
Private Sub CountDatesPeriod()
    Dim Date1 As Long, Date2 As Long
    If IsDate(Me.StartDate) And IsDate(Me.EndDate) Then
        If Me.StartDate <= Me.EndDate And Me.StartDate <> 0 Then
            Date1 = CLng(Me.StartDate): Date2 = CLng(Me.EndDate)
            If DCount("ID", "Adeies", "ID =" & Me.ID & _
                      " AND (StartDate Between " & Date1 & " And " _
                      & Date2 & ") Or (" & "EndDate Between " & _
                      Date1 & " And " & Date2 & ")") Then
                MsgBox "Dating in conflict..."
                Me.Undo
            Else
                Me.AbsenceDays = Me.EndDate - Me.StartDate + 1
            End If
        End If
    End If
End Sub
Φιλικά

Τάσος
Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #6  
Παλιά 07-09-12, 11:46
Όνομα: ΧΡΙΣΤΙΝΑ
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 15-11-2010
Μηνύματα: 14
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από ασχετος Εμφάνιση μηνυμάτων
Χριστίνα καλό σου απόγευμα,

Στην φόρμα 'Δευτερεύουσα φόρμα QRY_adeies' στο πεδίο 'StartDate' στο συμβάν 'Before Update' βάλε αυτόν τον κώδικα

Κώδικας:
    Dim db As Database
    Dim rs As DAO.Recordset
    Dim sql As String
    Dim msg As String
    Dim rscnt As Integer
    Dim idpa As Integer
    
    idpa = Me.Parent.ID
    sql = "SELECT [Adeies].[ID], Min([Adeies].[StartDate]) AS minStartD," & _
          "       Max([Adeies].[EndDate]) AS MaxEndD, Year([EndDate]) AS etos" & _
          "  FROM Adeies" & _
          " GROUP BY [Adeies].[ID], Year([EndDate])" & _
          "HAVING [Adeies].[ID] = " & idpa & _
          "   AND Year([StartDate]) = " & Year(Me.StartDate)
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset(sql, dbOpenDynaset)
    rscnt = rs.RecordCount
    
    If rscnt = 0 Then
        rs.close
        Set db = Nothing
        Set rs = Nothing
        Exit Sub
    ElseIf Me.StartDate >= rs!minStartD And Me.StartDate <= rs!MaxEndD Then
        msg = MsgBox("Ο Συνεργάτης σας 'ΒΑΛΕ ΟΤΙ ΘΕΛΕΙΣ'", _
                      vbInformation, "Η εφαρμογή σας ενημερώνει ότι..")
        Me.Undo
    End If
    
    rs.close
    Set db = Nothing
    Set rs = Nothing
Στην φόρμα 'Δευτερεύουσα φόρμα QRY_adeies' στο πεδίο 'EndDate' στο συμβάν 'Before Update' βάλε αυτόν τον κώδικα

Κώδικας:
    Dim db As Database
    Dim rs As DAO.Recordset
    Dim sql As String
    Dim msg As String
    Dim rscnt As Integer
    Dim idpa As Integer
    
    idpa = Me.Parent.ID
    sql = "SELECT [Adeies].[ID], Min([Adeies].[StartDate]) AS minStartD," & _
          "       Max([Adeies].[EndDate]) AS MaxEndD, Year([EndDate]) AS etos" & _
          "  FROM Adeies" & _
          " GROUP BY [Adeies].[ID], Year([EndDate])" & _
          "HAVING [Adeies].[ID] = " & idpa & _
          "   AND Year([EndDate]) = " & Year(Me.EndDate)
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset(sql, dbOpenDynaset)
    rscnt = rs.RecordCount
    
    If rscnt = 0 Then
        rs.Close
        Set db = Nothing
        Set rs = Nothing
        Exit Sub
    ElseIf Me.EndDate >= rs!minStartD And Me.EndDate <= rs!MaxEndD Then
        msg = MsgBox("Ο Συνεργάτης σας 'ΒΑΛΕ ΟΤΙ ΘΕΛΕΙΣ'", _
                      vbInformation, "Η εφαρμογή σας ενημερώνει ότι...")
        Me.Undo
    End If

    rs.close
    Set db = Nothing
    Set rs = Nothing
Ελπίζω να σου κάνει.

Συγνώμη για την καθυστέρηση της απάντησης.
Ακριβώς αυτό ήθελα.
Ευχαριστω πολύ!!!!!!!!


Υ.Γ. Ευχαριστώ όλους όσους μπηκαν στον κόπο να απαντησουν στο ερώτημα μου.
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Καταμέτρηση αδειων manolis Excel - Ερωτήσεις / Απαντήσεις 9 03-11-16 10:20
Διαχείρηση Αδειών nkouk Access - Ερωτήσεις / Απαντήσεις 0 31-10-15 17:13
Διαχείριση Πρόσθεσης και Αφαίρεσης Αδειών Εργαζόμενων marinx08 Access - Ερωτήσεις / Απαντήσεις 1 11-12-14 18:54
Διαχείριση αδειών bill72 Access - Ερωτήσεις / Απαντήσεις 9 13-01-13 16:23
Διαχείριση αδειών - παράδειγμα Access Ms-Office-Development Team Access samples - Χρήσιμα αρχεία & παραδείγματα 0 24-05-10 12:44


Η ώρα είναι 22:24.