| |
VB & DatenbankenAccess 97 Datenbanken Tabelleninhalte kopieren | | | Autor: Tim.m | Datum: 22.12.04 15:56 |
| Hallo Zusammen,
ich habe ein kleines Problem.
Ich versuche aus einer Datenbank in eine andere Datenbank Tabellen zu kopieren. Es handelt sich hierbei um Access 97 Datenbanken.
Datenbank 1 ist die Quelldatenbank und beinhaltet auch Daten in den Tabellen, die Datenbank 2 liegt in der gleichen Struktur vor, jedoch befinden sich keine Daten in den Tabellen.
Wie in diesem Tipp http://www.vbarchiv.net/archiv/tipp_941.html kann ich leider nicht vorgehen, weil die Tabelle aus der DB1 nicht in die DB2 kopiert werden kann, solange diese noch vorhanden ist. Ich kann aber die Tabelle in der DB2 nicht löschen, weil in dieser Datenbank Queries beinhaltet und sonst die Verknüpfungen der Queries zu dieser Tabelle verloren gehen würden.
Gibt es also eine Möglichkeit eine Tabelle mit Daten in eine andere Datenbank mit der gleichen Tabelle jedoch ohne Daten einzufügen. Es müssen nur alle Daten der Tabelle übergeben werden.
Danke für Eure Hilfe. Frohe Weihnachten! | |
Re: Access 97 Datenbanken Tabelleninhalte kopieren | | | Autor: wincnc | Datum: 22.12.04 16:10 |
| Versuch´s mal so:
Con.Execute "INSERT INTO [C:\Ziel.mdb].ZielTabelle SELECT * FROM QuellTabelle" | |
Re: Access 97 Datenbanken Tabelleninhalte kopieren | | | Autor: Tim.m | Datum: 22.12.04 16:37 |
| Hallo wincnc,
vielen Dank für Deinen Tipp. Leider scheint bei mir irgendetwas nicht zu klappen.
Ich habe die Variable "con" als DAO.Database deklariert. Leider bekomme ich einen Laufzeitfehler 91 (Objektvariable oder With-Blockvariable nicht festgelegt) und ich weiß nicht woran es liegt. Ich kann auch den Code hier rein stellen, wenn es nötig ist. Vielen Dank. | |
Re: Access 97 Datenbanken Tabelleninhalte kopieren | | | Autor: wincnc | Datum: 22.12.04 16:47 |
| Falls Du damit nicht zurecht kommst poste mal Deine Code.
' Verweis auf Microsoft ActiveX Data Objects 2.x Library nicht vergessen !!!!
Dim Con As ADODB.Connection
Set Con = New ADODB.Connection
Con.CursorLocation = adUseClient
Con.Provider = "Microsoft.Jet.OLEDB.4.0"
Con.Open "C:\Quell.mdb"
Con.Execute "INSERT INTO [C:\Ziel.mdb].ZielTabelle SELECT * FROM QuellTabelle"
Con.Close
Set Con = Nothing | |
Mit DAO geht´s so | | | Autor: wincnc | Datum: 22.12.04 17:01 |
| Mit DAO:
' Verweis auf Microsoft DAO 3.51 oder DAO 3.6 Object Library nicht vergessen !!!
Dim Con As DAO.Database
Set Con = DBEngine.OpenDatabase("C:\Quell.mdb")
Con.Execute "INSERT INTO [C:\Ziel.mdb].ZielTabelle SELECT * FROM QuellTabelle"
Con.Close
Set Con = Nothing | |
Re: Mit DAO geht´s so | | | Autor: Tim.m | Datum: 22.12.04 17:08 |
| Vielen Dank, jetzt hast Du mich erst einmal beschäftigt.
| |
Re: Mit DAO geht´s so | | | Autor: Tim.m | Datum: 22.12.04 17:21 |
| Hallo wincnc,
es funktioniert zumindest die Abfrage aus der Quelldatenbank. Da beide Datenbanken Passwortgeschützt sind, habe ich das Passwort bei der Set Con Anweisung angehangen. Funktioniert, nur bei der INSERT INTO Anweisung bekomme ich das Passwort nicht an die Datenbankabfrage der Zieldatenbank. | |
Re: Mit DAO geht´s so | | | Autor: wincnc | Datum: 22.12.04 17:30 |
| Da kann ich Dir nicht mehr weiter helfen. Ich glaube nicht, daß das mit SQL geht.
Da wirst Du beide Datenbanken öffnen - und Datensatz für Datendatz kopieren müssen. | |
Es geht doch !! | | | Autor: wincnc | Datum: 22.12.04 17:53 |
| Wenn Du die Ziel MDB auch öffnest, dann geht´s !!
Dim Con As DAO.Database
Dim Con2 As DAO.Database
Set Con = DBEngine.OpenDatabase("C:\Quell.mdb", False, False, _
";pwd=DeinPassWort")
Set Con2 = DBEngine.OpenDatabase("C:\Ziel.mdb", False, False, _
";pwd=DeinPassWort")
Con.Execute "INSERT INTO [C:\Ziel.mdb].ZielTabelle SELECT * FROM QuellTabelle"
Con.Close
Con2.Close
Set Con = Nothing
Set Con2 = Nothing | |
Re: Es geht doch !! | | | Autor: Tim.m | Datum: 23.12.04 09:02 |
| Guten Morgen Wincnc,
vielen Dank für die ganze Hilfe! Es funktioniert wunderbar!
Ich hatte gestern Abend, weil ich nicht mehr Online war, an einer Zwischenlösung gearbeitet, die das Passwort der zweiten Datenbank zuerst entfernt und dann später wieder hinzufügt.
http://www.vbarchiv.net/archiv/tipp_455.html
Aber Deine Idee ist unschlagbar! Dir und Deiner Familie ein frohes Weihnachtsfest und alles Gute fürs neue Jahr 2005. | |
Hoffe das ist die letzte Frage zu diesem Thema... | | | Autor: Tim.m | Datum: 23.12.04 12:18 |
| Hallo wincnc,
ich habe dann doch nochmal eine Frage. Kann ich im folgenden String auch den Pfad der Ziel.mdb als Variable definieren? Hat ja nicht jeder eine Festplatte C:\
App.Path würde ja auch reichen. Vielen Dank.
Con.Execute "INSERT INTO [C:\Ziel.mdb].ZielTabelle SELECT * FROM QuellTabelle" | |
Re: Hoffe das ist die letzte Frage zu diesem Thema... | | | Autor: wincnc | Datum: 23.12.04 12:40 |
| Dim Datei As String
Datei = "[C:\Ziel.mdb]"
Con.Execute "INSERT INTO " & Datei & ".ZielTabelle SELECT * FROM QuellTabelle" | |
Das war es! | | | Autor: Tim.m | Datum: 23.12.04 12:47 |
| Du hast mir die Augen geöffnet!
Herzlichsten Dank!
Grüße Tim | |
Re: Hoffe das ist die letzte Frage zu diesem Thema... | | | Autor: wincnc | Datum: 23.12.04 12:47 |
| Oder so:
Dim Datei As String
Datei = "C:\Ziel.mdb"
Con.Execute "INSERT INTO [" & Datei & "].ZielTabelle SELECT * FROM QuellTabelle" | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|