Καλησπέρα και καλή χρονιά
Για την υλοποίηση του ζητούμενου θα πρέπει ο πίνακας στον οποίο καταχωρούνται τα στοιχεία των εγγράφων, εκτός των άλλων, να περιέχει ένα πεδίο για τον αριθμό πρωτοκόλλου και ένα για την ημερομηνία πρωτοκόλλησης.
Στο συνημμένο παράδειγμα ο πίνακας ονομάζεται [Table1], το πεδίο για τον αριθμό πρωτοκόλλου [fP] και το πεδίο για την ημερομηνία [fDate].
Τα ίδια με τα πεδία ονόματα έχουν και τα πλαίσια κειμένου της φόρμας [frmTable], που χρησιμοποιείται για την καταχώρηση των εγγράφων.
Στην περίπτωση καταχώρησης ενός εγγράφου στη φόρμα (δημιουργίας νέας εγγραφής), όταν εισέλθουμε στο πεδίο [fP] , εκτελείται ο παρακάτω κώδικας:
Κώδικας:
Private Sub fP_GotFocus()
If Me.NewRecord Then
If IsDate(Me.fDate) Then
If Me.fDate < Nz(DMax("[fDate]", "[Table1]"), 0) Then
MsgBox "Η ημερομηνία δεν μπορεί να είναι μικρότερη των ήδη καταχωρηθεισών"
Me.fDate.SetFocus
Exit Sub
End If
Me.fP = Nz(DMax("[fP]", "Table1", "Year([fDate])=" & Year([fDate]) & _
" And Month([fDate])=" & Month([fDate]))) + 1
Else
MsgBox "Πρέπει να συμπληρώσετε την ημερομηνία"
Me.fDate.SetFocus
End If
End If
End Sub
Ο κώδικας, αν διαπιστωθεί ότι συμπληρώθηκε έγκυρη ημερομηνία, συμπληρώνει το πεδίο [fP] με τον κατάλληλο αριθμό πρωτοκόλλου.
Νίκο ελπίζω να μπορέσεις να προσαρμόσεις το παράδειγμα στα δεδομένα σου.
Σημείωση:
1) Ο τύπος του Νάσου είναι σωστός, αλλά δεν καλύπτει την περίπτωση που οι καταχωρήσεις αφορούν πολλά (όχι ένα) χρόνια.
2) Νίκο (vala) στο σύνδεσμο:
http://www.ms-office.gr/forum/access...arithmisi.html έκανες το ίδιο ερώτημα και πήρες μια λύση από το Νίκο (Meteora).
Το σωστό θα ήταν να συνεχίσεις το θέμα που άνοιξες (να δοκιμάσεις τη λύση και να ενημερώσεις αν σε καλύπτει) και όχι να το εγκαταλείψεις διατυπώνοντας την ίδια ερώτηση και σε κάποιο παλιότερο θέμα.
Φιλικά/Γιώργος