Forum

Αναζήτηση στο ms-office.gr

Πάμε!
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Έλεγχος - Πρόσθεση Ποσότητας σε λίστα

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

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

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 02-07-12, 17:16
Όνομα: Σαράντος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-04-2012
Μηνύματα: 7
Προεπιλογή Έλεγχος - Πρόσθεση Ποσότητας σε λίστα

Καλησπέρα .
Σε μια εφαρμογή για μικρά σειμεία που φτιάχνω έχω κολίσει κάπου και ζητώ την βοήθειά σας .
Σε μια φορμα της τιμολόγισης που έχει τα στοιχεία του πελάτη υπάρχει μια υποφόρμα που περιέχει τα στοιχεία των προιοντων που σκανάρονται στο ταμείο δλδ πεδία Barcode περιγραφή ποσότητα τιμή φπα σύνολο γραμμής κτλ έχω ορίσει μετά από κάθε σκανάριζμα γραμμωτου να γεμίζουν τα πεδία αυτόματα ακόμα και αυτό τις ποσότητας να πέρνει την τιμή 1 ,και αυτόματα να πηγένει ο κενσορας σε νέα γραμμή . θα ήθελα λοιπόν σκανάροντας πάλι τον ίδιο γραμμοτό (η γραμμοτο που υπάρχει ίδη στην υποφόρμα να προσθέτει στο ανάλογο προιον από την λίστα άλλο ένα τεμάχιο και στην συνέχεια να πηγένει σε μια νέα εγγραφή ..........κάθε βοήθεια ευχαριστήτε εκ των προτέρων .
Απάντηση με παράθεση
  #2  
Παλιά 03-07-12, 18:23
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.159
Προεπιλογή

Καλησπέρα Σαράντο.
Πριν γεμίζουν τα πεδία αυτόματα όπως αναφέρεις, θα πρέπει να προσθέσεις κώδικα που να ελέγχει αν το προιον προς καταχώρηση υπάρχει ήδη στην υποφόρμα.


Αυτό μπορείς να το επιτύχεις με την εντολή Dlookup().
Παράδειγμα:

Κώδικας:
If Dlookup("Πεδίο_Barcode", "Πίνακας_της_Υποφόρμας", "Πεδίο_Barcode = '" & Τρέχον_Barcode & "'") Then
    
       'Εύρεση της συγκεκριμένης εγγραφής και αύξηση του πεδίου ποσότητας κατά 1 μονάδα
       'Πήγαινε σε νέα εγγραφή

Else

       'Αυτόματη Καταχώρηση τιμών στα πεδία
       'Πήγαινε σε νέα εγγραφή

End If
Σε ποιο συμβάν του ActiveX του Scanner ( υποθέτω ότι υπάρχουν συμβάντα ) θα βάλεις τον κώδικα,
δεν μπορώ φυσικά να το ξέρω αφού ούτε τη βάση σου γνωρίζω ούτε και το Activex που σχετίζεται με το Scanner.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word
Απάντηση με παράθεση
  #3  
Παλιά 03-07-12, 21:14
Όνομα: Σαράντος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-04-2012
Μηνύματα: 7
Προεπιλογή

Τάσο κατάρχήν σε ευχαριστώ πάρα πολύ για την απαντησή σου έχω όμως κάποιες επιπλεον απορίες στον κώδικα που μου έγραψες .
Πρώτα απ όλα έχω κωλίσει με την γραμμή που μου έγραψες και δεν μπορώ να την δουλέψω στο μιαλό μου για να γράψω την σωστή εντολή η γραμμή σου είναι αυτή
'Εύρεση της συγκεκριμένης εγγραφής και αύξηση του πεδίου ποσότητας κατά 1 μονάδα

εγώ στον κωδικά που έχω τοποθετήσει στο AfterUpdate του πεδίου Barcode λέω το εξείς :
If DLookup("Barcode", "Invoice Details", "Barcode = '" & Barcode & "'") Then 'Ψάξε άν υπάρχει το barcode καταχωριμένω ξανά

Me.Quantity.Value = Me.Quantity.Value + 1 ' πρόσθεσε στα τεμάχια άλλο ένα
Me.Σύνολο_Γραμμής = Me.Quantity * Me.PricePerUnit ' Υπολόγισε το σύνολο γραμμής
DoCmd.RunCommand acCmdSave
DoCmd.GoToRecord , , acNewRec
Me.Barcode.SetFocus
Else
Σε ευχαριστώ και πάλι και αναμένω νέα σου
Απάντηση με παράθεση
  #4  
Παλιά 03-07-12, 21:33
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.159
Προεπιλογή

Σαράντο, αν σου είναι εύκολο συμπίεσε ένα αντίγραφο της βάσης σου με μερικές εγγραφές
και επισύναψε το στο φόρουμ για να δούμε τι μπορούμε να κάνουμε.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word
Απάντηση με παράθεση
  #5  
Παλιά 03-07-12, 22:10
Όνομα: Σαράντος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-04-2012
Μηνύματα: 7
Προεπιλογή

Δεν το ανεβάζει είναι μεγάλο (13,5mb κοίτα φτάνει να μου πείς πως θα το κάνω να πάει στην γραμμή την συγγεκριμένη και να μου βάλει άλλο ένα τεμάχιο ,, τα υπόλοιπα νομίζω πως δουλευουν.. Σου στέλνω μια φωτο για να δείς πως γίνετε μετά από πολλαπλά σκαναρισματα . Άν θες στειλεμου PM το mail σου και θα στην στείλω γιατί αλλιώς δεν γίνετε
Και πάλι σε ευχαριστώ
Συνημμένα Thumbnails
Έλεγχος - Πρόσθεση Ποσότητας σε λίστα-invoise.jpg  
Απάντηση με παράθεση
  #6  
Παλιά 04-07-12, 08:28
Το avatar του χρήστη Meteora
Συντονιστής
Όνομα: Νίκος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 28-12-2008
Περιοχή: Θεσσαλονίκη
Μηνύματα: 1.085
Προεπιλογή

Καλημέρα

Με την DCount πρέπει να "πιάσεις" το συγκεκριμένο προϊόν που αγοράζει ο συγκεκριμένος πελάτης (την συγκεκριμένη ημέρα ?). Σκέφτομαι : αν ο πελάτης αγοράσει 2-3 πορτοκαλάδες στις 18:00 και επανέλθει στις 21:30 -την ίδια ημέρα- να πάρει ξανά πορτοκαλάδες μήπως έχουμε πρόβλημα;

Ο κώδικας που θα έγραφα θα ήταν κάπως έτσι:
If DCount("Barcode", "Invoice Details", "Barcode = '" & Barcode & "' and [idpelati]= " & me.parent.idpelati ) >1 Then
Me.Quantity.Value = Me.Quantity.Value + 1
Me.Σύνολο_Γραμμής = Me.Quantity * Me.PricePerUnit
else
DoCmd.GoToRecord , , acNewRec
Me.Barcode.SetFocus
End if

Δοκίμασε την πρότασή μου. Φτιάξε μια μινιατούρα της εφαρμογής σου που να έχει κύρια φόρμα με δυο-τρεις πελάτες, μια δευτερεύουσα με 3-4 προϊόντα για να δούμε στην πράξη 'τι παίζει'. Ας έχουμε κατά νου -Σαράντο- οτι στο φόρουμ τούτο, όλοι πρέπει να έχουν ωφέλεια και όλοι πρέπει να προσφέρουν. Η δική σου συμμετοχή στην προσφορά θα είναι να μας ετοιμάσεις την μινιατούρα-εφαρμογή και η ωφέλεια όλων μας θα είναι ότι θα έχουμε ένα μικρό παράδειγμα-λίαν κατανοητό.
Περιμένουμε να δώσεις συνέχεια...

Με εκτίμηση
Νίκος Δ

Τελευταία επεξεργασία από το χρήστη Meteora : 04-07-12 στις 20:37. Αιτία: Διόρθωση...
Απάντηση με παράθεση
  #7  
Παλιά 04-07-12, 12:00
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.159
Προεπιλογή

Καλησπέρα!
Ο παρακάτω κώδικας κάνει ακριβώς το ζητούμενο αλλά έχει προσαρμοστεί στη φόρμα "Order Details" του πρότυπου Northwind Database (αγγλικό) που υπάρχει στην έκδοση Access 2007 - 2010.

H φόρμα "Order Details" περιέχει την υποφόρμα "Order Details Extended" στην οποία ανήκει ο παρακάτω κώδικας:

Κώδικας:
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim cnt As Long, LngProductID As Long, LngOrderID As Long, LngQty As Long
    If Me.NewRecord Then
        LngQty = Me.Quantity + 0
        LngProductID = Me.Product_ID + 0
        LngOrderID = Me.[Order ID] + 0
        If LngQty > 0 And LngProductID > 0 Then
            cnt = Nz(DSum("[Quantity]", "[Order Details Extended]", _
                          "[Product ID] =" & LngProductID & " AND [Order ID]= " & LngOrderID))
            If cnt = 0 Then Exit Sub
        Else
            Cancel = True
            If LngProductID = 0 Then Me.Product_ID.SetFocus
            If LngQty = 0 Then Me.Quantity.SetFocus
            Exit Sub
        End If
        Cancel = True
        Me.Undo
        CurrentDb.Execute _
                "UPDATE [Order Details Extended] SET [Quantity]=" & cnt + LngQty & _
                "  WHERE [Product ID] =" & LngProductID & " AND [Order ID]= " & LngOrderID

        'Με το παρακάτω κομμάτι ενημερώνει και το πεδίο [Extended Price] με τη
        'συνάρτηση LngQty * GetListPrice(LngProductID)
        '
        ' Δεν θα λειτουργήσει στη συγκεκριμένη βάση δεδομένων. Δείτε το μόνο σαν παράδειγμα.
        '
        '        CurrentDb.Execute _
        '                "UPDATE [Order Details Extended] SET [Quantity]=" & cnt + 1 & _
        '                ", [Extended Price] =" & LngQty * GetListPrice(LngProductID) & _
        '                "  WHERE [Product ID] =" & LngProductID & " AND [Order ID]= " & LngOrderID

        Me.Refresh
    End If
End Sub
Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word

Τελευταία επεξεργασία από το χρήστη Tasos : 05-07-12 στις 09:05. Αιτία: Βελτιστοποίηση κώδικα
Απάντηση με παράθεση
  #8  
Παλιά 05-07-12, 13:23
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.159
Προεπιλογή

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

Αγαπητέ Σαράντο, είδα τη βάση σου και συγκεκριμένα την υποφόρμα OrderDetails_subform

Το μέγεθος αλλά και οι ιδιαιτερότητες της πανέμορφης αυτής βάσης δεν μου επιτρέπουν να την επισυνάψω στο φόρουμ.

Σε παρακαλώ, τη επόμενη φορά που θα χρειαστείς κάτι, να παραθέτεις ένα παράδειγμα όπου θα φαίνεται το ζητούμενο.

Έτσι, αφενός θα μπορούν να συμμετέχουν και οι υπόλοιποι αφετέρου θα μπορεί κανείς να αποκομίσει κάτι από τη συζήτηση.

Ο παρακάτω κώδικας ανήκει στη φόρμα OrderDetails_subform και πιστεύω να σε καλύπτει.


Κώδικας:
Option Compare Database
Option Explicit
Private Sub Barcode_AfterUpdate()
    Me.ProductName = Barcode.Column(2)
    Me.UnitPrice = Barcode.Column(4)
    Me.SalePrice = Barcode.Column(6)
    Me.SalesTax = Barcode.Column(5)
    Me.ProductID = Barcode.Column(7)
    Me.Quantity.Value = 1
    '+++++++++++++++++++++++++++++++++++++++
    Quantity_AfterUpdate
    '+++++++++++++++++++++++++++++++++++++++
    Me.Quantity.SetFocus
    Me.Quantity.SelStart = 0
    Me.Quantity.SelLength = 1
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim cnt As Long, LngProductID As Long, strPurchaseOrderNumber As String, LngQty As Long
    Dim CurrSalePrice As Variant, CurrUnitPrice As Variant, strSQL As String
    If Me.NewRecord Then
        CurrSalePrice = Me.SalePrice + 0
        CurrUnitPrice = Me.UnitPrice + 0
        LngQty = Me.Quantity + 0
        LngProductID = Me.ProductID + 0
        strPurchaseOrderNumber = Me.PurchaseOrderNumber + 0
        If LngQty > 0 And strPurchaseOrderNumber > 0 And CurrSalePrice > 0 And CurrUnitPrice > 0 Then
            cnt = Nz(DSum("[Quantity]", "[Order Details]", _
                          "[ProductID] =" & LngProductID & _
                          " AND [PurchaseOrderNumber]= '" & strPurchaseOrderNumber & "'"))
            If cnt = 0 Then Exit Sub
        Else
            Cancel = True
            If LngProductID = 0 Then Me.ProductID.SetFocus
            If LngQty = 0 Then Me.Quantity.SetFocus
            Exit Sub
        End If
        Cancel = True
        Me.Undo
        CurrSalePrice = Replace(CStr((cnt + LngQty) * CurrSalePrice), ",", ".")
        CurrUnitPrice = Replace(CStr((cnt + LngQty) * CurrUnitPrice), ",", ".")

        strSQL = "UPDATE [Order Details] SET [Order Details].Quantity =" & cnt + LngQty & _
                 ", [Order Details].Σύνολο_ΜΦ =" & CurrSalePrice & _
                 ", [Order Details].Σύνολο_ΧΦ =" & CurrUnitPrice & _
                 " WHERE [Order Details].ProductID = " & LngProductID & _
                 " AND [Order Details].PurchaseOrderNumber= '" & strPurchaseOrderNumber & "';"
                 
        CurrentDb.Execute strSQL
        Me.Parent.Refresh
    End If
End Sub
Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word

Τελευταία επεξεργασία από το χρήστη Tasos : 05-07-12 στις 19:40.
Απάντηση με παράθεση
  #9  
Παλιά 05-07-12, 16:35
Όνομα: Σαράντος
Έκδοση λογισμικού Office: Ms-Office 2007
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 12-04-2012
Μηνύματα: 7
Προεπιλογή

Τάσο καταρχήν σε ευχαριστώ για τα καλά σου λόγια πίστεψέμε μου δίνουν μεγάλο κουράγιο να συνεχίσω . Όντος είναι τεράστια για να ανέβει στο forum το είδες και μόνος σου δεν ήταν θέμα άρνησης αλλά ήταν πρακτικά αδύνατο λόγο μεγέθους η αλήθεια είναι ότι χρειάζεται ακόμα πολύ δουλειά τόσο από θέμα αισθητικής όσο και από θέμα κώδικα μιας και από ότι είδες η τεκμηρίωσή του είναι ανύπαρκτη και δίνει αρκετά λάθη .
Θα αναφερθώ και πάλι στο desin της βάσης μιας και το θεωρώ πολύ σημαντικό γιατί φαντάσου να δουλεύεις ώρες και να βλέπεις μπροστά σου κάτι που δεν σου αρέσει . Για αυτό το θεωρώ κομμάτι που πρέπει ο καθένας μας που ξεκινά να φτιάξει κάτι να το λαμβάνει σοβαρά υπόψην του το ίδιο με το προγραμματιστικό μέρος .
Βέβαια για να είμαι φιλαλήθεις έχω μεγάλη βοήθεια από την γυναίκα μου που έχει αναλάβει να ντύσει την εφαρμογή και να την ομορφύνει έχει ρίξει απίστευτη δουλειά ,με πολλές ώρες πάνω στο Photoshop , ήταν ελεύθερη να κάνει ότι θέλει με μια μόνο προτροπή από εμένα ΝΑ ΜΗΝ ΜΙΑΖΕΙ ΜΕ ACCESS απο ότι φένεται τα κατάφερνει μια χαρά
Η λύση που μου έδωσες δεν έχω προλάβει να την δώ , μόλις τη δω θα σου απαντήσω πάντως σε ευχαριστώ προκαταβολικά

Να ρωτήσω και κάτι για να μοιραστούμε όλοι μαζί όλα αυτά μπορώ να παραθέσω το link που σου έδωσα ?? αν επιτρέπετε από το forum να το κάνω με μεγάλη χαρά .

Σαράντος
Απάντηση με παράθεση
  #10  
Παλιά 05-07-12, 18:47
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.159
Προεπιλογή

Καλησπέρα Σαράντο.

Και οι 2 κώδικες (ο ένας για την Northwind και ο άλλος για τη βάση σου) λειτουργούν στο δικό μου υπολογιστικό περιβάλλον.

Σου προτείνω να ανεβάσεις το αρχείο σου στο Google Drive (Δωρεάν. Προυποθέτει λογαριασμό χρήστη στις υπηρεσίες Google), να του αλλάξεις τα δικαιώματα σε "Δημόσιο" και να κοινοποιήσεις το σύνδεσμο εδώ στο φόρουμ.

Είναι πολύ πιο γρήγορο και για σένα και για τους υπόλοιπους που θα κατεβάσουν το αρχείο σου.

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών σε VB.Net, Access, Excel, Outlook, Word
Απάντηση με παράθεση
Απάντηση στο θέμα

Εργαλεία Θεμάτων
Τρόποι εμφάνισης

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

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


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

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[Συναρτήσεις] Κατανομή αδιάθετης ποσότητας στα μεγαλύτερα κελιά ενός πίνακα ataktos Excel - Ερωτήσεις / Απαντήσεις 2 13-04-14 19:22
[Συναρτήσεις] Άθροιση ποσότητας ανά κωδικό. nikosjc Excel - Ερωτήσεις / Απαντήσεις 3 02-04-14 13:36
Πρόσθεση Πεδίων Free_Ghost Access - Ερωτήσεις / Απαντήσεις 3 01-07-13 18:56
[Γενικά] Πρόσθεση ωρών misirlis Excel - Ερωτήσεις / Απαντήσεις 5 22-03-12 19:11
[Γενικά] Πρόσθεση κλασμάτων... Miltos100 Excel - Ερωτήσεις / Απαντήσεις 8 12-12-10 14:25


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