Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| |||
| |||
![]()
Καλησπέρα σε όλους! Βρίσκομαι στην τελική φάση υλοποίησης μιας βάσης δεδομένων καταγραφής προϊόντων και χαρακτηριστικών τους και υπάρχουν 2-3 απαιτήσεις της όπου με δυσκολεύουν ως προς την υλοποίηση τους. Βρισκόμαστε στην Access 2010 όμως η DB πρέπει να είναι πλήρως αναγνώσιμη και απο 2003. Παρακάτω αναφέρω τα στάδια που χρήζουν επίλυσης μήπως και κάποιος γνωρίζει κάτι παραπάνω. 1) Έχουμε έναν πίνακα με αρκετά πεδία στον οποίο θέλουμε να κάνουμε import ένα αρχείο excel. Τα 2 αυτά αρχεία θα έχουν κάποια κοινά πεδία. Οι ιδιαιτερότητες είναι οι εξής: α) Θέλουμε κατα το import να εισάγονται αυτοματοποιημένα και ταυτόχρονα απο το excel στην DB τα δεδομένα απο 5-6 συγκεκριμένες στήλες, σε συγκεκριμένα προϋπάρχοντα πεδία του πίνακα της access. Η εισαγωγή θα πρέπει να γίνεται ομαλά δηλαδη όλα τα στοιχεία των συγκεκριμένων στηλών που βρισκόντουσαν στην ίδια γραμμή, να εισαχθούν στη DB στην ίδια εγγραφή. Δυστυχώς, τα κοινά αυτά πεδία-λίστες μεταξύ των 2 αρχείων είναι κοινά μόνο ως προς το περιεχόμενο και όχι το όνομα τους. Οι στήλες του excel όπου θα εισάγωνται καθ'αυτόν τον τρόπο είναι οι: A, B, J, H και Ν. Οι υπόλοιπες στήλες του excel θέλουμε να μην εισάγονται ενώ τα υπόλοιπα μή κοινά πεδία του πίνακα της DB παραμένουν ως έχουν και εμφανίζονται ανα εγγραφή με τις προεπιλεγμένες τιμές τους. β) Επειδή η χρήση της DB καθώς και το import θα γίνονται σε περιβάλλον 2003, υπάρχει η ανάγκη το import να γίνεται αυτοματοποιημένα κάθε φορα που εισάγεται κάποιο νεό αρχείο excel σε κάποιον προεπιλεγμένο φάκελο ενώ θα πρέπει να διατηρούνται και τα δεδομένα απο τα υπόλοιπα προγενέστερα imports χωρις να διαγράφονται. 2) Έχουμε ενα πεδίο σύνθετου πλαισίου 5 διαφορετικών τιμών όπου ο χρήστης αλλάζει την τιμή του πεδίου ανα εγγραφή όποτε το θελήσει. Θέλουμε κάθε φορά που πραγματοποιεί μια αλλαγή σε αυτο το πλαίσιο, η αλλαγή αυτή μαζί με την τιμή της να καταχωρούνται σε κάποιο άλλο πεδίο αυτής της εγγραφής. Δηλαδή, αν το πλαίσιο έχει αρχικά την τιμή Α μετά ο χρήστης αλλάξει σε Β μετά σε C και μετά σε D, θέλουμε σε κάποιο νέο πεδίο του πίνακα να εμφανίζεται το κέιμενο: Α, Β, C, D ή κάποια παρόμοια λύση. Απλά θέλουμε να παρατηρούμε κάπου τι αλλαγές έχει λάβει αυτό το πεδίο. Ευχαριστώ πολύ για τον χρόνο σας και θα ήμουν ευγνώμων σε όποιον γνώριζε κάπως να βοηθήσει. |
#2
| ||||
| ||||
![]()
Καλησπέρα Άγγελε Δουλεύω την Access 2007. Εφαρμογές μου τρέχουν σε οποιοδήποτε υπολογιστή, αφού όμως εγκαταστήσω το λογισμικό AccessRuntime 2007... Νομίζω και στην περίπτωση της 2010 το ίδιο πρέπει να ισχύει (Δεν βάζω το χέρι μου στο Ευαγγέλιο!) Ανέβασε μια DB και ένα Excel για να δείς πως περνάς δεδομένα από το Excel σε πίνακα της βάσης. Αφού ζητάς αυτοματοποίηση στην καταχώρηση τιμών σε πεδίο -με βάση το περιεχόμενου του προηγούμενου- το combobox τι το θες; Προηγούμενη εγγραφή θεωρείς αυτή με ID μικρότερο κατα μία μονάδα από την τρέχουσα; Περιμένουμε να σε διαβάσουμε. Με εκτίμηση Νίκος Δ. |
#3
| |||
| |||
![]()
Καλησπέρα Νίκο και ευχαριστώ για την ανταπόκριση σου. Οκ, θα το κοιτάξω αυτο σχετικά με το runtime και λογικά ολα θα είναι μία χαρά. Στον πίνακα της βάσης μου υπάρχουν αρκετά πεδία τα οποία αυτή τη στιγμή συμπληρώνονται manual. Αυτό που θέλω να πετύχω είναι κάποια συγκεκριμένα πεδία να παίρνουν τιμές αυτόματα απο κάποιες συγκεκριμένες στήλες ενός excel ενώ παράλληλα, θα μπορούν να επεξεργαστουν και manual τα δεδομένα τους αν χρειαστεί. Θέλουμε δηλαδή μόλις ο χρήστης τοποθετήσει το αρχείο excel σε κάποιο προεπιλεγμένο destination, τότε κάποιες συγκεκριμένες στήλες αυτού να αντιστοιχούνται με συγκεκριμένα πεδία του πίνακα και να προσθέτουν ανα εγγραφη στο εν λόγω πεδίο τα δεδομένα της κάθε στήλης. Το combobox είναι ένα απο εκείνα τα πεδία του πίνακα όπου πρεπει να παίρνει τιμές manual απο τον χρήστη και όχι αυτοματοποιημένα. Ακόμα, οι τιμές που παίρνει δεν είναι βηματικές - ήταν τυχαίο το παράδειγμα με τα A, B, C, D - αλλα λέξεις όπως: "εγκατεστημένο", "κατεστραμένο", "απόθεμα" κτλ. Οπότε, θέλουμε κάθε φορα που ο χρήστης αλλάζει την τιμή αυτού του πεδίου, η τιμή αυτή να καταχωρείται ταυτόχρονα σε καποιο άλλο πεδίο της εγγραφής, μαζί με όλες τις προϋπάρχουσες. Κάτι σαν τήρηση ιστορικού δηλαδη, ώστε να φαίνεται από ποιά στάδια έχει περάσει το εν λόγο προϊόν. |
#4
| |||
| |||
![]()
Καλησπέρα Άγγελε, σχετικά με το πρώτο ερώτημα, δεν είναι σαφές αν τα δεδομένα του excel θα προσαρτώνται (προσθέτονται) στο τέλος του πίνακα της access ή θα αντικαθιστούν συγκεκριμένες υπάρχουσες τιμές στον πίνακα. Κάθε περίπτωση αντιμετωπίζεται διαφορετικά. Για την περίπτωση της προσάρτησης (Append) θα πρέπει η σχεδίαση του πίνακα να επιτρέπει null τιμές για τα πεδία του πίνακα, που δε θα παίρνουν τιμές από το excel. Για τη δεύτερη περίπτωση της ενημέρωσης (Update) ο πίνακας πρέπει να διαθέτει ένα πρωτεύον κλειδί (πεδίο με μοναδικές τιμές) και κάτι αντίστοιχο να υπάρχει και στο φύλλο δεδομένων του excel. Αυτό είναι απαραίτητο για να γνωρίζουμε ποια γραμμή του πίνακα θα ενημερώνει κάθε συγκεκριμένη γραμμή δεδομένων του excel. Μπορούμε στην access, με κώδικα, να προσπελάσουμε τα δεδομένα στο excel και με κατάλληλα ερωτήματα προσάρτησης ή ενημέρωσης να τροποποιήσουμε τα δεδομένα του πίνακα. Θα δεις πως γίνεται αν ψάξεις στη βοήθεια για τη σύνδεση της access με άλλες εφαρμογές και ειδικότερα για τη συνάρτηση «GetObject». Για το δεύτερο ερώτημά σου, επειδή το προϊόν είναι ένα και οι καταστάσεις του πολλές, δεν μπορούν να αποθηκευτούν σε κάποιο πεδίο (πχ καταστάσεις) στον ίδιο πίνακα. Θα πρέπει να έχουμε ένα πίνακα (πχ Products) με τα προϊόντα και πρωτεύον κλειδί (πχ product_ID). Ένα πίνακα (πχ States) με το είδος των καταστάσεων και πρωτεύον κλειδί (State_ID). Ένα πίνακα (πχ Product_States), ο οποίος θα έχει ένα εξωτερικό κλειδί Product_ID για να ενώνεται με τον Product, ένα πεδίο ημερομηνίας και ένα πεδίο αναζήτησης (πτυσσόμενο πλαίσιο) που θα παίρνει τιμές από τον πίνακα States (εξωτερικό κλειδί State_ID). Τα δύο εξωτερικά κλειδιά μπορούν να χρησιμοποιηθούν ως σύνθετο πρωτεύον κλειδί του πίνακα. Κάθε φορά που αλλάζει η κατάσταση ενός προϊόντος στο πίνακα Product_States θα καταχωρείται το Product_ID του προϊόντος, η ημερομηνία αλλαγής και το State_ID (θα επιλέγεται από το πτυσσόμενο πλαίσιο). Καλή συνέχεια. Φιλικά/Γιώργος |
#5
| ||||
| ||||
![]()
Καλησπέρα Όλα ξεκινούν από τη φόρμα Frmrestore. Με το πάτημα του κουμπιού, εισάγονται δεδομένα από αρχείο Excel με διαδρομή C:\Users\Μετέωρα\Desktop\eforia.xls Από το αρχείο αυτό εισάγω μόνο τα δεδομένα από δυο στήλες (αρίθμηση στηλών 0,1,2, ...) Όμως! Ή όλη διαδικασία έχει ορισμένες απαιτήσεις ή ιδιαιτερότητες ή ...δυστροπίες αν θες:
Με εκτίμηση Νίκος Δ. Υστερολόγιο: Γιώργο μου δεν σε διάβασα... |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
καταγραφή παρουσίας/απουσίας βάση μήνα | Παναγιώτης Χρ | Access - Ερωτήσεις / Απαντήσεις | 3 | 25-03-16 15:19 |
Καταγραφή Ιστορικού | Χρήστος | Access - Ερωτήσεις / Απαντήσεις | 0 | 16-11-13 18:45 |
[Γενικά] Εύρεση και καταγραφή τιμών | gpentez | Excel - Ερωτήσεις / Απαντήσεις | 19 | 23-02-12 13:57 |
Καταγραφή user | bill72 | Access - Ερωτήσεις / Απαντήσεις | 7 | 20-05-10 19:42 |
Η ώρα είναι 08:39.