
04-01-14, 08:27
|
| Όνομα: Γιώργος Έκδοση λογισμικού Office: Ms-Office 2010 Γλώσσα λογισμικού Office: Ελληνική, Αγγλική | | Εγγραφή: 18-06-2010
Μηνύματα: 3.674
| |
Καλημέρα
Χρήστο η λύση του προηγούμενου μηνύματος έχει αρκετά κουσούρια.
Για μια πιο ολοκληρωμένη λύση, θα πρότεινα τον παρακάτω κώδικα: Κώδικας: Private Sub fDate_BeforeUpdate(Cancel As Integer)
Dim minDate As Date, maxDate As Date, strC As String
If Me.NewRecord Then
If Me.fDate <= Nz(DMax("[fDate]", "[tblDates]", "[EmpID] =" & [EmpID]), 0) Then
MsgBox "Η ημερομηνία δεν υπερβαίνει τις προηγούμενες"
Cancel = True
End If
Else
'Αρχή σχολίων
strC = "[EmpID] =" & [EmpID] & " And [ID] < " & Me.ID
minDate = Nz(DMax("[fDate]", "[tblDates]", strC), 0)
strC = "[EmpID] =" & [EmpID] & " And [ID] > " & Me.ID
maxDate = Nz(DMin("[fDate]", "[tblDates]", strC), #1/1/9999#)
If Me.fDate < minDate Or Me.fDate > maxDate Then
MsgBox "Η νέα ημερομηνία πρέπει να είναι ανάμεσα στις υπάρχουσες"
Cancel = True
End If
'τέλος σχολίων
End If
End Sub
Το πεδίο ID στον κώδικα είναι το πρωτεύον κλειδί του πίνακα.
Με τον κώδικα επιβάλλεται: - Στις νέες εγγραφές, η ημερομηνία που καταχωρείται για κάποιο εργαζόμενο να είναι μεγαλύτερη από τις ήδη καταχωρημένες.
- Στις παλιές εγγραφές (περίπτωση διόρθωσης) να είναι ανάμεσα στη μέγιστη των προηγούμενων εγγραφών και την ελάχιστη των επόμενων
Αν δε θέλεις τον τελευταίο περιορισμό κάνε τις γραμμές που υποδεικνύονται στον κώδικα σχόλια.
Φιλικά/Γιώργος
|