Entwickler-Ecke

Datenbanken - Query Abfrage über 2 verschiedene TDatabase mit Passworten


Rehauge - Di 27.08.02 10:17
Titel: Query Abfrage über 2 verschiedene TDatabase mit Passworten
Database1 hat einen festen Alias und in Database1 wird der Alias gewechselt je nach bedarf. Der Zugriff benötigt ein Login, das in der Database hinterlegt ist.

Die Abfrage in der Qry habe ich auf verschiedener weise probiert.

Versuch1: Konnte keine Verbindung herstellen.

Quelltext
1:
2:
3:
4:
5:
SELECT DISTINCT ....
FROM ":Database1.DatabaseName:Tabelle1" T1, ":Database1.DatabaseName:Tabelle2" T2
WHERE
 ...
ORDER BY ....

Fehlermeldung: Unbekannte Tabelle oder Korrelationsname :(

Habe ich etwas am Code falsch eingegeben :? ??

Versuch2: Wollte das Passwort haben aber nur einmalig.

Quelltext
1:
2:
3:
4:
5:
SELECT DISTINCT ....
FROM ":Alias1:Tabelle1" T1, ":Alias2:Tabelle2" T2
WHERE
 ...
ORDER BY .... :


Quelltext
1:
2:
3:
4:
5:
procedure TDtMdlRechungssatz.QryBeforeOpen(DataSet: TDataSet);
begin
Session.AddPassword('....');
Session.AddPassword('....');
end;


Fehler: Er kann auf den zweiten alias nicht zugreifen, da eine zweite Passwortabfrage nicht erfolgt. Rechner hängt sich auf :x .

Wie kann ich es umgehen das die Passwortabfrage kommt und das zweite Passwort zuweissen :?: ???

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


a.C.k - Di 27.08.02 10:28

setze doch die Eigenschaft "loginPromt" auf False. Dann solte keine Passwortabfrage mehr kommen.


Zu 1:
gebe doch den Tabellennamen oder den Pfadnamen zu deiner Tabelle an.

SELECT DISTINCT ....
FROM 'c:\....\tabelle1.db T1, ":c:\...\Tabelle2.db' T2
WHERE
...
ORDER BY ....

Vieleicht hilft es ja was ;)


Rehauge - Di 27.08.02 10:46

a.C.k hat folgendes geschrieben:
setze doch die Eigenschaft "loginPromt" auf False. Dann solte keine Passwortabfrage mehr kommen.


Zu 1:
gebe doch den Tabellennamen oder den Pfadnamen zu deiner Tabelle an.

SELECT DISTINCT ....
FROM 'c:\....\tabelle1.db T1, ":c:\...\Tabelle2.db' T2
WHERE
...
ORDER BY ....

Vieleicht hilft es ja was ;)


Über das Modul TDatabase ist das loginpromt ist schon auf False.
Ich kann über die Qry.SQL.TString nicht auf das Datadbase1.DatabaseName zugreifen und über Qry.DatabaseName kann ich bloß eine Database zuweisen, ich brauche aber zwei.
Ich Arbeite mit Delphi 5.

Trotzdem Danke


bis11 - Di 27.08.02 10:51

Und haste das schonmal probiert ?


Quelltext
1:
Qry.SQL.Add('SELECT DISTINCT ... FROM' + QuotedStr(Database1.DatabaseName) + ',' + QuotedStr(Qry.DatabaseName) + 'WHERE ... ORDER BY ..';                    


Rehauge - Di 27.08.02 13:50

bis11 hat folgendes geschrieben:
Und haste das schonmal probiert ?


Quelltext
1:
Qry.SQL.Add('SELECT DISTINCT ... FROM' + QuotedStr(Database1.DatabaseName) + ',' + QuotedStr(Qry.DatabaseName) + 'WHERE ... ORDER BY ..';                    



Damit komme ich auch nicht weiter, da die Aneisung so addiert wird
Qry.SQL.Add(' SELECT DISTINCT ... ');
Qry.SQL.Add(' FROM ":Aliasame1:Table1" T1, ":Aliasname2:Table1" T2 ');
Qry.SQL.Add(' WHERE ... ORDER BY ..');


Aliasame1 und Aliasame2 sind in der DBE-Verwaltung eingerichtet.

Database1.DatabaseName wird im Programm vergeben und bekommt einen Alias aus der DBE-Verwaltung zugewiesen.
Das Login für die Datenbank kann auch zugewiesen werden über die Parameter:
USER NAME=...
PASSWORD=....

Das Problem liegt darin, das ein dierektes Einschreiben in den SQL TString der DatabaseName vom Objakt TDatabase nicht erkannt wird und im Objektinspektor nur ein DatabasName zugewiesen werden kann.
Verwendet man in der Qry Verschiedene Aliasnamen, die in der DBE-Verwaltung vergeben worden sind, ohne Passworter gibt es keine Probleme. :(