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

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 29-12-09, 00:28
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 29-12-2009
Μηνύματα: 6
Προεπιλογή Συνεχόμενο Auto number

Γεια σας και χρονια πολλα.

Ειμαι καινουργιος στην access(και στο forum ) και θα ηθελα μαθω πως μπορω να εχω ενα primary key το οποιο χωρις να ειναι ayto number να αυξανεται κατα 1 καθε φορα που εισαγω data. Το προβλημα προεκιψε οταν κανοντας delete ενα field το aytonumber primary key που ειχα συνεχισε να αυξανεται χανοντας ετσι την σειρα.
Απάντηση με παράθεση
  #2  
Παλιά 29-12-09, 08:35
Όνομα: Ηλιάδης Κωνσταντίνος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 13-12-2008
Περιοχή: Chicago
Μηνύματα: 119
Προεπιλογή

Καλημέρα και χρόνια πολλά.

Ο κώδικας όπως μεταφέρθηκε από το site MsAccess που διατηρούμε (Δικός μας AutoNumber)

Κώδικας για Εισαγωγή στο Module

Public Function CustAutoNum(FormFieldID, TableName As String, Optional StartNum, Optional StepNum As Long) As Integer

' © Ηλιάδης Κωνσταντίνος : MsAccess VBA CODE, Mdb Applications, Eclass
' Κώδικας Ελεύθερος προς Ιδιωτική χρήση.
' FormFieldID : Το Όνομα του πεδίου της φόρμας στο οποίο θέλουμε να εφαρμόσουμε
' την αύξουσα αρίθμηση
' TableName : Το όνομα του πίνακα που αντιστοιχεί στην ιδιότητα RecordSource της ' φόρμας.
' StartNum : Αριθμός που δηλώνει την έναρξη αρίθμησης
' StepNum : Βήμα, κατά πόσο θα αυξάνει ο αριθμός

If IsMissing(StartNum) Then
CustAutoNum = Nz(DMax(FormFieldID, TableName), 0) + Nz(StepNum, 1)
Else
CustAutoNum = Nz(DMax(FormFieldID, TableName), StartNum - Nz(StepNum, 1)) + Nz(StepNum, 1)
End If
End Function

Καλούμε τον κώδικα στο BeforeInsert της Φόρμας με ένα παράδειγμα στο οποίο το όνομα πεδίου της φόρμας είναι το ID και ο πίνακας ο Customers. Ξεκινά η αρίθμηση από το 10 και αυξάνει κατά 1.

Private Sub Form_BeforeInsert(Cancel As Integer)
Me.ID = CustAutoNum("ID", "Customers", 10, 1)
End Sub
Απάντηση με παράθεση
  #3  
Παλιά 29-12-09, 12:03
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 29-12-2009
Μηνύματα: 6
Προεπιλογή

Ευχαριστω για την απαντηση. Βασικα αυτο που θελω να κανω ειναι να εχω ενα field στην φορμα η οποια μου βγαζει τιμολογια το ποιο θα μου δινει το αριθμο των records οπου θα ειναι και ο αριθμος των τιμολιων μου. Δηλαδι να ξεκιναει π.χ απο το 1000 και να προσθετει +1 καθε φορα που παταω add new record. Φυσικα οταν σβησω ενα record (τιμολογιο) να επαναφερει τον αριθμο που εσβησα και οχι τον επομενο για μην χανετε και η αριθμιμενη σειρα των τιμολογιων. Ευχαριστω


Γιωργος
Απάντηση με παράθεση
  #4  
Παλιά 29-12-09, 12:19
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 29-12-2009
Μηνύματα: 6
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από koxcygr Εμφάνιση μηνυμάτων
Ευχαριστω για την απαντηση. Βασικα αυτο που θελω να κανω ειναι να εχω ενα field στην φορμα η οποια μου βγαζει τιμολογια το ποιο θα μου δινει το αριθμο των records οπου θα ειναι και ο αριθμος των τιμολιων μου. Δηλαδι να ξεκιναει π.χ απο το 1000 και να προσθετει +1 καθε φορα που παταω add new record. Φυσικα οταν σβησω ενα record (τιμολογιο) να επαναφερει τον αριθμο που εσβησα και οχι τον επομενο για μην χανετε και η αριθμιμενη σειρα των τιμολογιων. Ευχαριστω


Γιωργος
Υ.Γ Βασικα θελω να περνω το record της φορμας και να το βαζω σαν invoice num. Γινεται?? Και πως?
Απάντηση με παράθεση
  #5  
Παλιά 29-12-09, 13:55
Όνομα: Ηλιάδης Κωνσταντίνος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 13-12-2008
Περιοχή: Chicago
Μηνύματα: 119
Προεπιλογή

Καλησπέρα,

Στο Πεδίο InvoiceNum θα βάλεις το εξής :

=[CurrentRecord] και έτσι θα δείχνει ως Αριθμό τιμολογίου πάντα την τρέχουσα εγγραφή.

Ωστόσο το InvoiceNum δεν θα είναι σωστό αν η φόρμα υποστεί ταξινόμηση ή και φιλτράρισμα επομένως θα πρότεινα την λύση που αναφέρουμε πιο πάνω.
Απάντηση με παράθεση
  #6  
Παλιά 29-12-09, 15:44
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Αγαπητέ φίλε Κοχ…(συγγνώμη, δεν κατάλαβα το όνομα σου), χρόνια πολλά καλωσόρισες στο φόρουμ!
Γράφεις:
Παράθεση:
Βασικά θέλω να περνώ το record της φόρμας και να το βάζω σαν invoice num. Γίνεται?? Και πως?
Προγραμματιστικά Ναι, γίνεται.

Αλλά στην πράξη, δεν νομίζω να σ εξυπηρετεί το γεγονός ότι τα τιμολόγια σου με την πρώτη αλλαγή στη διάταξη των Records (ταξινόμηση, διαγραφή κτλ.) θα αποκτούν διαφορετικό νούμερο.. με ότι συνεπάγεται απ αυτό.

Αυτός είναι o λόγος που ο αυτόματος αριθμητής δεν επιτρέπει την ίδια τιμή 2 φορές.

Μπορείς να χρησιμοποιήσεις ένα υπολογισμένο πεδίο στη φόρμα σου με τον τύπο:
=ID+1000 για να ξεκινάνε τα τιμολόγια σου από το 1000.

Μ αυτό τον τρόπο θα μπορείς να διαχειρίζεσαι τα τιμολόγια με βάση το ID τους (που παραμένει άθικτο) ειδικότερα αν χρησιμοποιείς πίνακες με σχέσεις (Related Tables).

Αν πάλι δεν σ ενοχλεί το γεγονός αυτό, πρόσθεσε ένα πεδίο στη φόρμα σου που θα απεικονίζει το νούμερο της τρέχουσας εγγραφής και στα Properties, στο «Control Source“, όπως είπε και ο Κωνσταντίνος γράψε:

=[currentrecord]
ή
=[currentrecord]+1000 για να σου δείχνει τη σειρά της τρέχουσας εγγραφής + 1000

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών

Τελευταία επεξεργασία από το χρήστη Tasos : 29-12-09 στις 15:49.
Απάντηση με παράθεση
  #7  
Παλιά 29-12-09, 15:48
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 29-12-2009
Μηνύματα: 6
Προεπιλογή

Παράθεση:
Αρχική Δημοσίευση από kon73 Εμφάνιση μηνυμάτων
Καλημέρα και χρόνια πολλά.

' TableName : Το όνομα του πίνακα που αντιστοιχεί στην ιδιότητα RecordSource της ' φόρμας.

End Sub
Εχω κανει query για την φορμα ειναι ασχετο ή πρεπει να βαλω το ονομα του query στην θεση του ονοματος του table???
Απάντηση με παράθεση
  #8  
Παλιά 29-12-09, 16:35
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2003
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 29-12-2009
Μηνύματα: 6
Προεπιλογή

Ευχαριστω πολυ για τις απαντησεις σας. Ελυσα το προβλημα με τον κωδικο ποθ μου δωσατε. Μηπος ομως ξερει κανεις να μου πει τι ειναι το Nz και το dmax για να μαθαινω κιολας????
Ευχαριστω


Γιωργος
Απάντηση με παράθεση
  #9  
Παλιά 30-12-09, 00:24
Όνομα: Ηλιάδης Κωνσταντίνος
Έκδοση λογισμικού Office: Ms-Office 2010, Ms-Office 2013
Γλώσσα λογισμικού Office: Αγγλική
 
Εγγραφή: 13-12-2008
Περιοχή: Chicago
Μηνύματα: 119
Προεπιλογή

Καλησπέρα,

Το nz είναι μια συνάρτηση που επιστρέφει ορισμένη τιμή όταν το αποτέλεσμα είναι null δηλαδή πιο απλά όταν μία μεταβλητή επιστρέψει null να το αλλάζει με μία άλλη τιμή.

Το Dmax είναι συνάρτηση που επιστρέφει την μεγαλύτερη τιμή από ένα ορισμένο πεδίο σε έναν πίνακα και δύναται να δοθούν και κριτήρια δηλαδή από έναν πίνακα πχ TblPelates να εμφανίζεται το σύνολο των πωλήσεων (Πεδίο Sales) με κριτήριο το πεδίο (IDRegion) την τιμή 1

Οπότε δίνεις το εξής : Dmax("Sales","TblPelates","IDRegion="&1)

Επίσης στο Vb Editor μπαίνεις με ALT+F11 και γράφοντας Dmax και πάνω σ'αυτό πατάς F1 έχεις την βοήθεια για την συνάρτηση.

Επίσης ένα ακόμα Link για βοήθεια είναι το http://office.microsoft.com/el-gr/ac...813841032.aspx
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
Auto Size TextBox γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 0 12-01-17 14:15
Datasheet auto resize γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 0 22-11-16 17:49
[ Εκθέσεις ] Μεταφορά εγγραφών φόρμας σε έκθεση ως συνεχόμενο κείμενο costas5 Access - Ερωτήσεις / Απαντήσεις 3 23-03-14 22:43
[Συναρτήσεις] Απορίες για auto update τιμών σε shared workbook Φανφάρας Excel - Ερωτήσεις / Απαντήσεις 5 22-03-14 14:18
Αναγνώριση Serial Number του PC μου γιώργοςΚ Access - Ερωτήσεις / Απαντήσεις 5 25-11-13 12:31


Η ώρα είναι 14:28.