Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datenexport von Firebird nach Access über ZEOS (https://www.delphipraxis.net/156108-datenexport-von-firebird-nach-access-ueber-zeos.html)

waldforest 20. Nov 2010 09:07

Datenbank: Firebird • Version: 2.1 • Zugriff über: Zeos

Datenexport von Firebird nach Access über ZEOS
 
Hallo,
ich nutze in meiner Application Firebird 2.1 und die Zeos-Komponenten.

Nun bin ich aber gefordert, einige Tabellen aus meiner Application nach ACCESS zu exportieren und komme da nicht wirklich weiter.
Idealer Weise würde ich dieses gerne über einen SQL-Befehl veranlassen, allerdings funktioniert dies nicht

hier mein Ansatz

INSERT INTO neueAccessQuery SELECT * FROM FireBirdQuery


Nach Excel habe ich bisher die JEDI´s genutzt, allerdings eine Komponente für ACCESS-Export gibt es nicht.

Bummi 20. Nov 2010 09:22

AW: Datenexport von Firebird nach Access über ZEOS
 
Ich kenne mich leider weder mit Zeos noch mit Firebird aus, wenn Du den Umweg über Zeos >Oberfläche/Satzwiese> Ado nicht gehen willst, gibt es vielleicht eine Möglichkeit die Firebird Tabellen in eine Hilfsaccessdatenbank per ODBC einzubinden und dann per ADOCommand in der Art

PseudoCode:
Delphi-Quellcode:
insert into ZielDB.Tabelle Select * from HilfsDB.Tabelle
zu übertragen.

mkinzler 20. Nov 2010 10:47

AW: Datenexport von Firebird nach Access über ZEOS
 
Oder auch per ADO auf Firebird zugreifen oder in Delphi die Daten von einem ins andere DataSet schieben

waldforest 20. Nov 2010 15:40

AW: Datenexport von Firebird nach Access über ZEOS
 
Hallo,
ich komme trotzdem nicht weiter.
Ich habe die FirebirdDB über Zeos firebirdd-2.1, die Access über Zeos ADO Protokoll angebunden

Code:
FireBirdQuery.Active := True;
 conAccess.Connected := True;
  with zqryAccessDB do
  begin
    Active := False;
    SQL.Clear;
    SQL.Text := 'INSERT INTO Access_Table from FireBirdQuery';
    ExecSQL;
   end;
zqryAccessDB.Active := False;
conAccess.Connected := False;
Es erscheint die Fehlermeldung, dass FireBirdQuery.mdb nicht gefunden wird. Kann ja auch nicht, da es eine Tabelle aus der FB-Datenbank ist.

Wo ist mein Gedankenfehler ?

mkinzler 20. Nov 2010 15:44

AW: Datenexport von Firebird nach Access über ZEOS
 
Kann so auch nicht gehen. CrossDatabase-Queries funktionieren nur in ADO.

waldforest 13. Feb 2011 09:33

AW: Datenexport von Firebird nach Access über ZEOS
 
Hallo,
ich habe mein altes Problem noch einmal ausgegraben.

Nun habe ich den ODBC-Treiber für Firebird installiert,
so dass ich die Acess, und die Firebird beide über ODBC (ZeosQuery / ADO) verbunden habe.

Die Verbindungen zu den einzelnen Querys funktionieren, die Daten können in einem Grid sauber dargestellt werden.

Nun möchte ich die Daten der FirebirdDB in Access über einen SQL-Befehl importieren.

Code:
 FirebirdQuery.Active := True;
 conAccess.Connected := True;
 with AccessQuery do
  begin
    Active := TRUE;
    SQL.Clear;
    SQL.Text := 'INSERT INTO ACC_Table (art, name) SELECT art, name from FirebirdQuery';
    ExecSQL;
   end;
Erhalte aber eine OleException
Obwohl nun beide DAtenbanken über ODBC verbunden sind wird die Firebird beim Import nicht gefunden.


Microsoft[ODBC Microsoft Access Driver] Das Microsoft Jet Datenbankmodul findet die Eingangstabelle oder die Abfrage 'FirebirdQuery' nicht. Stellen Sie sicher, dass sie existiert und der Name richtig geschrieben wurde.


Ich verstehe nicht, warum diese Exception erscheint.
Hat jemenand keine Idee, was hier faklsch sein könnte ?

Sir Rufo 13. Feb 2011 10:03

AW: Datenexport von Firebird nach Access über ZEOS
 
Weil du gerade ein Telefonkonferenz mittels 2 Telefonen machst.
Und nun wunderst du dich, dass der an Tel1 nicht versteht was der an Tel2 sagt.
Du hörst doch alles, dann müssten die doch auch alles hören.

Du musst die Werte schon selber von A nach B durchreichen, denn die Query wird ja direkt auf dem DBMS ausgeführt und dann kannst du auch nur das benutzen was da bekannt ist.
Alles dort Unbekannte musst du mitliefern.

jobo 13. Feb 2011 10:57

AW: Datenexport von Firebird nach Access über ZEOS
 
Ich hab auch kein Firebird und kein Zeos, aber ich stelle mir das so vor:

Du nimmst eine Access.mdb (mglw. gleich die Ziel DB),
dort kommt per ODBC eine Tabellenverknüpfung zur Firebird Quelltabelle rein.

Dann baust Du direkt in Access (mit Hilfe des Assistenten) die Insert Abfrage, nimmst Dir die SQL Anweisung und verwendest die dann in Delphi.

In Delphi brauchst Du für diesen Schritt nur eine ADOConnection via Access/ Jet Engine zu der Access DB von oben und eine ADOQuery für das SQL Statement, kein Firebirdzugriff, das soll die Jet Engine machen.

Könnte funktionieren.

mschaefer 13. Feb 2011 11:27

AW: Datenexport von Firebird nach Access über ZEOS
 
Für die BDE gibt es eine Möglichkeit mehrere BDE-Aliases zu definieren und die dann direkt in der SQL anzusprechen. Das Durchreichen der Werte ist damit nicht erforderich. Laut Hilfe gibt es auch sowas für ADO, aber ich finde im Moment kein Beispiel dafür. Die Stichwörter zum Suchen sind "supports heterogeneous queries". Bei mir ist jetzt allerdings "Computer ShutDown".

Grüße in die Runde

Piethan 13. Feb 2011 11:49

AW: Datenexport von Firebird nach Access über ZEOS
 
Hi,

ich würde hier wie folgt vorgehen. Die Source auslesen und zeilenweise an deine AccessDB weiterreichen,
praktischer weise solltest du auch die Daten prüfen z.B. mit RegExpr und nur die importieren welche richtig
sind.

Delphi-Quellcode:
while not fbDataSet1.Eof do
begin
  try
    dtsAccess.fieldByName('NAME').asstring:=fbDataset1.FieldByName('NAME').AsString;
    dtsAccess.Post;
    fbDataset1.Next;
  finally
   
  end;
end;
LG
Dirk


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:00 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz