Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Σύνθετη αύξουσα αρίθμηση
Χαιρετώ το φόρουμ. Θέλω σε μία φόρμα να συμπληρώνεται αυτόματα ένα πεδίο με τον επόμενο αύξοντα. Το πεδίο όμως έχει την μορφή: Χ.ΧΧ.ΧΧ.ΨΨΨΨΨΨ. Τα Χ τα πληκτρολογώ ενώ τα Ψ είναι ο αύξων αριθμός. Η αρίθμηση θα πρέπει να ξεκινά για κάθε νέο συνδυασμό των Χ. Π.Χ.4.00.12.οοοοο1,2,3 κλπ και 4.01.12.000001,2,3 και 2.00.12.000001,2,3 κ.ο.κ. Υπάρχει κάποια λύση; |
#2
| |||
| |||
Καλημέρα Αποστόλη, καλωσόρισες στην παρέα μας. Στη φόρμα και στο συμβάν «Change» του πεδίου που καταχωρείς τον κωδικό πρόσθεσε τον παρακάτω κώδικα: Κώδικας: Private Sub id_Change() Dim rs As DAO.Recordset, strSQL As String If Len(Me.id.Text) = 7 Then strSQL = "SELECT Max(Right([ID],6)) AS IX FROM Table1 WHERE Left([ID],7)='" & Me.id.Text & "'" Set rs = CurrentDb.OpenRecordset(strSQL) If IsNull(rs!IX) Then Me.id = Me.id.Text & "." & "000001" Else Me.id = Me.id.Text & "." & Format(rs!IX + 1, "000000") End If rs.Close Set rs = Nothing End If End Sub Φιλικά/Γιώργος |
#3
| |||
| |||
Καλημέρα σ' όλους Αποστόλη, κοίτα μήπως σου κάνει και αυτό. Τελευταία επεξεργασία από το χρήστη ασχετος : 26-09-12 στις 13:12. |
#4
| |||
| |||
Διόρθωση στην Β.Δ. για να εμφανίζνται οι τελείες στον κωδικό και να συμπερεφέται ανάλογα σε Null τιμή.
|
#5
| |||
| |||
Διόρθωση στην Dcount
|
#6
| |||
| |||
Μόλις μπήκα στο φόρουμ. Ευχαριστώ προκαταβολικά παιδιά. Είστε φοβεροί. Θα δω τις λύσεις σε λίγο. |
#7
| |||
| |||
Φίλε Κώστα ο κώδικας σου δουλεύει καλύτερα αλλά έχει ένα πρόβλημα. Μετράει τις εγγραφές με το ίδιο πρόθεμα και δίνει τον επόμενο κωδικό ως πλήθος +1. Το σωστό είναι να βρίσκει τον μεγαλύτερο και να δίνει τον επόμενο. Γιατί μπορεί να υπάρχουν ενδιάμεσες εγγραφές που έχουν διαγραφεί. Ο κώδικας του Γιώργου δουλεύει έτσι αλλά όταν τον βάζω στην εφαρμογή μου βγάζει σφάλμα "compile error User-defined type not defined ". |
#8
| |||
| |||
Καλημέρα σ' όλους Αποστόλη έχεις δίκιο Το έφτιαξα, όπως και στην περίπτωση που ήταν Null Ελπίζω να σου κάνει |
#9
| ||||
| ||||
Καλησπέρα! Θα πρότεινα μια διαφορετική προσέγγιση. Στο πεδίο της φόρμας [ID] έχουμε:
Στο συμβάν "Με την αλλαγή" του πεδίου [ID] χρησιμοποιείται ο παρακάτω κώδικας: Κώδικας: Private Sub ID_Change() Dim strText As String, i As Long strText = Replace(Replace(Me.ID.Text, "_", ""), ".", "") If Len(strText) = 5 Then i = DCount("[ID]", "tbl_TEST", "left([ID],5)='" & strText & "'") If i Then Me.ID = strText & Format(i + 1, "000000") Else Me.ID = strText & "000001" End If End If End Sub Πιο απλοποιημένα και μετά από συζήτηση με τον Γιώργο (kapetang): Κώδικας: Private Sub ID_Change() Dim i As Long strText = Replace(Replace(Me.ID.Text, "_", ""), ".", "") If Len(strText) = 5 Then i = Nz(DMax("Right([ID],5)", "tbl_TEST", "left([ID],5)='" & strText & "'")) Me.ID = strText & Format(i + 1, "000000") End If End Sub Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 28-09-12 στις 08:47. |
#10
| |||
| |||
Καλησπέρα στην παρέα Αποστόλη, όπως θα δεις στη ΒΔ που επισυνάπτω ο κώδικας, που σου πρότεινα, λειτουργεί. Συνεπώς δεν τον μετέφερες σωστά στη δική σου ΒΔ. Για τη σωστή μεταφορά πρέπει: 1) Το Table1 να το αντικαταστήσεις με το όνομα του δικού σου πίνακα και να το βάλεις ανάμεσα σε δύο αγκύλες ([ ]). 2) Όπου υπάρχει το [ID] να αντικαταστήσεις το ID με το όνομα του πεδίου που καταχωρείς τον κωδικό. 3) Στην έκφραση Me.id.Text, το id θα το αντικαταστήσεις με το όνομα του πλαισίου κειμένου της φόρμας στο οποίο καταχωρείς τον κωδικό. Αν έχει κενά θα το βάλεις σε αγκύλες. Για σιγουριά η αντικατάσταση να γίνει με αντιγραφή και επικόλληση. Κατά τη γνώμη μου οι λύσεις που χρησιμοποιούν την Dcount έχουν το εξής μειονέκτημα: Αν έχουμε 4 εγγραφές με ίδιο πρώτο τμήμα κωδικού, της 4ης εγγραφής το δεύτερο τμήμα θα είναι 000004. Αν διαγράψουμε τη δεύτερη εγγραφή και περάσουμε μία νέα θα πάρουμε μια εγγραφή με δεύτερο τμήμα 000004, που ήδη υπάρχει. Φιλικά/Γιώργος |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Φόρμες ] Αυξουσα αριθμηση | vala | Access - Ερωτήσεις / Απαντήσεις | 1 | 05-01-17 18:59 |
Αύξουσα αρίθμηση σε πεδίο ερωτήματος | ΚΩΣΤΑΣ2 | Access - Ερωτήσεις / Απαντήσεις | 3 | 13-09-15 11:11 |
[ Φόρμες ] Σύνθετη αναζήτηση εγγραφών | marpapa | Access - Ερωτήσεις / Απαντήσεις | 6 | 19-07-12 23:50 |
[ Φόρμες ] Αύξουσα αρίθμηση σε πεδίο φόρμας | mgeorge | Access - Ερωτήσεις / Απαντήσεις | 18 | 01-06-11 23:33 |
Η ώρα είναι 19:31.