Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Είσοδος δεδομένων απο Excel σε πίνακα της Access (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/108-eisodos-dedomenon-apo-excel-se-pinaka-tis-access.html)

Meteora 09-03-09 21:28

Είσοδος δεδομένων απο Excel σε πίνακα της Access
 
Καλησπέρα σε όλα τα παιδιά.
Σε κάποιο άλλο Topic και στο κεφάλαιο με τίτλο 'Μακροεντολές' ο Τάσος ανέπτυξε πως γίνεται η έξοδος ένος πίνακα σε αρχείο Excel.
Ωφελήθηκα -και απο αυτή- την ανάλυση και θέλω να τον ευχαριστήσω γι' αυτό.
Όμως ...
Θα ήθελα να γνωρίσω και την αντίστροφη διαδικασία! Δηλαδή πώς απο Excel 'φορτώνεις' δεδομένα σε υπάρχοντα πίνακα βάσης δεδομένων, μέσω VBA.
Ελπίζω να μη γίνομαι κουραστικός (χρήση της πλέον...ήπιας έκφρασης) με τις συνεχείς ερωτήσεις μου.

Με εκτίμηση
meteora

Tassos 10-03-09 07:52

Re: Είσοδος δεδομένων απο Excel σε πίνακα της Access
 
Αγαπητέ φίλε καλημέρα!

Η εισαγωγή δεδομένων σε υπάρχοντα πίνακα βάσης δεδομένων με VBA είναι σχετικά απλή αλλά προυποθέτει
το επιθυμητό φύλλο εργασίας ή περιοχή του βιβλίου Excel, να έχει ακριβώς την ίδια
δομή δεδομένων (μορφή, πλήθος, και ονόματα στηλών ) που έχει και ο πίνακας προορισμού στην Access.
Αφού τηρούνται οι παραπάνω προϋποθέσεις χρησιμοποιούμε τον παρακάτω κώδικα:

Κώδικας:

Function IMportFromXLsheet()
' Για να γίνει ο κώδικας πιο κατανοτός έχω προσθέσει και  _
 τα ονόματα των ορισμάτων της εντολής  "TransferSpreadsheet"

    On Error GoTo ErrH

      DoCmd.TransferSpreadsheet _
            TransferType:=acImport, _
            SpreadSheetType:=acSpreadsheetTypeExcel8, _
            TableName:="tbldata", _
            Filename:="C:\Data2Acc.xls", _
            HasFieldNames:=True, _
            Range:="Sheet2!A1:J10"

' ή  DoCmd.TransferSpreadsheet 0, 8, "tbldata", "C:\Data2Acc.xls", -1, "Sheet2!A1:J10" _
  (ειδικά αν πρόκειται να εκτελεστεί από κάποιο άλλο πρόγραμμα στα πλαίσια ενός αυτοματισμού).

IMportFromXLsheet_Exit:
    Exit Function
ErrH:
    MsgBox Err.Description
    Resume IMportFromXLsheet_Exit
End Function


To "tbldata" δηλώνει τον πίνακα προορισμού της Access.

To "Sheet2!A1:J10" δηλώνει την περιοχή του βιβλίου εργασίας προς εισαγωγή.

Αντί για Range:="Sheet2!A1:J10" μπορουμε ακόμα να χρησιμοποιήσουμε:

Range:="MyRange" δηλ. μια ονομασμένη περιοχή του βιβλίου εργασίας,

ΥΓ. Κάθε άλλο παρά κουραστικός είσαι φίλε μου!
Το φόρουμ οφείλει την ύπαρξη του σε σένα και στον καθέναν από μας!
Εξάλλου...η γνώση είναι για να μοιράζεται.

Φιλικά

kon73 10-03-09 12:05

Re: Είσοδος δεδομένων απο Excel σε πίνακα της Access
 
Καλησπέρα φίλε Meteora και φίλε Tassos.

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

Μπαίνοντας το λοιπόν στην ουσία της απάντησής μου η δυνατότητα να καταχωρούμε δεδομένα σε Excel και να ενημερώνεται η Access καθώς και το αντίστροφο να καταχωρούμε δεδομένα σε Access και να ενημερώνεται το Excel γίνεται με την επιλογή σύνδεση πινάκων. (Αρχείο – Λήψη εξωτερικών δεδομένων – Σύνδεση πινάκων) εδώ εμφανίζεται το Παράθυρο Σύνδεση – Αρχεία τύπου επιλέγουμε Microsoft Excel *.xls και βάσει αυτού του αρχείου εμφανίζεται ένας οδηγός τον οποίο και ακολουθούμε τις οδηγίες του. Η σύνδεση ολοκληρώνεται με την εμφάνιση σχετικού μηνύματος. Η τεχνική αυτή δίνει την δυνατότητα χωρίς να καλούμε καμία συνάρτηση να υπάρχει ενημέρωση στους συνδεδεμένους πίνακες.
Η επιλογή (Αρχείο – Λήψη εξωτερικών δεδομένων – Εισαγωγή) μεταφέρει τα δεδομένα στο πίνακα της Access.

Η παραπάνω διαδικασία μπορεί να γίνει με την χρήση κώδικα VBA όπως αναφέρει παραπάνω και ο Tassos. Με κώδικα μπορούμε να δούμε κάνοντας χρήση το docmd.TransferSpreadsheet acLink για σύνδεση αντί για import που προαναφέρθηκε.

Φιλικά

Iliadisk / kon73

Meteora 10-03-09 15:00

Re: Είσοδος δεδομένων απο Excel σε πίνακα της Access
 
Καλημέρα σε όλους σας

Κωνσταντίνε -στη παρούσα περίπτωση- ήθελα μια απάντηση όπως αυτή που παρουσίασε ο Τάσος. Βεβαίως, φίλε μου με τη δική σου συμμετοχή έδωσες και μια άλλη πτυχή πάνω στο ζήτημα της 'ανταλλαγής δεδομένων' μεταξύ Access και Excel...

Στην απάντηση του Τάσου -την οποία δοκίμασα! - έχω δυο - τρια σχόλια να κάνω :
α.
Παράθεση:

To "Sheet2!A1:J10" δηλώνει την περιοχή του βιβλίου εργασίας προς εισαγωγή
. Το Sheet2 ειναι το όνομα του φύλλου εργασίας, αυτό δηλαδή το όνομα που εμφανίζεται στην κάτω-κάτω σειρά και αριστερά στην οθόνη, όταν έχουμε μπροστά μας ανοιχτό το Excel.
β. Δοκίμασα να 'φορτώσω' δεδομενα απο Excel που είχε λιγότερα πεδία σε σχέση με αυτά που είχε ο πίνακας της Access. Το...πείραμα πέτυχε!
γ. Η παράμετρος
Παράθεση:

HasFieldNames:=True
είδα οτι έχει την εξής σημασία αν ειναι True : Η πρώτη γραμμή στην επιλεγμένη περιοχή του Excel απαιτείται να εμφανίζει τα ονόματα των πεδίων.
Τάσο αυτά τα σχόλια -προφανώς - δεν περιέχουν καμιά ...μομφή στην απάντησή σου, για την οποία θερμά σε ευχαριστώ.

Εύχομαι ένα καλό απόγευμα
Meteora

Tassos 10-03-09 15:36

Re: Είσοδος δεδομένων απο Excel σε πίνακα της Access
 
Νάσαι καλά φίλε μου!

Τα σχόλια του καθενός είναι πάντα ευπρόσδεκτα γιατί μέσα απ αυτά
όλο και κάτι θα αποκομίσουμε και .....πίστεψέ με δεν τελειώνουν ποτέ!

Πέραν από το ζητούμενο του μηνύματος σου, θα ήθελα να συμφωνήσω
με τον Κωνσταντίνο και αν μου επιτρέπετε να τονίσω ότι:

Στη VBA στρεφόμαστε μόνο όταν έχουμε εξαντλήσει όλες τις δυνατότητες
που μας παρέχει η Access που χρησιμοποιούμε.

Πιο σημαντικό όμως είναι η εξαρχής σωστή σχεδίαση του έργου (Project) της Access,
για να μη πέσουμε αργότερα σε αδιέξοδο και να
αναζητούμε ίσως ακραίες λύσεις προκειμένου να προχωρήσει το έργο μας.

Εξ ίσου σημαντική είναι η επιλογή του σωστού εργαλείου για την εκάστοτε εργασία μας πάνω στο έργο.

Καλό απόγευμα!

skapet155 10-04-12 23:07

Καλησπερα και Καλο Πασχα σε ολους.
Πως θα μπορουσα ενω βρισκομαι σε μια γραμμη του Excel 2003 ( με διπλο κλικ ) να στελνονται τα δεδομενα συγκεκριμενης περιοχης σε συγκεκριμενου αρχειου Φορμα της Access 2003 στην τελευταια εγγραφη.

Tasos 11-04-12 07:59

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

Θα ήταν πιο απλό να συνδέσεις πίνακα της Access με το φύλλο της Excel που περιέχει τα δεδομένα.
Κατόπιν με ένα ερώτημα στην Access θα μπορούσες με διάφορα κριτήρια να εμφανίζεις μόνο τις εγγραφές που σε ενδιαφέρουν.

Φυσικά μπορείς κάνοντας διπλό κλικ σε γραμμή ενός φύλλου Excel να μεταφέρεις τις τιμές των κελιών σε αντίστοιχα πεδία σε πίνακα της Access αλλά θα χρειαστεί VBA για να υλοποιηθεί.
Με αφορμή την ερώτηση σου δημιούργησα ένα σχετικό παράδειγμα εδώ:
http://www.ms-office.gr/forum/excel-...html#post10411


Φιλικά

Τάσος

skapet155 11-04-12 12:14

Καλημερα Τασο
Σε ευχαριστω που παντα βοηθας , θα το δω και τα ξαναλεμε

skapet155 16-04-12 19:54

2 Συνημμένο(α)
Καλημερα σε ολους κ Χρονια Πολλα .
Τασο το παιδεψα το παραδειγμα σου . Ειναι οτι ακριβως θελω , με την διαφορα οτι δεν μου λειτουργει στα δικα μου αρχεια. Και συγκεκριμενα , εχω το αρχειο Follow.xls στο οποιο εχω δημιουργησει ενα Φυλλο με ονομα grecian-connect , απο το οποιο θελω στο ενεργο κελι με διπλο κλικ να στελνει την εγγραφη των 56 στηλων και μονο αυτη στο αρχειο GRECIAN_2003.MDB και συγκεκριμενα στην φορμα CONTACT-Q
Εαν δε υπαρχει καi η δυνατοτητα ελεγχου για διπλοεγγραφη μονο για email ( πραγμα το οποιο ειναι λιγο δυσκολο , αφου η ΒΔ εχει αλλα πεδια , το ονομα το επιθετο σε διαφορετικο πεδιο ) θα ηταν τελειο αλλα οχι και αναγκαιο.
Επισης θα μπορουσε να γινει και το αντιστροφο απο την ΒΔ στο αρχειο xls ?

Ευχαριστω προκαταβολικα

Tasos 17-04-12 08:51

Καλημέρα!

Σταύρο, φρόντισε οι στήλες της Excel να ταιριάζουν στη διάταξη και στους τύπους δεδομένων με τα πεδία του πίνακα CONTAKT στην Access.
Μόνο το πρώτο πεδίο (id) πρέπει να παραμείνει ως έχει.
Τα ονόματα των πεδίων της Access δεν μας ενδιαφέρουν.

Αν υπάρχουν πεδία στον πίνακα της Access που δεν περιλαμβάνονται στις στήλες της Excel, μετακίνησε τα στο τέλος (μπορείς να το κάνεις αν ανοίξεις τον πίνακα CONTAKT σε προβολή σχεδίασης).

Κάνε τα παραπάνω, ανέβασε τα διορθωμένα αρχεία ξανά για να το προχωρήσουμε.

Φιλικά

Τάσος


Η ώρα είναι 09:27.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2