| Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια! |
![]() |
| | Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
| |
|
#1
| |||
| |||
|
Τασο, να ευχαριστησω και εσενα για την βοηθεια σου, που με τον Γιωργο καταφερατε να με μπερδεψετε... Δεν ξερω ποια λυση να χρησιμοποιησω. Μου αρεσουν και οι 2 ΤΟΣΟ ΠΟΛΥ !!! Πριν κανω καποιες ερωτήσεις, θελω να πω κατι... Ειμαι μέλος σε διαφορα forum (και αλλων θεματικων ενοτητων)... Αυτο το πραγμα που συμβαινει εδω μεσα ΕΙΝΑΙ ΠΡΩΤΟΦΑΝΕΣ !!!! Και πιστεψτε με δεν ανακαλυψα χθες το internet και τα forum (μετραω Τουλαχιστον 15 χρονια).... Και εξηγουμαι..... Τρομερο "know how" του αντικειμενου, Τεραστια διαθεση για βοηθεια, Εναλλακτικες λυσεις και διαφορετικες προσεγγισεις, στα προβληματα που ζητουν λυσεις, και πανω απ ολα με τροπο που βοηθα τους λιγοτερο γνωστες να μαθουν 2 πραγματα παραπανω !!! Επιπλεον τρομερη ευγένεια και επιπεδο στις συζητησεις. Σ Υ Γ Χ Α Ρ Η Τ Η Ρ Ι Α !!!!! Και ειλικρινα αν μπορω με καποιο τροπο να βοηθησω στην προσπαθεια σας, θα το κανω με μεγαλη μου ευχαριστηση !!!! Τασο να κανω καποιες ερωτησεις σχετικα με το excel που ανεβασες.... 1. Λειτουργει με "νεοτερου" τυπου αρχεια access (2010) ή μονο με *.mdb Πρεπει να γινει καποια αλλαγη στον κωδικα ? 2. Ειδα οτι εχεις αποκρυψει καποια κελια τα οποια εχουν περιεχομενο. Θα μπορουσες να μου πεις για παραδειγμα που χρησιμευουν τα περιεχομενα των κελιων Α1, Β1, Α7 3. Oπως καταλαβαινεις, τα δεδομενα (αρα κ τα κελια που χρησιμοποιηθηκαν) ηταν εικονικα για να γινει δοκιμη. Στην περιπτωση που χρειαστει να αλλαξω την Περιοχη εργασιας (πιο πολλα agm δηλαδη και πιο πολλες ημερομηνιες) αλλαζει αυτοματα και η περιοχη που επιλεγεται για να ενημερωσει τον πινακα της access η πρεπει να γινουν καποιες αλλαγες ? 4. Το σημειο στον κωδικα : With rngData FinalRow = .Rows.Count FinalColumn = .Columns.Count For j = 2 To FinalRow For i = 2 To FinalColumn Δηλωνει απο ποια στηλη και απο ποια γραμμη ξεκινανε οι τιμες για το πεδιο Katastasi του tbl_Programmatismos ? Αυτο βεβαια μπορει να το απαντησει και ο Γιωργος , αφου αυτο το κομματι είναι δικός του κώδικας. Ευχαριστώ και τα λέμε.... Οταν ολοκληρωθει αυτο που φτιαχνω, (επειδη πολλα μελη του φορουμ εχουν βαλει το χερακι τους με τον ενα ή τον άλλο τροπο (Kapetang, Meteora, Tasos, Nasos23, spirosgr sorry αν ξεχναω κάποιον) Θα ανεβει ολοκληρη, ωστε να δουν ΟΛΑ ΤΑ ΜΕΛΗ μια ολοκληρωμενη δουλεια, που θιγει πολλά θέματα. |
|
#2
| ||||
| ||||
|
Καλημέρα Στέλιο! Το κελί A1 δηλώνει την τελευταία μη κενή γραμμή της στήλης Β. Δεν χρειάζεται (παρέλειψα να το διαγράψω) αφού την τελευταία γραμμή τη βρίσκω με χρήση κώδικα VBA. To κελί Β2 φέρει το όνομα dbFullName και είναι συνδεδεμένο με το πλαίσιο κειμένου txtDbFullName (Απαραίτητο χρησιμοποιείται από τον κώδικα). περιέχει τη διαδρομή της ΒΔ. Τα κελιά A7:Axxx περιέχουν τα ονόματα των πινάκων της ΒΔ που έχει επιλεγεί χρησιμοποιούνται την πτυσσόμενη λίστα cbodbTables. (επίσης απαραίτητα). Μπορείς να χρησιμοποιήσεις όσα agm θέλεις και όσες ημερομηνίες θέλεις ξεκινώντας πάντα από το κελί Β6. Αρκεί να μην αφήνεις κενές γραμμές η στήλες. H περιοχή rngData που αναφέρεις στην ερώτηση σου προσδιορίζει τις όποιες διαστάσεις του πίνακα της Excel πχ B6:BM1000. Δεν έχει σχέση με την Access. Για να μπορείς να εισάγεις δεδομένα από βάσεις δεδομένων με μορφή *.accdb θα χρειαστεί να κάνεις 2 αλλαγές: 1. Άλλαξε τη γραμμή : fld.Filters.Add "Access Databases", "*.mdb" με τη γραμμή: fld.Filters.Add "Access Databases", "*.mdb;*.accdb" Για να επιτρέψεις στο διάλογο επιλογής BΔ. να σου εμφανίσει τα αρχεία *.accdb. 2. Άλλαξε τη γραμμή: cn.Open "Provider = Microsoft.Jet.OLEDB.4.0; " & "Data Source = '" & dbFileName & "'" Προσοχή! Αυτή η γραμμή υπάρχει 2 φορές στον κώδικα. με τη γραμμή: cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source = '" & dbFileName & "'" Καλή συνέχεια! Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#3
| |||
| |||
|
Αγαπητε Τασο, αντιμετωπιζω το ακολουθω προβλημα... Αυτο που χρειαζομαι είναι σε καθε Φυλλο εργασιας να έχω τα περιεχομενα ενος ετους. Σε μορφη *.xls ομως υπαρχει περιορισμος στις στηλες τις οποιες θα χρησιμοποιησω (δεν μου φτανουν). Μια σκεψη που εκανα ηταν να το σωσω ως xlsx για να ξεπερασω το προβλημα. Κατα την διαδικασια, το excel με προετρεψε να το σωσω ως xlsm λογω των μακροεντολων που περιεχονται. Οταν ομως δοκιμασα να το ανοιξω ελαβα το ακολουθο μυνημα Compile Error : Method or data member not found στο σημειο If Me.cbodbTables.Text = vbNullString Then Exit Sub μπορεις να δεις κ το συνημμενο αρχειο. Επιπλέον για λόγους εμφανισης χρειάζομαι επιπλέον 2 Γραμμες πριν την γραμμη 6 και μια στηλη αναμεσα στις στηλες Β & C. Πρεπει να αλλαξει κατι στον κωδικα ? Ευχαριστω Πολυ Τελευταία επεξεργασία από το χρήστη stelianta : 14-02-12 στις 20:40. Αιτία: Συνημμενο Αρχειο |
|
#4
| ||||
| ||||
|
Προφανώς δεν αναγνωρίστηκαν τα στοιχεία ελέγχου κατά τη μετατροπή από *.xls σε *.xlsm. Συνήθως αυτό το μήνυμα λάθους το παίρνεις μόνο μια φορά όταν η εφαρμογή "προσπαθεί" να κάνει τη μετατροπή/μεταγλώττιση του κώδικα VBA και άλλων αντικειμένων στη νέα δυαδική μορφή που υποστηρίζει το *.xlsm για αντικείμενα VBA, αντικείμενα εκτυπώσεων και άλλα... Αν μετά από μια επανεκκίνηση του αρχείου συνεχιστεί το πρόβλημα τότε απομάκρυνε τα στοιχεία ελέγχου από το *.xlsm (που τώρα πια είναι εικόνες) και φρόντισε: Είτε να δημιουργήσεις καινούργια χρησιμοποιώντας τα ίδια ονόματα είτε να τα αντιγράψεις από το αρχείο *.xls.έχοντας και τα 2 αρχεία ανοιχτά με Excel 2007. Μέσα στον κώδικα υπάρχει μια και μοναδική φορά η γραμμή >Set rngData = Range(Range("B6"), Range("B6").End(xlToRight)) Το "B6" είναι η διεύθυνση του κελιού πάνω αριστερά στον πίνακα των δεδομένων όπως ήταν στο παράδειγμα μου. Θα πρέπει να το τροποποιήσεις έτσι ώστε να δηλώνει τη νέα διεύθυνση του κελιού αυτού μετά τη μετακίνηση του πίνακα δεδομένων. Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#5
| |||
| |||
|
Τασο σε ευχαριστω πολυ. Εχω 3 παρατηρησεις : 1. Για να παιξει χρειαζεται να προσθεσεις στα references του Excel το "Microsoft ActiveX Data Objects 2.5 Library" 2. Θα ηθελα κατα την ενημερωση , να αγνοει τα κενα κελια (μπορει ενας ανθρωπος να ξεκινησει να "παρακολουθειται" απο μια ημερομηνια κ μετα. Οποτε απο εκεινη την ημερομηνια κ πισω τα κελια ειναι ΚΕΝΑ. 3. Ενώ ακολουθησα τα βηματα που μου ειπες, (δηλαδη εσβησα και ξανδημιουργησα ολα τα στοιχεια ελεγχου) εξακολουθω να περνω το μυνημα λαθους που ανεφερα στο προηγουμενο ποστ μου. Παρολα αυτα αν απλα κλεισω το παραθυρο της VBA, Η διαδικασία λειτουργει ΣΩΣΤΑ. Τουλαχιστον έτσι δειχνει. 4. Υπαρχει τροπος, σε *.xls (2003) να βγαλεις τον περιορισμο του πληθους των στηλών ? Και πάλι Ευχαριστώ |
|
#6
| ||||
| ||||
|
Καλησπέρα! Το αντικείμενο "Microsoft ActiveX Data Objects 2.x Library" (ADODB) φροντίζει για τη μεταφορά δεδομένων από την Excel στην Access. Μπορεί κανείς με μια τροποποίηση στον κώδικα (Late Binding) να το χρησιμοποιήσει και χωρίς την αναφορά στη VBA αλλά στην περίπτωση μας έχει γραφτεί έτσι που πρέπει να φορτώνεται η βιβλιοθήκη αυτή κατά την εκκίνηση του αρχείου (συμβάλει στην απόδοση της εφαρμογής). Το λάθος που περιγράφεις ενώ δεν μου το παρουσίασε στην 2007. Μου το παρουσίασε όμως στην 2010! Η αιτία του κακού: Η ιδιότητα της πτυσσόμενης λίστας: Listfillrange.΄ Σου στέλνω ένα αρχείο σε μορφή *.xlsm με κάποιες τροποποιήσεις στον κώδικα ώστε να μην προκαλείται σφάλμα κατά την εκκίνηση του αρχείου. Το να εξαιρέσεις τα κενά κελιά από την ενημέρωση της βάσης μπορεί να έχει και επιπτώσεις ως προς την ορθότητα των δεδομένων σου στην Access. φαντάσου να περάσεις κατά λάθος σε μια στήλη τα δεδομένα μιας άλλης... Πως θα τα διορθώσεις αν έχουν ήδη περαστεί στην Access, αν δεν επιτρέψεις την ενημέρωση και των κενών κελιών στην Excel; Εντάξει αυτό το φτιάχνεις με κάποιο τρόπο. Ωστόσο, γιατί πρέπει να υπάρχουν 2 προγράμματα για να γίνει η δουλειά αυτή; Γιατί δεν τα κάνεις κατευθείαν στην Excel; Δεν μπορείς να αυξήσεις τις γραμμές ή τις στήλες του υπολογιστικού φύλλου Excel σε οποιαδήποτε έκδοση Office. Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#7
| |||
| |||
|
Καλησπερα... Ευχαριστω για τις διορθωσεις στον κωδικα, κ για το νεο αρχειο που ανεβασες. Οσον αφορα τις ερωτησεις σου... Στην περιπτωση που ο χρηστης εντοπισει λαθος περασματα (Αν για παραδειγμα περασει τα δεδομενα μια στηλης σε μια αλλη), νομιζω πώς αυτο που εχει να κανει ειναι να διορθωσει την λαθος ημερα, κ να ενημερωσει την access μονο για την ημερα εκεινη. Δεν ειναι προβλημα ομως να το λειτουργησω κ ετσι, μιας κ θα τις αποκλεισω μετα στα ερωτηματα που θα δημιουργησω στην access. Απλα για να μην γεμιζει η ΒΔ σκουπιδια ή αχρηστη πληροφορια. Οσον αφορα γιατι χρησιμοποιω 2 προγραμματα, η απαντηση βρισκεται στο post #16 οπου περιγραφω το θεμα του project. Το συγκεκριμενο κομματι ειναι μερος μιας αρκετα μεγαλης κ πολυπλοκης εφαρμογης, της οποιας ο χειριστης, "εχει μαθει" μεχρι σημερα να δουλευει με αυτον τον πινακα του excel. Τα υπολοιπα ομως γινονται στην access.... |
|
#8
| |||
| |||
|
Αγαπητέ Τάσο Καλημέρα.... Καταρχην να σου πω οτι το προβλημα μου το εχω λυσει με τον τροπο που μου προτεινε ο Γιωργος (kapetang). Προσπαθωντας ομως να προσαρμοσω και την δικη σου λυση, η οποια ειναι "βολικοτερη" για τους χρηστες, χρησιμοποιωντας το τελευταιο αρχειο που ανεβασες, έλαβα μυνηματα λάθους (οπως φαινεται στις συνημμενες εικονες) Το λάθος το έπαιρνα οταν εδινα την διαδρομη του αρχειου. Εχεις υποψη σου περι τίνος πρόκειτε ; Ευχαριστω Τελευταία επεξεργασία από το χρήστη stelianta : 29-02-12 στις 10:15. Αιτία: Συνημμένα Αρχεία |
|
#9
| ||||
| ||||
|
Καλημέρα! Αφαίρεσε τη γραμμή Me.cbodbTables.Text = "" Παρέλειψα να τη διαγράψω κατά την τροποποίηση του αρχείου σε *.xlsm Φιλικά Τάσος
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών |
|
#10
| |||
| |||
|
Τασο σε ευχαριστω πολυ. Δουλεψε τέλεια ! |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [ Φόρμες ] Ενημέρωση πινάκων από Φόρμα | pkelgr | Access - Ερωτήσεις / Απαντήσεις | 4 | 15-02-16 14:28 |
| [ Φόρμες ] Ενημέρωση πινάκων από φόρμα | pixelman | Access - Ερωτήσεις / Απαντήσεις | 4 | 03-11-15 10:27 |
| Ενημέρωση πινάκων | rmaria | Access - Ερωτήσεις / Απαντήσεις | 0 | 01-02-14 01:04 |
| Ενημέρωση πινάκων από φόρμα | pkelgr | Access - Ερωτήσεις / Απαντήσεις | 1 | 12-01-14 14:39 |
| ενημερωση πινακων απο σκανερ | sakis | Access - Ερωτήσεις / Απαντήσεις | 2 | 02-02-10 20:08 |
Η ώρα είναι 18:08.


Υβριδικός τρόπος

