| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
|
#1
| |||
| |||
|
Καλησπέρα σε όλους, πώς μπορώ σε μια δευτερεύουσα φόρμα (προβολή: συνεχείς φόρμες) να βάλω ένα πεδίο τύπου αυτόματης αρίθμησης το οποίο να αλλάζει ανάλογα με το πλήθος των εγγραφών? Τί εννοώ:Στη φόρμα καταχωρώ προιόντα σε παραγγελία, να είναι κάπως ετσι: 1->ΣΑΜΠΟΥΑΝ 2->ΣΑΠΟΥΝΙ 3->ΠΕΤΣΕΤΑ. Στην περίπτωση που αφαιρέσω από την λίστα πχ το ΣΑΠΟΥΝΙ,η ΠΕΤΣΕΤΑ να γίνει 2.Επίσης αυτός ο αύξων αριθμός για το κάθε προιόν, πρέπει να μου αποθηκεύεται στον πίνακα. Υπάρχει καμιά ιδέα? Φιλικά, Δέσποινα. |
|
#2
| ||||
| ||||
|
Καλησπέρα... Δέσποινα, κάνε την "διαδρομή" : ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Αυτόματη αρίθμηση σε δευτερεύουσα φόρμα ...και δες λίγο πιο χαμηλά στα "ΠΑΡΟΜΟΙΑ ΘΕΜΑΤΑ" Με εκτίμηση / Νίκος Δ. |
|
#3
| |||
| |||
|
Καλησπέρα σε όλους, Νίκο σε αυτά τα posts δεν μπορώ να βρω κάτι σχετικό με αυτό που θέλω να κάνω. Θέλω να κάνω αυτό που έγραψα παραπάνω, μέσα στη δευτερεύουσα το πεδίο της αυτόματης αρίθμησης θέλω να παίρνει εκείνη την στιγμή την τιμή του και να προσαρμόζεται ανάλογα σε τυχόν προσθαφαιρέσεις εγγραφών στη δευτερεύουσα (όπως έγραψα και παραπάνω). Επίσης, στην επόμενη νέα εγγραφή που θα δημιουργώ στην εξωτερική φόρμα, το πεδίο αυτό της αυτόματης αρίθμησης (στην δευτερεύουσα) θέλω να ξαναρχίζει την αρίθμηση από το 1. Όπως σε ένα τιμολόγιο: Κύρια φόρμα (στοιχεία πελάτη, παράδοσης κλπ) και δευτερεύουσα (προϊόντα με λεπτομέρειες). Φιλικά, Δέσποινα |
|
#4
| ||||
| ||||
|
Καλησπέρα Δέσποινα! Θέλεις οπωσδήποτε η αύξουσα αρίθμηση να εμφανίζεται στη φόρμα ή θα βολευόσουν και μόνο με την έκθεση (εκτύπωση) του τιμολογίου; Σε ρωτάω γιατί στις εκθέσεις, αυτό που ζητάς είναι απλά θέμα ρύθμισης μιας ιδιότητας πεδίου κειμένου. Όχι όμως και στις φόρμες ή τα φύλλα δεδομένων. ![]() Φιλικά, Γιάννης
__________________ Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...! ![]() ----------------------------------------------- Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης. Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά! |
|
#5
| |||
| |||
|
Καλησπέρα, ναι θα ήθελα να γίνεται στην φόρμα, για τις εκθέσεις το γνωρίζω οτι γίνεται πολύ εύκολα. Αλλά στις φόρμες? Φιλικά, Δέσποινα |
|
#6
| ||||
| ||||
|
Θα χρειαστεις την εξης στηλη στο ερωτημα της φορμας σου: RecNo: Fn_RecNoA("TO EROTIMA SOU";"ID";[ID]) Και τον εξης κωδικα για το Fn_RecNoA... Κώδικας: Function Fn_RecNoA(QueryName As String, _
PrimKeyName As String, _
PrimKeyVal As Variant) As Long
' Returns the Record No for each Record in a Query
' This is for use in a the Final Query
On Error Resume Next ' - (A)
Dim rst As ADODB.Recordset, RCT As Long, CNT As Long
Dim QNM As String, PKN As String, PKV As Variant
QNM = QueryName
PKN = PrimKeyName
PKV = PrimKeyVal
Set rst = New ADODB.Recordset
Set rst.ActiveConnection = CurrentProject.Connection
rst.CursorType = adOpenKeyset
rst.CursorLocation = adUseClient
rst.LockType = adLockOptimistic
rst.Source = QNM
rst.Open Options:=adCmdTable
CNT = 0
If rst.EOF And rst.BOF Then
GoTo ExitPoint ' If Recordset is empty
End If ' rst
' Populate The Recordset.
With rst
.MoveLast
.MoveFirst
End With
RCT = rst.RecordCount
CNT = 1
rst.MoveFirst
Do While CNT <= RCT
If rst.EOF Or rst.Fields(PKN) = PKV Then
Exit Do
End If ' FDV
rst.MoveNext
CNT = CNT + 1
Loop
ExitPoint:
rst.Close
Set rst = Nothing
Fn_RecNoA = CNT
On Error GoTo 0
End Function
__________________ http://www.facebook.com/home.php?ref...00000309992857 |
|
#7
| ||||
| ||||
|
Καλημέρα κι από μένα! Έστω ότι η υποφόρμα μεταξύ άλλων περιέχει το πεδίο CustNr που την συνδέει μα την κύρια φόρμα (Parent). Το πεδίο αυτό θα πρέπει να υπάρχει στην κύρια φόρμα. Αν δεν θέλουμε να εμφανίζεται επιλέγουμε την ιδιότητα του πεδίου "Ορατό" σε "Όχι". Κατόπιν, στη λειτουργική μονάδα της υποφόρμας περνάμε το παρακάτω (παραδειγματικός κώδικας): Κώδικας: Private Sub Form_AfterDelConfirm(Status As Integer)
If Not Status Then SetAutoNr
End Sub
Private Sub Form_AfterUpdate()
SetAutoNr
End Sub
Private Sub SetAutoNr()
'Table1 = ο πίνακας του οποίου τα δεδομένα εμφανίζονται στην υποφόρμα.
'Autonum = Το πεδίο που θα παιρνει τους αύξοντες αριθμούς σε κάθε δημιουργία ή διαγραφή μιας εγγραφής.
'CustNr = το ΑΡΙΘΜΙΤΙΚΟ πεδίο με το οπίο συνδέεται η υποφόρμα με τη φόρμα (....Me.Parent.CustNr...).
Dim i: i = 1
With CurrentDb.OpenRecordset("SELECT [Table1].[Autonum] " _
& "FROM [Table1] " _
& "Where [CustNr] = " & Me.Parent.CustNr)
If .RecordCount Then
.MoveFirst
Do Until .EOF
.Edit
.Fields("AutoNum") = i
i = i + 1
.Update
.MoveNext
Loop
End If
.Close
End With
End Sub
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#8
| |||
| |||
|
Καλησπέρα στην παρέα Στη ΒΔ που επισυνάπτεται παρουσιάζεται μια άλλη προσέγγιση στην αρίθμηση των εγγραφών της δευτερεύουσας φόρμας. Η ΒΔ αποτελεί μια απλή περίπτωση εφαρμογής παραγγελιών και περιλαμβάνει τους πίνακες:
Η διαχείριση των πελατών, των παραγελιών και των λεπτομερειών γίνεται με τη βοήθεια της βασικής φόρμας frmCustomersOrders (Πελάτες, Παραγγελίες, Λεπτομέρειες ). Οι εγγραφές στην υποφόρμα και το ερώτημα qryOrderDetailsAutoNum ταξινομούνται κατά OrderID και ProductID και έτσι επιτυγχάνεται συντονισμός στην αρίθμηση, χωρίς να αποθηκεύεται σε πίνακα. Για να φανεί ο τρόπος λειτουργίας θα πρέπει να γίνουν τροποποιήσεις, προσθήκες και διαγραφές στην υποφόρμα των λεπτομερειών που περιέχεται στη βασική (frmCustomersOrders). Φιλικά/Γιώργος Τελευταία επεξεργασία από το χρήστη kapetang : 22-10-10 στις 10:27. Αιτία: μικροαλλαγή στη ΒΔ |
|
#9
| |||
| |||
|
Σας ευχαριστώ για τις απαντήσεις σας, καθώς είμαι αρχάρια δεν γνωρίζω πολλά από κώδικα, αλλά το παράδειγμα του Γιώργου είναι αυτό που θέλω με την μόνη διαφορά ότι θα ήθελα η τιμή του autonumber για κάθε προϊόν να αποθηκεύεται σε ένα πεδίο ID του πίνακα που βασίζεται η υποφόρμα. Δέσποινα |
|
#10
| |||
| |||
|
Καλησπέρα στην παρέα Δέσποινα ανέβασα τη βάση δεδομένων κυρίως για να φανεί η μεγάλη σημασία του σωστού σχεδιασμού. Δεν μπορεί να μιλάμε για παραγγελίες χωρίς να έχουμε τουλάχιστον τέσσερες πίνακες: Πελάτες, Προϊόντα, Παραγγελίες, Λεπτομέρειες Παραγγελιών. Όταν η βάση είναι σωστά σχεδιασμένη εύκολα, από τα βασικά (αποθηκευμένα) στοιχεία, μπορούμε να υπολογίσουμε (πχ με ερωτήματα) άλλα και να τα εμφανίσουμε σε φόρμες, εκθέσεις, κλπ. Στη ΒΔ, που επισυνάπτεται στο προηγούμενο μήνυμα, αυτό γίνεται στο ερώτημα «qryOrderDetailsAutoNum» το οποίο χρησιμοποιείται ως προέλευση δεδομένων στη φόρμα των λεπτομερειών. Σημειώνω ότι ένα ερώτημα μπορεί να χρησιμοποιηθεί, ως προέλευση δεδομένων, όπως και ένας πίνακας. Με βάση τα παραπάνω θα πρέπει να εκτιμήσεις, αν πραγματικά σου χρειάζεται η αποθήκευση του AutoNumber σε πίνακα και, αν η απάντηση είναι ναι, να χρησιμοποιήσεις μία από τις προτάσεις που το αποθηκεύουν. Κατά τη γνώμη μου του Τάσου που εφαρμόζεται ευκολότερα. Φιλικά/Γιώργος Τελευταία επεξεργασία από το χρήστη kapetang : 26-10-10 στις 15:59. Αιτία: ορθογραφική διόρθωση |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [ Φόρμες ] Δευτερεύουσα Φορμα | gaz_manos | Access - Ερωτήσεις / Απαντήσεις | 1 | 18-12-15 09:58 |
| accSearchForm.mdb-σε δευτερευουσα φόρμα | pansyr | Access - Ερωτήσεις / Απαντήσεις | 0 | 24-08-15 17:09 |
| [ Φόρμες ] Κουμπί εύρεσης σε φόρμα που περιέχει δευτερεύουσα φόρμα | sakis297 | Access - Ερωτήσεις / Απαντήσεις | 2 | 21-11-14 19:23 |
| Δευτερεύουσα φόρμα | Χρήστος | Access - Ερωτήσεις / Απαντήσεις | 3 | 27-11-13 11:11 |
| Δευτερεύουσα φόρμα σε συνεχή | stavros2244 | Access - Ερωτήσεις / Απαντήσεις | 2 | 09-04-10 07:49 |
Η ώρα είναι 04:13.




Αλλαγή σε γραμμικό τρόπο

