Entwickler-Ecke
Datenbanken - ADO Databasename in String
Arne Danikowski - Di 01.04.08 10:50
Titel: ADO Databasename in String
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 - 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 - 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:
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:
Delphi-Quelltext
1:
| 'Wollen Sie..balaba die Daten der DBASE Datenbank' + +'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
Klabautermann: Delphi- & code-Tags eingefügt.
iKilledKenny - 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 - Mi 02.04.08 17:25
Arne 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:
Delphi-Quelltext
1:
| ChangeFileExt(ExtractFileName(ADOConnection1.Properties['Data Source'].Value),'') |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!