![]() |
Εκτέλεση ερωτήματος από μακροεντολή? Καλησπέρα σε όλους, έχω μια φόρμα σε μορφή πίνακα. Κάθε γραμμή της φόρμας έχει 5 πεδία από τον πίνακα Παραγωγή και ένα υπολογιζόμενο. Έχω κάνει και ένα ερώτημα ενημέρωσης για τον πίνακα. Θα ήθελα κάθε φορά που συμπληρώνεται μια γραμμή στη φόρμα να εκτελείται το ερώτημα πριν να εισάγω τιμές στην επόμενη γραμμή και να μπαίνει και η τιμή του υπολογιζόμενου πεδίου(που δεν μπαίνει ακόμα κι όταν δεν εκτελείται το ερώτημα).Κι αυτό να γίνεται για κάθε γραμμή. Δοκίμασα και με μακροεντολή αλλά δεν λειτουργεί. Βοήθεια!!!! |
Δέσποινα αν ανέβαζες μια βάση με τον πίνακα και τη φόρμα σε μορφή mdb, με λίγες εικονικές εγγραφές, είμαι σίγουρος ότι κάποιος θα σου έλυνε το πρόβλημα. Φιλικά/Γιώργος |
1 Συνημμένο(α) Ετοίμασα ένα παράδειγμα,το έκανα όσο πιο απλό μπορούσα λόγω του μικρού μεγέθους του αρχείου. Στη δευτερεύουσα φόρμα εισάγω ανά γραμμή κάποια στοιχεία.Ο αριθμός παραγωγής η ημερομηνία και η θέση υπάρχουν από πριν στον πίνακα.Έτσι όταν τα εισάγει ο χρήστης θέλω να βλέπει που υπάρχουν και τα τρία ταυτοχρόνως στην ίδια γραμμή και να βάζει και τα υπόλοιπα στοιχεία εκεί. Κι αυτό θέλω να γίνεται σε κάθε γραμμή. Και να παίρνει και την τιμή του υπολογιζόμενου πεδίου που δεν τη ναπίρνει ακόμα και τώρα. Ελπίζω να σας βοηθήσει για να με βοηθήσετε... |
Καλημέρα σε όλους Δέσποινα το αρχείο που ανέβασες, αν και έχει κατάληξη *.mdb, δε μπορώ να το ανοίξω στην access 2003 που διαθέτω. Μου εμφανίζει το μήνυμα «Μη αναγνωρίσιμη μορφή αρχείου». Ίσως μπορέσει να το ανοίξει και να σε βοηθήσει κάποιος άλλος που διαθέτει access 2007 ή νεότερη. Αν θέλεις προσπάθησε αφού ανοίξεις τη βάση στην access που έχεις να τη σώσεις σε μια προηγούμενη μορφή (*.mdb) και να ανεβάσεις αυτό το αρχείο. Επίσης τα αρχεία που ανεβάζεις, αν είναι μεγάλα, μπορείς να τα συμπιέζεις. Φιλικά/Γιώργος |
1 Συνημμένο(α) Καλημέρα στη κοινότητα ... Αγαπητή Δέσποινα καλώς όρισες στη παρέα μας. Είναι βέβαιο οτι εδώ θα βρεις τις απαντήσεις που θέλεις αρκεί να γίνονται κατανοητά τα ερωτήματα. Στο παράδειγμα που ανέβασες δεν φαίνεται η δευτερεύουσα, ποιο πεδίο ειναι υπολογιζόμενο ούτε γίνεται κατανοητό -βλεποντας τον πίνακα- το τι θες να κάνεις. Παρουσιάζεις απλά ένα πίνακα και δυο φόρμες που "κάθονται" πάνω σε αυτόν. Η μια φόρμα σου ειναι 'Μονή' και η άλλη 'Συνεχείς φόρμες'. Γράψε λοιπόν το τι θες να κάνεις, ποια δεδομένα θες να εισάγεις και τι πληροφορίες θες να παίρνεις απο την εφαρμογή. Με την πρότασή μου αυτή θα έχεις μια σωστή σχεδίαση και όχι μόνο. Νίκος Δ. Υστερολόγιο : Για να επισυνάψεις ένα αρχείο κάνε τα παρακάτω βήματα
|
Νίκο καλημέρα Δοκίμασα να ανοίξω το αρχείο που επισυνάπτεις και μου έβγαλε το ίδια μήνυμα (μη αναγνωρίσιμη μορφή). Δεν ξέρω τι συμβαίνει, αλλά κάτι τέτοια με κάνουν να σκεφτώ την αναβάθμιση της access που έχω. Φιλικά/Γιώργος |
2 Συνημμένο(α) Καλημέρα σε όλους! Δέσποινα καλωσόρισες κι από μένα! Διόρθωσα το συνημμένο σου για να εμφανίζεται σωστά. Αν ακολουθήσεις τις οδηγίες του Νίκου, δεν νομίζω να αντιμετωπίσεις πρόβλημα σε σχέση με την επισύναψη αρχείων στο φόρουμ. Αν το αρχείο προς επισύναψη είναι μεγάλο, συμπίεσε το με Zip. Με το τρόπο ο όγκος των αρχείων του Office (εκτός τα *.xls(x,m,b) θα μικρύνει έως και 10 φορές. Τώρα στην ερώτηση σου. Με τη λογική του ότι η τιμή του πεδίου [Μ3] εξαρτάται από την τιμή του πεδίου [ΜΗΚΟΣ ΠΩΛΗΣΗΣ], μπορείς να κάνεις τα παρακάτω: Συνημμένο Αρχείο 683 Συνημμένο Αρχείο 684 Σύνδεσε το πεδίο της φόρμας [Μ3] με το πεδίο του πίνακα [ΠΑΡΑΓΩΓΗ].[Μ3] (Δε χρειάζεται πια να υπολογίζει). Στο φύλλο ιδιοτήτων του πεδίου [Μ3], στην καρτέλα "Συμβάν" κάνε κλικ στο συμβάν "Μετά την ενημέρωση" και στο διάλογο επιλογής Δόμησης που θα εμφανιστεί, επίλεξε "Δόμηση κώδικα" (βλ. εικόνες παρακάτω). Θα σου ανοίξει το παράθυρο του VBE όπου θα δεις το παρακάτω: Κώδικας: Private Sub ΜΗΚΟΣ ΠΩΛΗΣΗΣ_AfterUpdate()Κώδικας: Private Sub ΜΗΚΟΣ ΠΩΛΗΣΗΣ_AfterUpdate()Καλή συνέχεια! Τάσος |
1 Συνημμένο(α) Προσπάθησα να το κάνω ξανά για να καταλάβετε αυτό που ζητάω. Αν μπορείτε να δείτε τα δεδομένα στον πίνακα στην πρώτη γραμμή είναι το ζητούμενο δλδ θέλω από την ειγασωγή των δεδομένων σε κάθε γραμμή να πηγαίνει να βλέπει στον πίνακα παραγωγή που τα στοιχεία αριθμός παραγωγής,ημερομηνία και θέση είναι ίδια με αυτά που έβαλε ο χρήστης και στην γραμμή που τα βρίσκει να πηγαίνει να βάζει και τα υπόλοιπα στοιχεία της γραμμής. Το υπολογίζόμενο στοιχείο της φόρμας είναι το Μ3 όπως θα δείτε. Συνημμένο Αρχείο 685 |
Τάσο ευχαριστώ πολύ για την απάντηση, αλλά ακόμα και το Μ3 θέλω να μπαίνει μόνο εάν βρεθεί η σωστή γραμμή στον πίνακα.Όποτε θα ήθελα κάθε φορά που ενημερώνεται και το Μ3, που είναι το τελευταίο στοιχείο της γραμμής στη φόρμα, να εκτελείται το ερώτημα το οποίο εισάγει δεδομένα αφού ελέγξει τις γραμμές του πίνακα. Το ζητούμενο δεν είναι νέα εγγραφή στον πίνακα ΠΑΡΑΓΩΓΗ αλλά ενημέρωση υπό συνθήκη μιας υπάρχουσας. Ελπίζω να γίνομαι κατανοητή και όχι κουραστική... |
Δέσποινα με συγχωρείς! Μπερδεύτηκα! Δεν κατάλαβα ακόμα το ζητουμενο σου! Παράθεση:
Επίσης χωρίς νέα εγγραφή δεν υφίσταται υπάρχουσα εγγραφή! Αυτό που χρειάζεσαι είνα ένα ερώτημα επιλογής που θα παίρνει τα δεδομένα του πίνακα και θα τα παρουσιάζει ομαδοποιημένα ανά ημερομηνία ή ότι άλλο θέλεις. Αν τα ομαδοποιημένα δεδομένα δεν πρόκειται να επεξεργαστούν παραπέρα, ίσως θα έπρεπε να εξετάσεις το ενδεχόμενο χρήσης συγκεντρωτικού πίνακα. Φιλικά Τάσος |
Οπότε μου λες οτι κάτι τέτοιο δεν γίνεται. Δεν γίνεται δλδ κάθε φορά που συμπληρώνεται μια γραμμή στη φόρμα να εκτελείται ένα ερώτημα ενημέρωσης στον πίνακα?? Φταίει που είμαι και αρχάρια στην Access... |
Καλησπέρα σε όλους Δεν ξέρω τι συμβαίνει αλλά δεν μπόρεσα να ανοίξω κανένα από τα συνημμένα αρχεία και έτσι δεν έχω και σαφή γνώση του προβλήματος. Δέσποινα πρέπει να έχεις υπόψη σου ότι ακόμα και αν κάνουμε αλλαγές στα δεδομένα σε μία φόρμα που δείχνει πολλές εγγραφές, οι αλλαγές αποθηκεύονται στον πίνακα στον οποίο βασίζεται η φόρμα γραμμή-γραμμή. Δηλαδή κάνοντας αλλαγές σε οποιαδήποτε εγγραφή της φόρμας, μόλις πάμε σε μία άλλη εγγραφή (πχ για να την αλλάξουμε) η access αυτόματα (χωρίς να τρέξουμε κανένα ερώτημα) θα αποθηκεύσει την αλλαγμένη εγγραφή στην κατάλληλη γραμμή του πίνακα. Όταν τα πεδία της φόρμας είναι δεσμευμένα στα πεδία του πίνακα δε χρειάζεται να ανησυχείς για την κατάλληλη αποθήκευση των αλλαγών. Τη δουλειά την κάνει η access. Μπορείς να κάνεις δοκιμές για να το διαπιστώσεις. Φιλικά/Γιώργος ΥΓ Τάσο υπάρχει μια (φανερή) αβλεψία. Tο συμβάν AfterUpdate αφορά το πεδίο «ΜΗΚΟΣ ΠΩΛΗΣΗΣ», όπως φαίνεται και στον κώδικα και όχι το «[Μ3]». |
Καλησπέρα! Γιώργο, στο μήνυμα μου έγραψα: ... "Με τη λογική του ότι η τιμή του πεδίου [Μ3] εξαρτάται από την τιμή του πεδίου [ΜΗΚΟΣ ΠΩΛΗΣΗΣ]"... Αφού λοιπόν η τιμή του [Μ3] εξαρτάται από την τιμή του πεδίου [ΜΗΚΟΣ ΠΩΛΗΣΗΣ]" ο κώδικας ελέγχει αν υπάρχει τιμή στο [ΜΗΚΟΣ ΠΩΛΗΣΗΣ] κι αν υπάρχει τότε κάνει τη διεργασία,.... Τάσος |
Παράθεση:
Ας πούμε ότι ενημέρωσες τη εγγραφή που τηρεί τα κριτήρια που υπάρχουν στο ερώτημα ενημέρωσης στο αρχικό σου συνημμένο. Τι θα γίνει με την ιδια την εγγραφή που μετά την ενημέρωση της θα πρέπει να εκτελεστεί το ερώτημα ενημέρωσης; Θα συνεχίσει να υπάρχει; (κάπου θα προκαλέσει σύγχυση) Θα διαγραφεί; (δεν θα ξέρεις αν έχει καταχωρηθεί και το χειρότερο: Δεν θα μπορείς πια να τη διορθώσεις αν χρειαστεί αφου μετά την ενημέρωση της θα εκτελεστεί αυτόματα το ερώτημα ενημέρωσης.. με ότι συνεπάγεται απ αυτό...) Πες μας απλά τι θέλεις να επιτύχεις για να μπορέσουμε να σου δώσουμε την ιδανική λύση. Φιλικά Τάσος |
Ευχαριστώ για το ενδιαφέρον σου, πραγματικά τείνω να απελπιστώ.. η αρχική μου ιδέα ήταν να υπάρχει ένας βασικός πίνακας (ΠΑΡΑΓΩΓΗ) όπου απο μία φόρμα θα εισάγονταν τα προιόντα που παράγονται με κάποια χαρακτηριστικά τους.μέχρι εδώ καλά είμαστε. όταν ένα προιον που υπάρχει στον πίνακα θα πουλιόταν,θα ήθελα να πηγαίνει στο συγκεκριμένο προιον και να καταχωρεί τα διάφορα χαρακτηριστικά της πώλησης. αυτό που το κάνει πολύπλοκο για μενα είναι: 1ον οτι κάθε προιον είναι μοναδικό βάσει τριων χαρακτηριστικών του(τρια πεδία στον πίνακα) 2ον χρειάζεται η φόρμα να είναι σε συνεχείς φόρμες γιατι θέλω κάποια αθροίσματα απο την δεδομένη παραγγελία. Οι εγγραφες μετα την ενημερωση θα συνεχίσουν να υπάρχουν απλα αυτο που δυσκολευει την ολη κατασταση νομιζω οτι είναι οτι φόρμα=νεα εγγραφή πράγμα που δεν θέλω στην παρούσα φάση. Και τώρα άρχισα να βλέπω την εκδοχή του να σπάσω τον πίνακα σε 2(παραγωγη και πώληση) και ο πίνακας παραγωγή να έχει σύνθετο κλειδί(τα τρια χαρακτηριστικα που κάνουν μοναδικό το κάθε προιον)...Αν και θα είναι πολύπλοκο μετα με ερωτηματα και εκθεσεις.. για αυτο και απελπιστηκα.. |
Καλησπέρα σε όλους Τάσο ο κώδικας είναι μια χαρά. Όταν μιλάω για αβλεψία εννοώ το παρακάτω: Παράθεση:
Φιλικά/Γιώργος |
Καλησπέρα Δέσποινα και καλωσόρισες στο φόρουμ! Από τα μηνύματά σου διακρίνεται μια βιασύνη ως προς την υλοποίηση της εφαρμογής σου και ίσως σε αυτό οφείλεται και η απελπισία σου. Πριν όμως προχωρήσεις σε οποιοδήποτε προγραμματιστικό βήμα, είναι σημαντικό να κατανοήσεις τη μοναδικότητα των θεμάτων (οντοτήτων) που θα διαχειρίζεται η εφαρμογή σου και των στοιχείων τους που θα χρειαστεί να αποθηκευτούν στη βάση σου. Άλλο πράγμα το προϊόν, άλλο η παραγωγή του, άλλο η παραγγελία του και άλλο η πώλησή του. Και τα τέσσερα είναι ξεχωριστά πράγματα τα οποία καθορίζονται από τα μοναδικά στοιχεία τους. Έτσι λοιπόν, κάτσε και σκέψου με πόσα και ποια πράγματα θα ασχολείται η εφαρμογή σου, φτιάξε έναν πίνακα για κάθε πράγμα και πρόσθεσε ένα πεδίο για κάθε στοιχείο του πράγματος το οποίο θα είναι σχετικό μόνο με το θέμα (πράγμα) του πίνακα και δεν θα εξαρτάται από κάποιο άλλο πεδίο. Όταν θα είσαι σίγουρη για τη δομή της βάσης σου, τότε μόνο θα μπορείς με σιγουριά να προχωρήσεις και στην υλοποίηση των άλλων στοιχείων της εφαρμογής σου. (σχέσεις, ερωτήματα, φόρμες κτλ) Όλοι μας ξέρουμε πως η αρχή είναι το ήμισυ του παντός όμως στις εφαρμογές βάσεων δεδομένων η αρχή αποτελεί τουλάχιστον το 60% του όλου έργου. :secret: Καλή ..αρχή λοιπόν!:dft010: Φιλικά, Γιάννης |
Καλημέρα κι απο εμένα, κατα την γνώμη μου υλοποίησε αυτά που έχει γράψει ο Τάσος, αλλά και οι υπόλοιποι φυσικα και θα πετύχεις αυτό που θέλεις να κάνεις. Τώρα, εαν θέλεις να συμπεριλάβεις macro σε συμβάν afterUpdate για τις εγγραφές κάποιου RecordSet μπορείς να κάνεις έναν συνδυασμό VBA και Access (των λειτουργιών της). Δλδ: Μπορείς να τρέξεις το ερώτημα ενημέρωσης, προσάρτησης, κλπ κλπ, βάζοντας ένα κριτήριο στο ανάλογο πεδίο για την τρέχουσα φόρμα, όπου έχεις ενεργοποιημένο το event AfterUpdate. Τώρα το macro με το "άνοιγμα" των ερωτημάτων σου σε σειρά μπορείς να το καλέσεις μέσα απο την VBA με την εντολη DoCmd.OpenQuery "ΟνομαΜακροεντολής" Με τον παραπάνω τρόπο θα τρέχεις το update σου για την κάθε εγγραφή που ενημερώνεις με κριτήριο, πάντα την ίδια την εγγραφή. Φιλικά, Άγγελος |
| Η ώρα είναι 23:43. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.