Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Φόρμες ] Αυτόματη Αρίθμηση σε τιμολόγηση (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/3501-aytomati-arithmisi-se-timologisi.html)

AntonisSar 04-01-15 12:35

Αυτόματη Αρίθμηση σε τιμολόγηση
 
Καλησπέρα… και Καλή χρονιά!!!

Για να έχω αυτόματη αρίθμηση τιμολογίου χρησιμοποιώ τον κώδικα(κάπου εδώ τον βρήκα):
Private Sub Form_BeforeInsert(Cancel As Integer)
If Nz(Me.Controls("Νο"), 0) = 0 Then Me.Controls("Νο") = Nz(DMax("[Νο]", "ΤΙΜΟΛΟΓΗΣΗ"), 0) + 1
End Sub

Όμως ο παραπάνω κώδικας παίρνει το μεγαλύτερο νούμερο της στήλης και προσθέτει ένα… Εαν θέλω να παίρνει αυτόματη αρίθμηση για το τιμολόγιο, άλλη για το δελτίο Αποστολής, άλλη για το Δ. Αποστ. Τιμ., κ.ο.κ… Τι πρέπει να προσθέσω στον κώδικα για να διαβάζει την στήλη του παραστατικού και να παίρνει μετά την μεγαλύτερη τιμή από την στήλη No?

kapetang 05-01-15 09:01

Καλημέρα


Αντώνη, αν υποθέσουμε ότι ο τύπος του παραστατικού αποθηκεύεται στο πεδίο ΤΥΠΟΣ, άλλαξε τον κώδικα με τον ακόλουθο:

1) Αν το πεδίο ΤΥΠΟΣ είναι αριθμητικό

If Nz(Me.Controls("Νο"), 0) = 0 Then Me.Controls("Νο") = Nz(DMax("[Νο]", "ΤΙΜΟΛΟΓΗΣΗ","ΤΥΠΟΣ=" & me.ΤΥΠΟΣ), 0) + 1

2) Αν το πεδίο ΤΥΠΟΣ είναι κειμένου

If Nz(Me.Controls("Νο"), 0) = 0 Then Me.Controls("Νο") = Nz(DMax("[Νο]", "ΤΙΜΟΛΟΓΗΣΗ","ΤΥΠΟΣ='" & me.ΤΥΠΟΣ & "'"), 0) + 1

Φιλικά/Γιώργος

AntonisSar 05-01-15 10:16

Γιώργο ευχαριστώ πολύ για την απάντηση... ΦΦυσικά ο τύπος παραστατικού ειναι κείμενο και με αυτόν τον κώδικα δίνει συνέχεια αρίθμηση 1...

kapetang 05-01-15 11:02

Είναι φανερό ότι δεν προσάρμοσες σωστά τον κώδικα στα δεδομένα σου.

Το λάθος δεν είναι δυνατόν να εντοπιστεί χωρίς να ανεβάσεις δείγμα της ΒΔ.

AntonisSar 05-01-15 11:17

Γιώργο είναι συνέχεια της προηγούμενης που είχα ανεβάσει... Μπορείς να δεις την παλιά... να μην την ανεβάζω συνέχεια!!!

AntonisSar 05-01-15 11:20

Αυτό έγραψα...
If Nz(Me.Controls("Νο"), 0) = 0 Then Me.Controls("Νο") = Nz(DMax("[Νο]", "ΤΙΜΟΛΟΓΗΣΗ", "ΠΑΡΑΣΤΑΤΙΚΟ='" & Me.ΠΑΡΑΣΤΑΤΙΚΟ & "'"), 0) + 1

kapetang 05-01-15 14:44

Το πεδίο ΠΑΡΑΣΤΑΤΙΚΟ, μολονότι εμφανίζει τιμές κειμένου, ενδέχεται να είναι αριθμητικό.

Δοκίμασε και τον κώδικα:

If Nz(Me.Controls("Νο"), 0) = 0 Then Me.Controls("Νο") = Nz(DMax("[Νο]", "ΤΙΜΟΛΟΓΗΣΗ", "ΠΑΡΑΣΤΑΤΙΚΟ=" & Me.ΠΑΡΑΣΤΑΤΙΚΟ ), 0) + 1

AntonisSar 05-01-15 21:21

Μου βγάζει λάθος Γιώργο...
η Βάση ειναι εδω... (εαν θες να κάνεις δοκιμές)
http://www.ms-office.gr/forum/access...se-pinaka.html

Υ.Γ. Ευχαριστώ για την βοήθεια!!!

kapetang 05-01-15 22:05

Καλησπέρα

Αντώνη, δοκίμασε τον παρακάτω κώδικα:

Κώδικας:

Private Sub ΠΑΡΑΣΤΑΤΙΚΟ_AfterUpdate()
    If Nz(Me.ΠΑΡΑΣΤΑΤΙΚΟ, "") <> "" Then
        Me.Νο = Nz(DMax("Νο", "ΤΙΜΟΛΟΓΗΣΗ", "ΠΑΡΑΣΤΑΤΙΚΟ='" & Me.ΠΑΡΑΣΤΑΤΙΚΟ & "'"), 0) + 1
    End If
End Sub

Φιλικά/Γιώργος

AntonisSar 05-01-15 22:20

Εισαι αστέρι!!!
Ευχαριστώ πολύ δουλεύει τέλεια!!!

zachapan 23-02-15 18:54

καλησπέρα σας και καλή σαρακοστή
Μήπως μπορείτε να ανεβάσετε την ΒΔ σε access 2003 επειδή αντιμετωπίζω ακριβώς το ίδιο πρόβλημα.

Σας ευχαριστώ εκ των προτέρων

Αννατζικ 28-02-15 14:13

Γεια σας
{η Βάση ειναι εδω... (εαν θες να κάνεις δοκιμές)
Μεταφορά ποσών απο φόρμα σε πίνακα}
δεν ανοιγει η βαση
Μήπως μπορείτε να ανεβάσετε την ΒΔ σε access 2003
ευχαριστώ

kapetang 28-02-15 18:49

Καλησπέρα

Η βάση δεδομένων περιέχει πίνακες με υπολογιζόμενα πεδία.

Επειδή το χαρακτηριστικό αυτό δεν υποστηρίζεται από τις εκδόσεις Access 2007 και 2003 (προστέθηκε στην Access 2010), δεν είναι δυνατή η ζητούμενη μετατροπή της βάσης.

Φιλικά/Γιώργος


Η ώρα είναι 01:10.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2