Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   Μεταφορές πινάκων από βάση σε βάση (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/3089-metafores-pinakon-apo-basi-se-basi.html)

parara 02-04-14 11:14

Μεταφορές πινάκων από βάση σε βάση
 
Γεια χαρά ,
γνωρίζει κανείς πως μπορώ να μεταφέρω πίνακες από μία βάση σε μία άλλη χωρίς να χαθούν οι μεταξύ τους σχέσεις.

Κατάφερα να μεταφέρω τους πίνακες (Import) αλλά όχι τις σχέσεις , με αποτέλεσμα όταν θέλω να επιστρέψω τους πίνακες πίσω στην αρχική βάση (export) να "χτυπάει λάθος" σ' αυτές που έχουν σχέσεις.


Καμιά ιδέα;

Meteora 03-04-14 21:01

Καλησπέρα.
Δημιούργησε τους πίνακες (χωρίς περιεχόμενο) και τις συνδέσεις στην εφαρμογή σου και απλά μετέφερε τα περιεχόμενα από τη βάση-πηγή στην προς χρήση βάση σου.
Αυτή τη τεχνική έχω χρησιμοποιήσει χωρίς πρόβλημα. Πρέπει όμως να προσέξεις να "φορτώσεις" αρχικά τους πίνακες με τα κύρια κλειδιά, αλλιώς θα δεχτείς "κλώτσημα"...

Με εκτίμηση
Νίκος

parara 04-04-14 08:57

Σωστή σκέψη
 
Καλημέρα ,
σωστή σκέψη. Θα το δοκιμάσω και θα δω. Τι γίνεται όμως στην περίπτωση που θέλω να προσθέσω ένα νέο πίνακα και να δημιουργήσω μια νέα σχέση με κάποιον άλλο από τους υπάρχοντες;
Σκεπτόμενος αυτό ζήτησα ιδέες ώστε να μπορώ να κάνω αντίγραφο των πινάκων και των σχέσεων.

parara 06-04-14 23:39

Κώδικας μεταφοράς
 
Νίκο έχεις κώδικα vba για μεταφορά δεδομένων πινάκων μιας βάσης , σε ίδιους πίνακες άλλης βάσης;

Meteora 07-04-14 11:58

Καλημέρα
...Βεβαίως, αλλά δεν είμαι σπίτι μου. Θα κάνω ανάρτηση μετά τις 8 μ.μ.
Τα ξαναλέμε λοιπόν!
Νίκος

parara 07-04-14 12:26

...........Tnx
 
Ευχαριστώ!!

Meteora 07-04-14 14:54

1 Συνημμένο(α)
Ο κώδικας που ακολουθεί βρίσκεται στη ενεργοποιημένη βάση (την τρέχουσα) εργασίας και με ένα κουμπάκι εκτελείται!

Κώδικας:

Private Sub btn_insert_dataClick()

    Dim fso
    Dim file As String
    file = "C:\mikapa\tbldeltio71.accdb"
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FileExists(file) Then
        MsgBox "Δεν εντοπίζεται το " & file, vbInformation, "Έλεγχος"
        Exit Sub
    Else
        MsgBox " Εντοπίστηκε το " & file, vbInformation, "Έλεγχος"
    End If

    Dim db As DAO.Database
    Dim ws As DAO.Workspace

    Dim strPath As String
    strPath = CurrentProject.FullName

    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase("c:\mikapa\tblDeltio71.accdb", False, False, "MS Access;PWD=8401")

    db.Execute "INSERT INTO tblSxolio IN '" & strPath & "' SELECT tblSxolio.* FROM tblSxolio;"
    db.Execute "INSERT INTO tblKatigites1 IN '" & strPath & "' SELECT tblKatigites1.* FROM tblKatigites1;"
    db.Execute "INSERT INTO tblKatigites2 IN '" & strPath & "' SELECT tblKatigites2.* FROM tblKatigites2;"
 
    '...  ακολουθούν και άλλες εντολές μεταφοράς πινάκων όμοιες με τις προαναφερόμενες

    db.Close

    Me.Requery
   
    MsgBox "Τα δεδομένα μεταφέρθηκαν !", vbInformation, "Έλεγχος"
End Sub

Παρατηρήσεις:
  • Η βάση - πηγή είναι η C:\mikapa\tbldeltio71.accdb
  • Οι πίνακες -όπως βλέπεις έχουν ίδιο όνομα και αυτό δεν είναι αναγκαίο!
  • Η έκφραση "MS Access;PWD=8401", αφορά την περίπτωση που η βάση-πηγή είναι κλειδωμένη με password to 8401
  • Μη ξεχάσεις τα Reference (Δες επισυναπτόμενο)
Δεν έχω κάτι πιο απλό...


Με εκτίμηση
Νίκος

parara 08-04-14 11:20

Τέλεια!!!
 
Το δοκίμασα δουλεύει θαυμάσια.
Πρόσθεσα στο τέλος και

sSource = "c:\update\esex.MDB"
sDest = "C:\dTest\esex.MDB"
FileCopy sSource, sDest

ώστε να μεταφέρω την αναβαθμισμένη έκδοση και τώρα μένει να μεταφέρω πάλι πίσω τα δεδομένα στους πίνακες. Φαντάζομαι ότι γίνεται με τροποποίηση του ίδιο κώδικα , έτσι.....

parara 18-04-14 13:14

Ευχαριστίες
 
Παρέλειψα να ευχαριστήσω.

Ευχαριστώ για τον κώδικα δουλεύει άψογα.


Η ώρα είναι 15:23.

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


Search Engine Optimization by vBSEO 3.3.2