Autor Beitrag
Arne Danikowski
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Di 01.04.08 10:50 
Hallo,

ich würde gerne den Databasenamen der aktuellen ADO Connection in eine Variable abspeichern. Geht das?
ADOConnection.ConnectionString enthält ja alle Informationen. Ich komme irgendwie nicht an das DataSource
ran.
Obwohl die DataSource des ConnectionString ja eigentlich den ganzen Pfad enthalten müsste. Den brauch ich nicht
unbedingt. der Databasename würde mir reichen.
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Di 01.04.08 11:54 
Wenn du im Designer die Connection "zusammenklickst" und dir zur Laufzeit den ConnectionString mit z.B. einer MessageBox ausgeben lässt, dann siehst du ziemlich genau wies geht.

Edit: Wer lesen kann ist klar im Vorteil.
Mit ExtractFileName bekommst du den Filenamen aus einem kompletten Pfad.

Hast du im übrigen das mit dem Feldnamen MATCH nun hinbekommen? Bei mir ging das ohne Probleme...
Arne Danikowski Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 194



BeitragVerfasst: Di 01.04.08 17:41 
Danke für die Antwort.

Das mit dem Match hat einfach nicht funktioniert. Es kommt immer wieder zu dieversen Fehlermeldungen mit den ausgelesnen SQL Anweisungen. Aus zeitlichen Gründen habe ich die Lösung etwas umgebaut. Da ich ja die Datenbanknamen der DBASE Dateien kenne lege einfach per Access eine Dtaenbank mit den entsprechenden Tabellen an.
So kann ich zur Laufzeit die entsprechende Datenbank auswählen und die Daten kopieren. Das klappt auch so weit.

Aber zu diesem Thema, ich habe mit ja den Connectionstring zur Laufzeit in ein Memofeld eingelesen, da bekomme ich folgendes zurück:


ausblenden Quelltext
1:
Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source=V:\Programmieren\Delphi\KonvertLexikon\ARTIKEL.mdb;Mode=ReadWrite;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False					


Ich brauche nun den Wert für die Datasource. Eigentlich sogar ohne Pfad und schön wäre auch noch ohne Dateiendung.

der Befehl: ADOConnection.connectionstring.DataSource gibt es aber nicht.

Die Connection wird erst zur Laufzeit hergestellt.

Ich möchte halt vor dem Kopieren erst noch ne MessagesBox haben in der steht:

ausblenden Delphi-Quelltext
1:
'Wollen Sie..balaba die Daten der DBASE Datenbank' +(***Variable***) +'in die Access Datenbank' +' (***Variable***) +' kopieren ? +#10+#13 +'Achtung bla bla					


Also klick OK oder lass es bleiben so was in der Art. Nur die Connection zur Accessdatenbank kann eben varieren.

Moderiert von user profile iconKlabautermann: Delphi- & code-Tags eingefügt.
iKilledKenny
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 394
Erhaltene Danke: 8

Win XP
D5 Prof, C# Express 2005
BeitragVerfasst: Mi 02.04.08 09:40 
Du kannst doch nun mit String-Funktionen (Pos, Copy, etc.) den Data Source Teil aus dem String extrahieren...? Den Dateinamen aus dem kompletten Pfad bekommst du dann mit ExtractFilename.
Ydobon
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 42



BeitragVerfasst: Mi 02.04.08 17:25 
user profile iconArne Danikowski hat folgendes geschrieben:
der Befehl: ADOConnection.connectionstring.DataSource gibt es aber nicht.

Kann man so eigentlich nicht sagen. Der ConnectionString ist ja nur eine Abkürzung, um alles mit einem Rutsch einstellen zu könnnen, die Einzelwerte gibt es trotzdem. Das ganze mal als Einzeiler:
ausblenden Delphi-Quelltext
1:
ChangeFileExt(ExtractFileName(ADOConnection1.Properties['Data Source'].Value),'')