Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Έλεγχος - Πρόσθεση Ποσότητας σε λίστα
Καλησπέρα . Σε μια εφαρμογή για μικρά σειμεία που φτιάχνω έχω κολίσει κάπου και ζητώ την βοήθειά σας . Σε μια φορμα της τιμολόγισης που έχει τα στοιχεία του πελάτη υπάρχει μια υποφόρμα που περιέχει τα στοιχεία των προιοντων που σκανάρονται στο ταμείο δλδ πεδία Barcode περιγραφή ποσότητα τιμή φπα σύνολο γραμμής κτλ έχω ορίσει μετά από κάθε σκανάριζμα γραμμωτου να γεμίζουν τα πεδία αυτόματα ακόμα και αυτό τις ποσότητας να πέρνει την τιμή 1 ,και αυτόματα να πηγένει ο κενσορας σε νέα γραμμή . θα ήθελα λοιπόν σκανάροντας πάλι τον ίδιο γραμμοτό (η γραμμοτο που υπάρχει ίδη στην υποφόρμα να προσθέτει στο ανάλογο προιον από την λίστα άλλο ένα τεμάχιο και στην συνέχεια να πηγένει σε μια νέα εγγραφή ..........κάθε βοήθεια ευχαριστήτε εκ των προτέρων . |
#2
| ||||
| ||||
Καλησπέρα Σαράντο. Πριν γεμίζουν τα πεδία αυτόματα όπως αναφέρεις, θα πρέπει να προσθέσεις κώδικα που να ελέγχει αν το προιον προς καταχώρηση υπάρχει ήδη στην υποφόρμα. Αυτό μπορείς να το επιτύχεις με την εντολή Dlookup(). Παράδειγμα: Κώδικας: If Dlookup("Πεδίο_Barcode", "Πίνακας_της_Υποφόρμας", "Πεδίο_Barcode = '" & Τρέχον_Barcode & "'") Then 'Εύρεση της συγκεκριμένης εγγραφής και αύξηση του πεδίου ποσότητας κατά 1 μονάδα 'Πήγαινε σε νέα εγγραφή Else 'Αυτόματη Καταχώρηση τιμών στα πεδία 'Πήγαινε σε νέα εγγραφή End If δεν μπορώ φυσικά να το ξέρω αφού ούτε τη βάση σου γνωρίζω ούτε και το Activex που σχετίζεται με το Scanner. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#3
| |||
| |||
Τάσο κατάρχήν σε ευχαριστώ πάρα πολύ για την απαντησή σου έχω όμως κάποιες επιπλεον απορίες στον κώδικα που μου έγραψες . Πρώτα απ όλα έχω κωλίσει με την γραμμή που μου έγραψες και δεν μπορώ να την δουλέψω στο μιαλό μου για να γράψω την σωστή εντολή η γραμμή σου είναι αυτή 'Εύρεση της συγκεκριμένης εγγραφής και αύξηση του πεδίου ποσότητας κατά 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
| ||||
| ||||
Σαράντο, αν σου είναι εύκολο συμπίεσε ένα αντίγραφο της βάσης σου με μερικές εγγραφές και επισύναψε το στο φόρουμ για να δούμε τι μπορούμε να κάνουμε. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
#5
| |||
| |||
Δεν το ανεβάζει είναι μεγάλο (13,5mb κοίτα φτάνει να μου πείς πως θα το κάνω να πάει στην γραμμή την συγγεκριμένη και να μου βάλει άλλο ένα τεμάχιο ,, τα υπόλοιπα νομίζω πως δουλευουν.. Σου στέλνω μια φωτο για να δείς πως γίνετε μετά από πολλαπλά σκαναρισματα . Άν θες στειλεμου PM το mail σου και θα στην στείλω γιατί αλλιώς δεν γίνετε Και πάλι σε ευχαριστώ |
#6
| ||||
| ||||
Καλημέρα Με την 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 στις 21:37. Αιτία: Διόρθωση... |
#7
| ||||
| ||||
Καλησπέρα! Ο παρακάτω κώδικας κάνει ακριβώς το ζητούμενο αλλά έχει προσαρμοστεί στη φόρμα "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 Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 05-07-12 στις 10:05. Αιτία: Βελτιστοποίηση κώδικα |
#8
| ||||
| ||||
Καλησπέρα σε όλους! Αγαπητέ Σαράντο, είδα τη βάση σου και συγκεκριμένα την υποφόρμα 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 Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 05-07-12 στις 20:40. |
#9
| |||
| |||
Τάσο καταρχήν σε ευχαριστώ για τα καλά σου λόγια πίστεψέμε μου δίνουν μεγάλο κουράγιο να συνεχίσω . Όντος είναι τεράστια για να ανέβει στο forum το είδες και μόνος σου δεν ήταν θέμα άρνησης αλλά ήταν πρακτικά αδύνατο λόγο μεγέθους η αλήθεια είναι ότι χρειάζεται ακόμα πολύ δουλειά τόσο από θέμα αισθητικής όσο και από θέμα κώδικα μιας και από ότι είδες η τεκμηρίωσή του είναι ανύπαρκτη και δίνει αρκετά λάθη . Θα αναφερθώ και πάλι στο desin της βάσης μιας και το θεωρώ πολύ σημαντικό γιατί φαντάσου να δουλεύεις ώρες και να βλέπεις μπροστά σου κάτι που δεν σου αρέσει . Για αυτό το θεωρώ κομμάτι που πρέπει ο καθένας μας που ξεκινά να φτιάξει κάτι να το λαμβάνει σοβαρά υπόψην του το ίδιο με το προγραμματιστικό μέρος . Βέβαια για να είμαι φιλαλήθεις έχω μεγάλη βοήθεια από την γυναίκα μου που έχει αναλάβει να ντύσει την εφαρμογή και να την ομορφύνει έχει ρίξει απίστευτη δουλειά ,με πολλές ώρες πάνω στο Photoshop , ήταν ελεύθερη να κάνει ότι θέλει με μια μόνο προτροπή από εμένα ΝΑ ΜΗΝ ΜΙΑΖΕΙ ΜΕ ACCESS απο ότι φένεται τα κατάφερνει μια χαρά Η λύση που μου έδωσες δεν έχω προλάβει να την δώ , μόλις τη δω θα σου απαντήσω πάντως σε ευχαριστώ προκαταβολικά Να ρωτήσω και κάτι για να μοιραστούμε όλοι μαζί όλα αυτά μπορώ να παραθέσω το link που σου έδωσα ?? αν επιτρέπετε από το forum να το κάνω με μεγάλη χαρά . Σαράντος |
#10
| ||||
| ||||
Καλησπέρα Σαράντο. Και οι 2 κώδικες (ο ένας για την Northwind και ο άλλος για τη βάση σου) λειτουργούν στο δικό μου υπολογιστικό περιβάλλον. Σου προτείνω να ανεβάσεις το αρχείο σου στο Google Drive (Δωρεάν. Προυποθέτει λογαριασμό χρήστη στις υπηρεσίες Google), να του αλλάξεις τα δικαιώματα σε "Δημόσιο" και να κοινοποιήσεις το σύνδεσμο εδώ στο φόρουμ. Είναι πολύ πιο γρήγορο και για σένα και για τους υπόλοιπους που θα κατεβάσουν το αρχείο σου. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[Συναρτήσεις] Κατανομή αδιάθετης ποσότητας στα μεγαλύτερα κελιά ενός πίνακα | ataktos | Excel - Ερωτήσεις / Απαντήσεις | 2 | 13-04-14 20:22 |
[Συναρτήσεις] Άθροιση ποσότητας ανά κωδικό. | nikosjc | Excel - Ερωτήσεις / Απαντήσεις | 3 | 02-04-14 14:36 |
Πρόσθεση Πεδίων | Free_Ghost | Access - Ερωτήσεις / Απαντήσεις | 3 | 01-07-13 19:56 |
[Γενικά] Πρόσθεση ωρών | misirlis | Excel - Ερωτήσεις / Απαντήσεις | 5 | 22-03-12 20:11 |
[Γενικά] Πρόσθεση κλασμάτων... | Miltos100 | Excel - Ερωτήσεις / Απαντήσεις | 8 | 12-12-10 15:25 |
Η ώρα είναι 21:37.