Transfer einer Access DB

07/11/2008 - 14:59 von Thilo Graf | Report spam
Hallo NG,
ich möchte zu regelmàßigen Zeitpunkten eine Tabelle einer bestimmten
AccessDB in eine andere AccessDB kopieren. Dies soll über eine
Konsoleanwendung die vom Zeitplandienst ausgeführt wird geschehen.
Meine Frage:
muss das zwingend über ein Dataset erfolgen? Also AccessDB ausfmachen,
Tabelle einlesen, andere AccessDB aufmachen, dorthin schreiben?

Ich habe eine einfache Lösung um von Access in Excel zu schreiben
gefunden:
Dim AccessConn As New
System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;"
& "Data Source=data.accdb")
AccessConn.Open()
'New sheet in Workbook
Dim AccessCommand As New System.Data.OleDb.OleDbCommand("SELECT *
INTO [Excel 8.0;DATABASE=Book11.xls;HDR=NO;].[Sheet7] from
[tblTabelle]", AccessConn)

AccessCommand.ExecuteNonQuery()
AccessConn.Close()

allerdings bekomme ich diese Konstrukt nicht mit Access als Ziel zum
laufen.

Viele Grüße
Thilo
 

Lesen sie die antworten

#1 Peter Götz
07/11/2008 - 16:43 | Warnen spam
Hallo Thilo,

ich möchte zu regelmàßigen Zeitpunkten eine Tabelle
einer bestimmten AccessDB in eine andere AccessDB
kopieren.



Das kannst Du mit

"SELECT QuellTabelle.* " & _
"INTO ZielTabelle " & _
"IN 'ZielDB' From QuellTabelle"

QuellTabelle liegt in der akt. geöffneten *.mdb.

ZielTabelle wird in der *.mdb, deren vollst.Pfad
Du für ZielDB (z.B. 'D:\DataBase\DB2002cpy.mdb')
angibst, neu angelegt und mit den Daten aus der
QuellTabelle befüllt.

Wenn Du Datensàtze aus einer QuellTabelle
in eine bereits vorhandene ZielTabelle einer anderen
DB kopieren möchtest, dann mit

"Insert Into Zieltabelle " & _
"IN ZielDatenbank " & _
"SELECT * From QuellTabelle"

Dies soll über eine Konsoleanwendung die vom
Zeitplandienst ausgeführt wird geschehen.
Meine Frage:
muss das zwingend über ein Dataset erfolgen?



Nein, dazu brauchst Du kein DataSet.
Du erstellst eine Connection zur Quell-DB
und ein CommandObjekt mit einem der oben
gezeigten SQL-Statements und führst diesen
Command dann mit

Cmd.ExecuteNonQuery

aus.


Also AccessDB ausfmachen,



Ja.

Tabelle einlesen,



Nix einlesen!

andere AccessDB aufmachen,



Nix aufmachen, die "andere DB" steht im SQL-Statement
für Dein CommandObjekt.

dorthin schreiben?



Einfach Cmd.ExecuteNonQuery() ausführen.

Ich habe eine einfache Lösung um von Access in Excel
zu schreiben gefunden:
Dim AccessConn As New
System.Data.OleDb.OleDbConnection
("Provider=Microsoft.ACE.OLEDB.12.0;"
& "Data Source=data.accdb")
AccessConn.Open()
'New sheet in Workbook
Dim AccessCommand As
New System.Data.OleDb.OleDbCommand
("SELECT * INTO [Excel 8.0;DATABASE=Book11.xls;
HDR=NO;].[Sheet7] from [tblTabelle]", AccessConn)

AccessCommand.ExecuteNonQuery()
AccessConn.Close()

allerdings bekomme ich diese Konstrukt nicht mit Access
als Ziel zum laufen.



Na ja, "DATABASE= Book11.xls" deutet ja auch nicht
auf eine Access.mdb hin, s.SQL-Statements oben.

Gruß aus St.Georgen
Peter Götz
www.gssg.de (mit VB-Tipps u. Beispielprogrammen)

Ähnliche fragen