Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Abfrage auf verscheidene DB (https://www.delphipraxis.net/130481-sql-abfrage-auf-verscheidene-db.html)

jangbu 9. Mär 2009 11:04

Datenbank: SQL-Server 2000 • Zugriff über: BDE

SQL Abfrage auf verscheidene DB
 
Hallo,

ich brauche aus Delphi eine SQL-Abfrage auf verschiedene DBs auf verschiedenen SQL-Servern (Master-Detail)
Vereinfacht etwa so:

Delphi-Quellcode:
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.ADD('SELECT A.Auftrag,A.Kunden_nr,K.Kunde FROM AUFTRAG A,Kunde K where A.Kunde = ''Mueller'');
  Query1.Open;
Da sich beide benutzte Tabellen in verschiedenen Datenbanken befinden, muss ich irgendwie den Alias bzw. Datenbanknamen mit übergeben, blos wie?
Ich arbeite mit einer Datasource, die ich aber einer DB zugordnet habe. Datasource mit 2 DB's???


Danke jangbu

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

Bernhard Geyer 9. Mär 2009 11:09

Re: SQL Abfrage auf verscheidene DB
 
Du mußt im MS SQL Server einen Link auf die andere DB einrichten.

Ist die andere DB auch ein MS SQL Server oder evtl. nur eine ander DB auf dem gleichen Server?

jangbu 9. Mär 2009 11:20

Re: SQL Abfrage auf verscheidene DB
 
Hallo,

es sind beides MS-SQL. Da die verwendete Datasource "einer" DB zugewiesen ist funktioniert das nicht mit Datasource. Ich müsste also irgendwie die Datenbank(name/alias) mit in den SQL-String einbauen:

select .. DB1.TabelleA, DB2.TabelleB

jangbu

nahpets 9. Mär 2009 11:24

Re: SQL Abfrage auf verscheidene DB
 
Hallo,

schau mal bitte hier: http://www.ms-office-forum.net/forum...d.php?t=141727

jangbu 9. Mär 2009 12:42

Re: SQL Abfrage auf verscheidene DB
 
Danke nahpets,

war schon irgendwie klar, nur hat die Syntax nicht gepasst (..DB1.Tabelle1 :( => ..[DB1].dbo.[Tabelle1] :-D ). Danke jetzt passt's!

jangbu

Bernhard Geyer 9. Mär 2009 12:53

Re: SQL Abfrage auf verscheidene DB
 
Zitat:

.DB1.dbo.Tabelle1
... sollte reichen. Klammern [...] sind nur bei ungünstigen Namen nötig (Leerzeichen, ...)

jangbu 9. Mär 2009 14:23

Re: SQL Abfrage auf verscheidene DB
 
Das klappt noch nicht!
Die Daten werden in einem DBGrid angezeigt. Das DBGrid hängt an einer DataSource und dieses wiederum an der Query. Der Query muss jedoch "eine" DB (DatabaseName) zugeordnet werden. Hier liegt das Problem: da sich die in der Query abgefragten Felder in verschiedenen DB befinden.

Ich kann mich drehen und wenden die (Delphi)Query sieht entweder die Felder der einen oder der anderen DB.
Delphi-Quellcode:
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.ADD('SELECT A.Auftrag,A.Kunden_nr,K.Kunden_name FROM AUFTRAG.dbo.AUFT A, Kunde.dbo.Knd K where A.Kunde = K.Knr);
  Query1.Open;
Wie meinst Du das mit dem Link auf den anderen SQL-Server?

Danke
jangbu

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

nahpets 9. Mär 2009 14:47

Re: SQL Abfrage auf verscheidene DB
 
Hallo,
Zitat:

Zitat von jangbu
Wie meinst Du das mit dem Link auf den anderen SQL-Server?

das ist in dem von mir oben geposten Link im Post #5 nachzulesen.
Durch diesen Link wird der Datenbank, in der der Link eingerichtet wird, eine Datenbank auf einem anderen Server bekannt gemacht, mit der Folge, dass der Zugriff auf den zweiten Datenbankserver vom ersten Datenbankserver gemacht wird. Dadurch ist für die Anwendung nicht zu sehen, dass sie eigentlich auf mehrere Datenbanken auf unterschiedlichen Server zugreift. Daher benötigts Du in Deiner Query auch nur einen DatabaseName und zwar den der Datenbank, auf der der Link eingerichtet wurde.

jangbu 11. Mär 2009 15:47

Re: SQL Abfrage auf verscheidene DB
 
sorry, bin erst jetzt wieder da. Habe direkt mit dem Enterprice Manager auf einem SQL-Server einen anderen als Verbindungsserever eingerichtet. Dabei mehrer Varianten ausprobiert Servertyp (Microsoft OLE Provider for SQL-Server mit Providerstring bzw. direkt nur über Angabe des Servernamens). Egal wie, ich sehe immer nur die Tabellen der master-db? Warum sehe ich nicht "meine" Datenbanken? Was muss ich tun damit ich auch die anderen DB sehe?

Danke jangbu


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr.

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