Autor Beitrag
accessViolation
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 68

Win
Delphi 5 Enterpr.
BeitragVerfasst: Mo 18.09.06 13:45 
Hallo zusammen!

Ich möchte eine Software schreiben, die über ODBC/ADO auf eine Datenbank zugreift.
Der Datenbankzugriff an sich ist für mich kein Problem. Allerdings will ich nicht alle Parameter vorher festlegen. Denn das Programm soll auf verschiedenen Rechnern/Datenbanken eingesetzt werden, d.h., jeder Benutzer soll zur Laufzeit den Provider/Datenbankserver/Datenbanknamen in einem Dialogfeld auswählen können.

Mir fallen dazu zwei Dinge ein:

1. Ich bräuchte eine Komponente, die mir eine Auflistung von Providern, Servern und vorhandenen Datenbanken liefert. Dann könnte ich den Benutzer auswähen lassen und mir einen ConnectionString basteln, den ich dann dem ADOConnection-Objekt zuweise.

2. Wenn ich die AdoConnection im "Objektinspektor" habe, bei "ConnectionString" doppeklicke und dann bei "Verbindungs-String erstellen" auf Erstellen klicke, erscheint doch das allseits bekannte Dialogfeld "Datenverknüpfungseigenschaften". Ist dies nicht ein Windows-Standard-Dialogfeld, das ich auch selbst aus meiner Anwendung heraus aufrufen kann? Und das mir vielleicht einen Connection-String zurückliefert? Diesen könnte ich dann meinem AdoConnection-Objekt zuweisen.

Wie würdet ihr das machen?
Ich bitte um ein paar Tips ;)

Viele Grüße
Dietmar
accessViolation Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 68

Win
Delphi 5 Enterpr.
BeitragVerfasst: Di 19.09.06 09:22 
Hallo...

inzwischen bin ich weitergekommen.
Durch
ausblenden Delphi-Quelltext
1:
ShellExecute(Self.Handle, 'open', PChar('meinedatei.udl'), 0, 0, SW_SHOWNORMAL);					

rufe ich meine .UDL-Datei auf, wodurch sich das Fenster "Datenverknüpfungseigenschaften" öffnet.

Dabei passiert das gleiche, wie wenn ich unter Start-->Ausführen
rundll32.exe "c:\Programme\Gemeinsame Dateien\System\Ole DB\oledb32.dll" OpenDSLFile meinedatei.udl
ausführe.

Siehe hier: www.codeguru.com/vb/...e/article.php/c5139/

Aber kann ich irgendwie den Connection-String, der von dem Fenster zurückgegeben wird, auffangen?
Wenn ich bei Delphi im Objektinspektor bei ADO-connection den Connection-String zuweise, kommt ja auch dieses Dialogfeld, und es wird keine existierende .udl-Datei benötigt.

Könnte mir hier jemand nen Tip geben?

Viele Grüße
Dietmar
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: Di 19.09.06 09:45 
Hallo,

um den Connection-Editor vernünftig nutzen zu können musst Du folgendes machen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
uses ADOConEd; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ADOConnection1.Connected:=EditConnectionString(ADOConnection1); 
end;

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
espen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90
Erhaltene Danke: 1


D6 Prof./D7 Prof. MSSQL, MySQL
BeitragVerfasst: Di 19.09.06 12:09 
Oder So:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);  
var
  strCon : String;
begin
  strCon := PromptDataSource(Handle, ''); // In Unit ADODB
  if strCon <> '' then
  begin
    ADOConnection1.ConnectionString := strCon
  end;
end;
accessViolation Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 68

Win
Delphi 5 Enterpr.
BeitragVerfasst: Di 19.09.06 12:49 
Danke Euch beiden, funktioniert!