Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Access > Access - Ερωτήσεις / Απαντήσεις > Ενημέρωση Πινάκων από Πίνακα Excel

Access - Ερωτήσεις / Απαντήσεις Access + VBA... Εδώ δεν υπάρχουν όρια!

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 14-02-12, 09:45
Όνομα: Στέλιος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-07-2011
Περιοχή: Αθήνα
Μηνύματα: 81
Προεπιλογή

Τασο, να ευχαριστησω και εσενα για την βοηθεια σου, που με τον Γιωργο καταφερατε να με μπερδεψετε... Δεν ξερω ποια λυση να χρησιμοποιησω. Μου αρεσουν και οι 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  
Παλιά 14-02-12, 12:11
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα Στέλιο!

Το κελί 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  
Παλιά 14-02-12, 20:18
Όνομα: Στέλιος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-07-2011
Περιοχή: Αθήνα
Μηνύματα: 81
Προεπιλογή

Αγαπητε Τασο, αντιμετωπιζω το ακολουθω προβλημα...

Αυτο που χρειαζομαι είναι σε καθε Φυλλο εργασιας να έχω τα περιεχομενα ενος ετους. Σε μορφη *.xls ομως υπαρχει περιορισμος στις στηλες τις οποιες θα χρησιμοποιησω (δεν μου φτανουν). Μια σκεψη που εκανα ηταν να το σωσω ως xlsx για να ξεπερασω το προβλημα.

Κατα την διαδικασια, το excel με προετρεψε να το σωσω ως xlsm λογω των μακροεντολων που περιεχονται.

Οταν ομως δοκιμασα να το ανοιξω ελαβα το ακολουθο μυνημα

Compile Error :
Method or data member not found

στο σημειο

If Me.cbodbTables.Text = vbNullString Then Exit Sub

μπορεις να δεις κ το συνημμενο αρχειο.

Επιπλέον για λόγους εμφανισης χρειάζομαι επιπλέον 2 Γραμμες πριν την γραμμη 6 και μια στηλη αναμεσα στις στηλες Β & C. Πρεπει να αλλαξει κατι στον κωδικα ?

Ευχαριστω Πολυ
Συνημένες Εικόνες
Τύπος Αρχείου: jpg PrtScreen.jpg (46,6 KB, 31 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη stelianta : 14-02-12 στις 20:40. Αιτία: Συνημμενο Αρχειο
Απάντηση με παράθεση
  #4  
Παλιά 14-02-12, 21:21
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Προφανώς δεν αναγνωρίστηκαν τα στοιχεία ελέγχου κατά τη μετατροπή από *.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  
Παλιά 15-02-12, 11:13
Όνομα: Στέλιος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-07-2011
Περιοχή: Αθήνα
Μηνύματα: 81
Προεπιλογή

Τασο σε ευχαριστω πολυ.

Εχω 3 παρατηρησεις :

1. Για να παιξει χρειαζεται να προσθεσεις στα references του Excel το
"Microsoft ActiveX Data Objects 2.5 Library"

2. Θα ηθελα κατα την ενημερωση , να αγνοει τα κενα κελια (μπορει ενας ανθρωπος να ξεκινησει να "παρακολουθειται" απο μια ημερομηνια κ μετα. Οποτε απο εκεινη την ημερομηνια κ πισω τα κελια ειναι ΚΕΝΑ.

3. Ενώ ακολουθησα τα βηματα που μου ειπες, (δηλαδη εσβησα και ξανδημιουργησα ολα τα στοιχεια ελεγχου) εξακολουθω να περνω το μυνημα λαθους που ανεφερα στο προηγουμενο ποστ μου.

Παρολα αυτα αν απλα κλεισω το παραθυρο της VBA, Η διαδικασία λειτουργει ΣΩΣΤΑ. Τουλαχιστον έτσι δειχνει.

4. Υπαρχει τροπος, σε *.xls (2003) να βγαλεις τον περιορισμο του πληθους των στηλών ?


Και πάλι Ευχαριστώ
Απάντηση με παράθεση
  #6  
Παλιά 15-02-12, 15:41
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλησπέρα!

Το αντικείμενο "Microsoft ActiveX Data Objects 2.x Library" (ADODB) φροντίζει για τη μεταφορά
δεδομένων από την Excel στην Access.
Μπορεί κανείς με μια τροποποίηση στον κώδικα (Late Binding) να το χρησιμοποιήσει και χωρίς την αναφορά στη VBA αλλά στην περίπτωση μας έχει γραφτεί έτσι που
πρέπει να φορτώνεται η βιβλιοθήκη αυτή κατά την εκκίνηση του αρχείου (συμβάλει στην απόδοση της εφαρμογής).

Το λάθος που περιγράφεις ενώ δεν μου το παρουσίασε στην 2007. Μου το παρουσίασε όμως στην 2010!

Η αιτία του κακού: Η ιδιότητα της πτυσσόμενης λίστας: Listfillrange

Σου στέλνω ένα αρχείο σε μορφή *.xlsm με κάποιες τροποποιήσεις στον κώδικα ώστε να μην προκαλείται σφάλμα κατά την εκκίνηση του αρχείου.

Το να εξαιρέσεις τα κενά κελιά από την ενημέρωση της βάσης μπορεί να έχει και επιπτώσεις ως προς την ορθότητα των δεδομένων σου στην Access.
φαντάσου να περάσεις κατά λάθος σε μια στήλη τα δεδομένα μιας άλλης...

Πως θα τα διορθώσεις αν έχουν ήδη περαστεί στην Access, αν δεν επιτρέψεις την ενημέρωση και των κενών κελιών στην Excel;

Εντάξει αυτό το φτιάχνεις με κάποιο τρόπο. Ωστόσο, γιατί πρέπει να υπάρχουν 2 προγράμματα για να γίνει η δουλειά αυτή;

Γιατί δεν τα κάνεις κατευθείαν στην Excel;

Δεν μπορείς να αυξήσεις τις γραμμές ή τις στήλες του υπολογιστικού φύλλου Excel σε οποιαδήποτε έκδοση Office.

Φιλικά

Τάσος
Συνημμένα Αρχεία
Τύπος Αρχείου: xlsm XL_ADO_Transferdata.xlsm (40,7 KB, 30 εμφανίσεις)
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #7  
Παλιά 15-02-12, 17:08
Όνομα: Στέλιος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-07-2011
Περιοχή: Αθήνα
Μηνύματα: 81
Προεπιλογή

Καλησπερα...

Ευχαριστω για τις διορθωσεις στον κωδικα, κ για το νεο αρχειο που ανεβασες. Οσον αφορα τις ερωτησεις σου...

Στην περιπτωση που ο χρηστης εντοπισει λαθος περασματα (Αν για παραδειγμα περασει τα δεδομενα μια στηλης σε μια αλλη), νομιζω πώς αυτο που εχει να κανει ειναι να διορθωσει την λαθος ημερα, κ να ενημερωσει την access μονο για την ημερα εκεινη.
Δεν ειναι προβλημα ομως να το λειτουργησω κ ετσι, μιας κ θα τις αποκλεισω μετα στα ερωτηματα που θα δημιουργησω στην access. Απλα για να μην γεμιζει η ΒΔ σκουπιδια ή αχρηστη πληροφορια.

Οσον αφορα γιατι χρησιμοποιω 2 προγραμματα, η απαντηση βρισκεται στο post #16 οπου περιγραφω το θεμα του project. Το συγκεκριμενο κομματι ειναι μερος μιας αρκετα μεγαλης κ πολυπλοκης εφαρμογης, της οποιας ο χειριστης, "εχει μαθει" μεχρι σημερα να δουλευει με αυτον τον πινακα του excel.

Τα υπολοιπα ομως γινονται στην access....
Απάντηση με παράθεση
  #8  
Παλιά 29-02-12, 10:13
Όνομα: Στέλιος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-07-2011
Περιοχή: Αθήνα
Μηνύματα: 81
Προεπιλογή

Αγαπητέ Τάσο Καλημέρα....

Καταρχην να σου πω οτι το προβλημα μου το εχω λυσει με τον τροπο που μου προτεινε ο Γιωργος (kapetang).

Προσπαθωντας ομως να προσαρμοσω και την δικη σου λυση, η οποια ειναι "βολικοτερη" για τους χρηστες, χρησιμοποιωντας το τελευταιο αρχειο που ανεβασες, έλαβα μυνηματα λάθους (οπως φαινεται στις συνημμενες εικονες)

Το λάθος το έπαιρνα οταν εδινα την διαδρομη του αρχειου.

Εχεις υποψη σου περι τίνος πρόκειτε ;

Ευχαριστω
Συνημένες Εικόνες
Τύπος Αρχείου: jpg prtscreen1.jpg (14,0 KB, 11 εμφανίσεις)
Τύπος Αρχείου: jpg prtscreen2.jpg (46,2 KB, 14 εμφανίσεις)

Τελευταία επεξεργασία από το χρήστη stelianta : 29-02-12 στις 10:15. Αιτία: Συνημμένα Αρχεία
Απάντηση με παράθεση
  #9  
Παλιά 29-02-12, 10:52
Το avatar του χρήστη Tasos
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα!

Αφαίρεσε τη γραμμή Me.cbodbTables.Text = ""

Παρέλειψα να τη διαγράψω κατά την τροποποίηση του αρχείου σε *.xlsm

Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση
  #10  
Παλιά 29-02-12, 13:59
Όνομα: Στέλιος
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 08-07-2011
Περιοχή: Αθήνα
Μηνύματα: 81
Προεπιλογή

Τασο σε ευχαριστω πολυ.

Δουλεψε τέλεια !
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός 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.