Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Αυτόματη αρίθμηση σε δευτερεύουσα φόρμα

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 18-10-10, 13:50
iondep
Guest
 
Μηνύματα: n/a
Προεπιλογή Αυτόματη αρίθμηση σε δευτερεύουσα φόρμα

Καλησπέρα σε όλους,

πώς μπορώ σε μια δευτερεύουσα φόρμα (προβολή: συνεχείς φόρμες) να βάλω ένα πεδίο τύπου αυτόματης αρίθμησης το οποίο να αλλάζει ανάλογα με το πλήθος των εγγραφών?
Τί εννοώ:Στη φόρμα καταχωρώ προιόντα σε παραγγελία, να είναι κάπως ετσι:
1->ΣΑΜΠΟΥΑΝ
2->ΣΑΠΟΥΝΙ
3->ΠΕΤΣΕΤΑ. Στην περίπτωση που αφαιρέσω από την λίστα πχ το ΣΑΠΟΥΝΙ,η ΠΕΤΣΕΤΑ να γίνει 2.Επίσης αυτός ο αύξων αριθμός για το κάθε προιόν, πρέπει να μου αποθηκεύεται στον πίνακα.
Υπάρχει καμιά ιδέα?
Φιλικά,
Δέσποινα.
Απάντηση με παράθεση
  #2  
Παλιά 18-10-10, 17:01
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.033
Προεπιλογή

Καλησπέρα...

Δέσποινα, κάνε την "διαδρομή" :
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Αυτόματη αρίθμηση σε δευτερεύουσα φόρμα

...
και δες λίγο πιο χαμηλά στα "ΠΑΡΟΜΟΙΑ ΘΕΜΑΤΑ"

Με εκτίμηση / Νίκος Δ.
Απάντηση με παράθεση
  #3  
Παλιά 19-10-10, 21:24
iondep
Guest
 
Μηνύματα: n/a
Προεπιλογή

Καλησπέρα σε όλους,

Νίκο σε αυτά τα posts δεν μπορώ να βρω κάτι σχετικό με αυτό που θέλω να κάνω.
Θέλω να κάνω αυτό που έγραψα παραπάνω, μέσα στη δευτερεύουσα το πεδίο της αυτόματης αρίθμησης θέλω να παίρνει εκείνη την στιγμή την τιμή του και να προσαρμόζεται ανάλογα σε τυχόν προσθαφαιρέσεις εγγραφών στη δευτερεύουσα (όπως έγραψα και παραπάνω).
Επίσης, στην επόμενη νέα εγγραφή που θα δημιουργώ στην εξωτερική φόρμα, το
πεδίο αυτό της αυτόματης αρίθμησης (στην δευτερεύουσα) θέλω να ξαναρχίζει την αρίθμηση από το 1.
Όπως σε ένα τιμολόγιο: Κύρια φόρμα (στοιχεία πελάτη, παράδοσης κλπ) και δευτερεύουσα (προϊόντα με λεπτομέρειες).

Φιλικά,
Δέσποινα
Απάντηση με παράθεση
  #4  
Παλιά 20-10-10, 01:10
Το avatar του χρήστη nisgia
Super Moderator
Όνομα: Γιάννης
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 12-10-2009
Περιοχή: Ηγουμενίτσα
Μηνύματα: 161
Προεπιλογή

Καλησπέρα Δέσποινα!

Θέλεις οπωσδήποτε η αύξουσα αρίθμηση να εμφανίζεται στη φόρμα ή θα βολευόσουν και μόνο με την έκθεση (εκτύπωση) του τιμολογίου;
Σε ρωτάω γιατί στις εκθέσεις, αυτό που ζητάς είναι απλά θέμα ρύθμισης μιας ιδιότητας πεδίου κειμένου.
Όχι όμως και στις φόρμες ή τα φύλλα δεδομένων.

Φιλικά,
Γιάννης
__________________
Αν δεν το ρωτούσες, δεν θα το μαθαίναμε ποτέ...!
-----------------------------------------------
Τελικά η γνώση, αντίθετα με ό,τι μέχρι σήμερα πίστευα, είναι η φυλακή της σκέψης.
Όταν η αφετηρία είναι η ελεύθερη σκέψη, δεν χρειάζεται πλέον να φτάσεις πουθενά!
Απάντηση με παράθεση
  #5  
Παλιά 20-10-10, 19:36
iondep
Guest
 
Μηνύματα: n/a
Προεπιλογή

Καλησπέρα,

ναι θα ήθελα να γίνεται στην φόρμα, για τις εκθέσεις το γνωρίζω οτι γίνεται πολύ εύκολα.
Αλλά στις φόρμες?

Φιλικά,
Δέσποινα
Απάντηση με παράθεση
  #6  
Παλιά 20-10-10, 23:27
Το avatar του χρήστη editolis
Super Moderator
Όνομα: Τολης
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2013
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 02-01-2010
Περιοχή: ATHENS-GREECE
Μηνύματα: 180
Arrow

Θα χρειαστεις την εξης στηλη στο ερωτημα της φορμας σου:

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
Απάντηση με παράθεση
  #7  
Παλιά 21-10-10, 10:09
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα κι από μένα!

Έστω ότι η υποφόρμα μεταξύ άλλων περιέχει το πεδίο 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
Με τον τρόπο αυτό, διορθώνουμε το πεδίο Autonum του πίνακα Table1 αλλά μόνο εκείνες τις εγγραφές που αναλογούν στο CustNr.


__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #8  
Παλιά 21-10-10, 18:40
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα στην παρέα

Στη ΒΔ που επισυνάπτεται παρουσιάζεται μια άλλη προσέγγιση στην αρίθμηση των εγγραφών της δευτερεύουσας φόρμας.
Η ΒΔ αποτελεί μια απλή περίπτωση εφαρμογής παραγγελιών και περιλαμβάνει τους πίνακες:
  • Των πελατών (tblCustomers)
  • Των προϊόντων (tblProducts)
  • Των παραγγελιών (tblOrders)
  • Των λεπτομερών των παραγγελιών (tblOrdersDetails), στον οποίο το πρωτεύον κλειδί είναι σύνθετο από τα πεδία OrderID και ProductID.
Για την αρίθμηση των εγγραφών της υποφόρμας λεπτομερειών των παραγγελιών χρησιμοποιούνται τα ερωτήματα qryOrderDetails και qryOrderDetailsAutoNum και ο κώδικας που υπάρχει στην υποφόρμα.
Η διαχείριση των πελατών, των παραγελιών και των λεπτομερειών γίνεται με τη βοήθεια της βασικής φόρμας frmCustomersOrders (Πελάτες, Παραγγελίες, Λεπτομέρειες ).
Οι εγγραφές στην υποφόρμα και το ερώτημα qryOrderDetailsAutoNum ταξινομούνται κατά OrderID και ProductID και έτσι επιτυγχάνεται συντονισμός στην αρίθμηση, χωρίς να αποθηκεύεται σε πίνακα.
Για να φανεί ο τρόπος λειτουργίας θα πρέπει να γίνουν τροποποιήσεις, προσθήκες και διαγραφές στην υποφόρμα των λεπτομερειών που περιέχεται στη βασική (frmCustomersOrders).

Φιλικά/Γιώργος
Συνημμένα Αρχεία
Τύπος Αρχείου: mdb AutonumSubForm.mdb (368,0 KB, 152 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη kapetang : 22-10-10 στις 10:27. Αιτία: μικροαλλαγή στη ΒΔ
Απάντηση με παράθεση
  #9  
Παλιά 25-10-10, 21:18
iondep
Guest
 
Μηνύματα: n/a
Προεπιλογή

Σας ευχαριστώ για τις απαντήσεις σας,

καθώς είμαι αρχάρια δεν γνωρίζω πολλά από κώδικα,
αλλά το παράδειγμα του Γιώργου είναι αυτό που θέλω με την μόνη διαφορά ότι θα ήθελα η τιμή του autonumber για κάθε προϊόν να αποθηκεύεται σε ένα πεδίο ID του πίνακα που βασίζεται η υποφόρμα.

Δέσποινα
Απάντηση με παράθεση
  #10  
Παλιά 26-10-10, 15:57
Όνομα: Γιώργος
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 18-06-2010
Μηνύματα: 3.674
Προεπιλογή

Καλησπέρα στην παρέα

Δέσποινα ανέβασα τη βάση δεδομένων κυρίως για να φανεί η μεγάλη σημασία του σωστού σχεδιασμού.
Δεν μπορεί να μιλάμε για παραγγελίες χωρίς να έχουμε τουλάχιστον τέσσερες πίνακες: Πελάτες, Προϊόντα, Παραγγελίες, Λεπτομέρειες Παραγγελιών.
Όταν η βάση είναι σωστά σχεδιασμένη εύκολα, από τα βασικά (αποθηκευμένα) στοιχεία, μπορούμε να υπολογίσουμε (πχ με ερωτήματα) άλλα και να τα εμφανίσουμε σε φόρμες, εκθέσεις, κλπ.
Στη ΒΔ, που επισυνάπτεται στο προηγούμενο μήνυμα, αυτό γίνεται στο ερώτημα «qryOrderDetailsAutoNum» το οποίο χρησιμοποιείται ως προέλευση δεδομένων στη φόρμα των λεπτομερειών.
Σημειώνω ότι ένα ερώτημα μπορεί να χρησιμοποιηθεί, ως προέλευση δεδομένων, όπως και ένας πίνακας.
Με βάση τα παραπάνω θα πρέπει να εκτιμήσεις, αν πραγματικά σου χρειάζεται η αποθήκευση του AutoNumber σε πίνακα και, αν η απάντηση είναι ναι, να χρησιμοποιήσεις μία από τις προτάσεις που το αποθηκεύουν. Κατά τη γνώμη μου του Τάσου που εφαρμόζεται ευκολότερα.

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

Τελευταία επεξεργασία από το χρήστη kapetang : 26-10-10 στις 15:59. Αιτία: ορθογραφική διόρθωση
Απάντηση με παράθεση
Απάντηση στο θέμα


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

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


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

Θέμα Δημιουργός 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


Η ώρα είναι 11:45.