Insert INTO - Copiare tabella da un altro database

di il
6 risposte

Insert INTO - Copiare tabella da un altro database

Ciao a tutti,

dovrei scrivere un codice che mi consenta di copiare la tabella di un database (db2 che si trova nella stessa cartella del mio database aperto) nella medesima tabella del mio database attualmente aperto.
Ho inserito delle msgbox per essere sicuro che il percorso del file sia corretto in effetti nelle msgbox mi viene restituito C:\Desktop\db2.accdb

ma quando il codice arriva all'ultima riga mi da l'errore Impossibile trovare file C:\Documenti\oldfile

Dove sbaglio? Tra l'altro posso capire che sbaglio qualcosa nella sintassi ma Documenti da dove salta fuori se il mio file è in Desktop?

Grazie

"
Private Sub Form_Load()
Dim oldfile As String, dbsOld As DAO.Database
oldfile = Application.CurrentProject.path & "\db2.accdb"
MsgBox (oldfile)
If EsisteFile(oldfile) Then
Dim answer As Integer, strSQL As String
answer = MsgBox("Do You want to copy Records from old Database?", vbQuestion + vbYesNo + vbDefaultButton2, "Copy Data")
If answer = vbYes Then
Set dbsOld = OpenDatabase(oldfile, False, False, ";pwd=xxx")
MsgBox (dbsOld.Name)
dbsOld.Execute "INSERT INTO Tabella1 Select * From Tabella1 IN '' [;DATABASE=oldfile;PWD=xxx];"

6 Risposte

  • Re: Insert INTO - Copiare tabella da un altro database

    Per come hai scritto il Costrutto SQL l'errore non può restituirti nemmeno il PATH... in quanto la Variabile [oldfile] all'interno della stringa NON PUO' essere risolta in quel modo.

    ERRATO:
    
    dbsOld.Execute "INSERT INTO Tabella1 Select * From Tabella1 IN '' [;DATABASE=oldfile;PWD=xxx];"
    GIUSTO
    
    dbsOld.Execute "INSERT INTO Tabella1 Select * From Tabella1 IN '' [;DATABASE=" & oldfile & ";PWD=xxx];"
    Perchè non fai DEBUG del costrutto SQL prima di lanciarlo...?
    Spero tu chiuda anche i salti Condizionati... If...End If...
  • Re: Insert INTO - Copiare tabella da un altro database

    Ciao,

    si naturalmente non avevo postato tutto il codice, alla fine chiudo tutto (spero)

    Con il tuo codice non ho piu errori pero' alla fine la tabella del mio database risulta vuota, i record dell'altra tabella non vengono copiati.
    
    Private Sub Form_Load()
    Dim oldfile As String, dbsOld As DAO.Database
    oldfile = Application.CurrentProject.path & "\db2.accdb"
    MsgBox (oldfile)
    If EsisteFile(oldfile) Then
    Dim answer As Integer, strSQL As String
    answer = MsgBox("Do You want to copy Records from old Database?", vbQuestion + vbYesNo + vbDefaultButton2, "Copy Data")
            If answer = vbYes Then
            Set dbsOld = OpenDatabase(oldfile, False, False, ";pwd=xxx")
            MsgBox (dbsOld.Name)
           dbsOld.Execute "INSERT INTO Tabella1 Select * From Tabella1 IN '' [;DATABASE=" & oldfile & ";PWD=xxx];"
           answer = MsgBox("Copy Complete, Do you Want to delete the old database?", vbQuestion + vbYesNo + vbDefaultButton2, "!!!Delete File!!!")
           If answer = vbYes Then
           Kill (oldfile)
           MsgBox ("File DELETED")
           Form_NewContract.Refresh
           End If
            End If
             Form_NewContract.Refresh
    End If   
    End Sub
    
  • Re: Insert INTO - Copiare tabella da un altro database

    2 Considerazioni...

    1) Il tuo codice andrebbe messo in Transazione
    2) Hai guardato bene cosa stai facendo...? Istanzi il DB OLD e gli copi i dati dallo stesso DB...
    Secondo me l'execute va fatto tra 2 Source differenti...!

    Quindi, se vuoi ESPORTARE in un Database Rmoto [DB_OLD] dati del Database in cui stai Operando [DB_ATTUALE]:
    CurrentDb.Execute "INSERT INTO T1 IN '' [;DATABASE=C:\DB_OLD.accdb;PWD=myPassword] SELECT * FROM T1;"
  • Re: Insert INTO - Copiare tabella da un altro database

    Ciao Alex,
    grazie per la correzione ora funziona
    Non ho mai utilizzato questo comando e sto provando a capirci qualcosa.

    Ho scritto cosi', per importare da un database remoto a quello attualmente in uso
    CurrentDb.Execute "INSERT INTO Tabella1 Select * From Tabella1 IN '' [;DATABASE=" & oldfile & ";PWD=xxx];"
  • Re: Insert INTO - Copiare tabella da un altro database

    Ciao, vorrei fare una modifica al mio codice, ma non so se esiste un comando per quello che necessito.
    In pratica vorrei che quando copio i campi dalla tabella di un database all'altro, vada a copiare solo i campi che hanno lo stesso nome. Quindi se su la nuova tabella mancano dei campi, passi al campo successivo.

    E' possibile qualcosa del genere?

    Grazie
  • Re: Insert INTO - Copiare tabella da un altro database

    fabionik2004 ha scritto:


    E' possibile qualcosa del genere?
    (quasi) Tutto è possibile.
    Da affrontare però in un thread nuovo. Spiega bene ma soprattutto mostra il codice che stai usando ora.
Devi accedere o registrarti per scrivere nel forum
6 risposte