Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
Ενημέρωση τιμών με barcode ταμειακής.
Αυτή η βάση δεδομένων, έχει μόνο έναν πίνακα τον “Department”. Οι άλλοι δύο πίνακες βρίσκονται σε άλλη βάση και είναι “linked tables”. Αυτούς τους πίνακες δεν μπορώ να τους πειράξω γιατί ανήκουν στο πρόγραμμα της ταμειακής, το οποίο δεν βοηθάει στην καταχώρηση δεδομένων. Δεν μπόρεσα να φτιάξω τα εξής (φόρμα Itemdb): 1. Το πεδίο “barcode” ή κάποιο άλλο από πάνω να λειτουργεί σαν αναζήτηση, και όταν δεν υπάρχει να προσθέτει νέο είδος. 2. Το “SecondCode” είναι κάτι σαν το πρωτεύον κλειδί του προγράμματος της ταμειακής, και το έχω βάλει να ενημερώνεται “Default Value ={CurrentRecord], για να πάρει τιμή το πλήθος των εγγραφών (σε νέα εγγραφή). Όμως δεν δουλεύει σωστά πάντα. Την ίδια τιμή πρέπει να παίρνει το “tblenum” (να αλλάζει η τιμή του), αλλά δεν το κατάφερα. 3. Υπάρχει τρόπος να αποφύγω διπλότυπα σε “barcode” και “SecondCode”; 4. Γίνεται το πεδίο “department” να εμφανίζει νούμερο και περιγραφή; Σας ευχαριστώ. |
#2
| |||
| |||
Παύλο, κοίτα αν σου κάνει το συνημμένο |
#3
| |||
| |||
Ευχαριστώ πολύ! Το 4. (πεδίο “department”), είναι όπως το ήθελα. Το πεδίο “barcode” όμως θα ήθελα να μπορώ να χτυπάω εκεί το barcode, και αν δεν υπάρχει να ξεκινάει απ’ ευθείας μετά από ερώτηση μία νέα εγγραφή. Τα 2. Και 3. Νομίζω δεν άλλαξαν έτσι; |
#4
| |||
| |||
Είχα φτιάξει παλαιότερα μετά από λίγα μαθήματα VB σε άλλη βάση το εξής: Private Sub ΚωδΜοναδ_NotInList(NewData As String, Response As Integer) Dim strAnswer As Integer Response = acDataErrContinue strAnswer = MsgBox("Νέος Προμηθευτής ;", vbInformation + vbYesNo) If strAnswer = vbYes Then DoCmd.OpenForm "Μονάδες", , , , , acDialog Response = acDataErrAdded Else SendKeys "{Esc}" End If End Sub Όπου καταχωρείται μία τιμή αυτόματα σε άλλη φόρμα, αλλά έχουν περάσει 10 χρόνια σχεδόν και δεν θυμάμαι τίποτα. Πιστεύω θα πρέπει να γίνει κάπως έτσι: Private Sub cbo_barcode_NotInList(NewData As String, Response As Integer) Dim strAnswer As Integer Response = acDataErrContinue strAnswer = MsgBox("Νέο Προϊόν ;", vbInformation + vbYesNo) If strAnswer = vbYes Then DoCmd.AddNew "barcode", acDialog Response = acDataErrAdded Else SendKeys "{Esc}" End If End Sub |
#5
| |||
| |||
καλό απόγευμα στο forum. Παύλο, στο πεδίο cbo_barcode και στο συμβάν cbo_barcode_AfterUpdate() μετά την εντολή On Error GoTo cbo_barcode_AfterUpdate_Err_AfterUpdate() και πριν την εντολή cbo_barcode_AfterUpdate_Exit: δηλαδή ενδιάμεσα αυτών των εντολών αντικατέστησε τον υπάρχοντα κώδικα με τον παρακάτω: Κώδικας: Dim v_response As Variant Dim response As Variant DoCmd.SearchForRecord , "", acFirst, "[barcode] = " & "'" & Screen.ActiveControl & "'" v_response = DLookup("[barcode]", "Itemdb", "barcode='" & Me.cbo_barcode & "'") If IsNull(v_response) Or v_response = "" Then response = MsgBox("Η εγγραφή δεν υπάρχει." & vbNewLine & vbNewLine & _ "Θέλετε να δημιουργηθεί" & vbNewLine & _ "νέα εγγραφή;", _ vbInformation + vbYesNo, "Η εφαρμογή σας ενημερώνει ότι...") If response = vbYes Then DoCmd.GoToRecord , , acNewRec Else Exit Sub End If End If ΔΕΝ ΕΧΕΙΣ βάλει κλειδιά στους πίνακες και πάμε ΤΥΦΛΑ. Στείλε μία διορθωμενη DB, με τα ερωτήματα σου. |
#6
| |||
| |||
Καλημέρα στο forum. Καλημέρα Κώστα. Προσπάθησα πολύ να το προχωρήσω μόνος μου, όμως όταν δεν ξέρεις κάτι… Μετέφερα τον κώδικα που μου έδωσες στο «cbo_barcode_AfterUpdate()», και λειτουργεί χωρίς να το αλλάξω όμως όταν επιλέξω ένα barcode από τη λίστα, πάει εκεί και μόλις πατήσω tab στο επόμενο πεδίο ξαναγυρίζει πάλι εκεί που ήταν πριν. Επίσης σε νέο barcode καλό θα ήταν να πηγαίνει στο επόμενο πεδίο αυτόματα και να έχει ήδη πάρει την τιμή που έδωσα σε αυτό. Το ιδανικό είναι να μην υπάρχει καθόλου το «cbo_barcode», και όλα αυτά να γίνονται μέσα από το ίδιο το πεδίο barcode. Το δοκίμασα, το έκανα combo, έβαλα εκεί τον κώδικα (αφαίρεσα το «cbo_», αλλά δεν μπόρεσα να το κάνω να λειτουργήσει έτσι. Αλλά και με το πλαίσιο αυτό είναι μια χαρά. Οι πίνακες “Itemdb” και το “tblEnum”δεν βρίσκονται πραγματικά μέσα στη βάση δεδομένων αυτή , αλλά στη βάση του προγράμματος της ταμειακής σε access 97, και τα έχω σαν συνδεδεμένους πίνακες. Το “SecondCode” βρίσκεται μέσα στον “Itemdb”,και είναι η θέση που θα αποθηκευτεί το προϊόν στη ταμειακή (1 έως 12320), και πρέπει να αυξάνει με τις εγγραφές αντίστοιχα (χωρίς διπλότυπα). Το “tblEnum” είναι το πλήθος των εγγραφών και όταν πατήσεις στην ταμειακή νέο προϊόν, τότε αυτό παίρνει SecondCode = tblEnum + 1. Έχει πάντα μία μοναδική εγγραφή μέσα. Συγνώμη για την ταλαιπωρία, και σας ευχαριστώ. |
#7
| |||
| |||
Καλό μεσημέρι στο forum. Παύλο, Αν κατάλαβα καλά 1. τα είδη που μπορείς να καταχωρήσεις είναι μέχρι και 12.320 2. ο πίνακας tblEnum έχει πάντα το σύνολο των εγγραφών του πίνακα Itemdb 3. το πεδίο SecondCode έχει τον αριθμό του record και ο αριθμός του τελευταίου είναι = tblEnum 4. σε περίπτωση διαγραφής γίνετε επαναρίθμηση; |
#8
| |||
| |||
Ναι όλα σωστά. Την διαγραφή θα την απαγορέψω στην φόρμα, αλλά αν γίνει τότε ναι πρέπει να γίνει επαναρίθμηση για να αντικατασταθούν τα δεδομένα που είχε κρατήσει στην μνήμη της η ταμειακή. Το “SecondCode” νομίζω το πέτυχα δίνοντάς του DefaultValue = Val(Count([SecondCode])+1), και Requery: Private Sub Form_BeforeInsert(Cancel As Integer) Requery Recordset.AddNew End Sub Το μόνο πρόβλημα ότι μετά την ενημέρωση νέου προϊόντος στο τελευταίο tab φεύγει και δεν σου αφήνει ανοιχτή την τελευταία καταχώρηση να την δεις. Το “tblEnum” δεν μπορώ να το ενημερώσω με τίποτα! Ευχαριστώ. |
#9
| |||
| |||
Την καλησπέρα μου στο forum. Παύλο, κοίτα το συνημμένο, λογικά πρέπει να σου κάνει. κάνει και επαναρίθμηση μετά από επιβεβαιώση διαγραφής και στο πεδίο [SecondCode] του πίνακα Itemdb και ενημερώνει ταυτόχρονα το πεδίο [enum] του πίνακα tblEnum και στην διαγραφή και στην εισαγωγή barcode. |
#10
| |||
| |||
Κώστα καλησπέρα. Όλα τέλεια. Με γλίτωσες από πάρα πολύ κόπο και σε ευχαριστώ! Είχα ήδη αρχίσει να ξαναδιαβάζω VBA αλλά δεν νομίζω να έφτανα ποτέ εκεί. Που χρόνος... Αν δεν γίνομαι πολύ κουραστικός, πως μπορώ να το κάνω μετά από νέα εγγραφή να γυρνάει σε αυτή; Το ζητούμενο είναι να μπορεί αυτός που καταχώρισε κάτι να το ξαναδεί τελειωμένο. Αν θες μόνο περιέγραψέ μου και το βάζω εγώ. |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
Παρόμοια Θέματα | ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[ Φόρμες ] Αρχείο ειδών ταμειακής | vourosp | Access - Ερωτήσεις / Απαντήσεις | 1 | 23-05-13 12:50 |
Ενημέρωση τιμών πίνακα από πεδίο φόρμας | gath | Access - Ερωτήσεις / Απαντήσεις | 1 | 19-08-12 15:07 |
[ Φόρμες ] ΓΡΑΜΜΑΤΟΣΕΙΡΆ BARCODE | artchrist73 | Access - Ερωτήσεις / Απαντήσεις | 11 | 08-04-11 00:53 |
MsAccess και BarCode Ετικέτες | Ms-Office-Development Team | Access samples - Χρήσιμα αρχεία & παραδείγματα | 0 | 11-11-09 10:36 |
MsAccess και BarCode Ετικέτες | kon73 | Access - Ερωτήσεις / Απαντήσεις | 0 | 07-01-09 12:50 |
Η ώρα είναι 21:50.