Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankanbindung Fastreport3 (https://www.delphipraxis.net/83880-datenbankanbindung-fastreport3.html)

ratloser 7. Jan 2007 21:51

Datenbank: MSDE und ACCESS • Zugriff über: ADO

Datenbankanbindung Fastreport3
 
Hallo!

Hab mal wieder ein Problem!

Ich hab eine kleine Applikation geschrieben und möchte mit Fastreport ein Auswertung machen.

Folgendes Problem:

Die Applikation soll Daten aus zwei Fremdprogrammen auswerten, beide Datenbanken bestehen und sind fix.

Eine Applikation hat eine große Datenbank - MSDE.

In der zweiten Datenbank - ACCESS - sind nun Suchkriterien, die sich auf die MSCE-Datenbank beziehen.

Wie kann ich in Fastreport die Datenbanken MSCE und ACCESS verknüpfen - ich finde derzeit keinen Weg, jeweils die Datenbank alleine - no problem - Daten filtern funzt ebenso in beiden getrennt, aber wie kann ich eine SQL-Anweisung schreiben, dass die Daten in der SQL-Datenbank auf Grund von Einträgen in der ACCESS-Datenbank gefiltert werden.

Danke für Eure Hilfe.

LG

Ratloser

uwewo 8. Jan 2007 07:06

Re: Datenbankanbindung Fastreport3
 
Dir wird wohl nichts anderes übrig bleiben, dich mit beiden DB's zu verbinden, die Suchkriterien abzufragen und dann eine Query auf die andere DB bzw. Tabelle ausführen.

Die Query übergibst Du dann Fastreport.

Uwe

alzaimar 8. Jan 2007 07:13

Re: Datenbankanbindung Fastreport3
 
Wie stellst du dir denn die "unmögliche" SQL-Anweisung vor? So etwa?

SQL-Code:
Select * From SQLSERVER..Tabelle1 Join ACCESS..Tabelle2 ....
Wenn Die Anzahl der Eigenschaften aus z.B. Access limitiert ist, dann kannst du dir die Filterkriterien aus Access ziehen und die Tabelle im SQL-Server über den 'IN' Operator rausholen. Dazu bastelst Du dir einen (vielleicht ziemlich langen) String, der die einzelnen Items durch Komma getrennt enthält (so: s := '1,2,3,4') und bepselst ihn dann in deine SQL-Anweisung mit Format:

Delphi-Quellcode:
MySelect := Format ('Select * From SQLServerTabelle Where Field in (%s)',[s]);
Das ergibt dann die Anweisung

SQL-Code:
Select * From SQLServerTabelle Where Field in (1,2,3,4)
Wobei die '1,2,3,4' ja aus der Access-Tabelle kommen.

Wenn allerdings die Access-Tabelle vom SQL-Server aus sichtbar ist, dann lies mal in der SQL-Server Hilfe über 'OPENROWSET' nach, denn das öffnet eine externe Tabelle per ADO. Dieses OPENROWSET liefert quasi eine Tabelle, mit der Du dann ganz normal auf dem SQL-Server arbeiten kannst, so etwa:

SQL-Code:
Select * 
  from OPENROWSET (...) alias MyAccessTable
    Join MyTable
      on MyAccessTable.AccessField = MyTable.MSDEField


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.

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