![]() |
ADO connection string zur laufzeit verändern
ich hätte da mal eine frage: kann man die den ConnectionString einer ADO-Connection zur laufzeit verändern?
der string sieht ja in etwa so aus:
Code:
und ich möchte den user die Datenbank zur laufzeit ändern und aussuchen lassen. die frage ist nur: der opendialog liefert mir ja nur den pfad - kann ich den dann einfach der ADO-Connection zuweisen?
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Dokumente und Einstellungen\username\Eigene Dateien\Fussball EM\data.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
und wo ich schon dabei bin: könnte man den pfad dann auch speichern? so dass die datenbank nicht immerwieder neu aufgerufen werden muss. [edit=sakura] CODE Tags Mfg, sakura[/edit] |
Re: ADO connection string zur laufzeit verändern
Dann ist dieses Tutorial das richtige für Dich:
![]() |
Re: ADO connection string zur laufzeit verändern
danke für den link, aber irgendwie klappt das alles nicht so recht... ich habe mir überlegt, dass es eigentlich auch reichen würde, wenn das programm vor jedem start guckt, ob sich die datenbank im rootverzeichnis befindet, aber jetzt kriege ich beim öffnen einen fehler von wegen zugriffsverletzung bei adresse bla bla bla....
hier die prozedur:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin if DataModule1.ADOConnection1.Connected = false then try DataModule1.ADOConnection1.ConnectionString := GetCurrentDir+'data.mdb'; DataModule1.ADOConnection1.Open; showmessage(datamodule1.ADOConnection1.ConnectionString); except MessageDlg('Es befindet sich keine Datenbank im Programm-Verzeichnis!', mtError, [mbOK], 0); halt; //hier kommt der fehler end; |
Re: ADO connection string zur laufzeit verändern
Zitat:
Allerdings macht mich Dein ConnectionString etwas stutzig. Denn nur mit der Übergabe eines Verzeichnisses und der *.mdb allein ist es noch lange nicht getan. Das muß ja in einen Fehler laufen. Du hast doch oben selber einen kompletten ConnectionString gepostet... :gruebel: |
Re: ADO connection string zur laufzeit verändern
habe es auch 1:1 so übernommen wie es da steht, aber dann ging bei mir garnichts mehr. vielleicht sollte ichs nochmal versuchen... aber mich würde trotzdem intressieren wie meine variante denn jetzt funzt, habs ein bisschen umgeschrieben:
Delphi-Quellcode:
immer noch das gleiche...
DataModule1.ADOConnection1.ConnectionString
:= 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+GetCurrentDir +'data.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:Dont Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica' +'Repair=False;Jet OLEDB:SFP=False'; |
Re: ADO connection string zur laufzeit verändern
Setzt deinen ConnectionString mal im DesignModus über diese DialogBox und kopier ihn dir hinterher aus dem OI.
|
Re: ADO connection string zur laufzeit verändern
so, hab jetzt echt alles versucht... hab mich letztendlich dann doch für kevins variante entschieden - allerdings kommt jetzt beim starten der anwednung immer ein fehler:
Im Projekt fussball_em.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 004CDBAC in Modul 'fussball_em.exe'. Lesen von Adresse 00000058'. Prozess wurde angehalten. Mit Einzelen Anweisung oder Start fortsetzen. hm... ich kann damit nicht so viel anfangen, aber hier kommen die fehler:
Delphi-Quellcode:
function TDataModule1.OpenDatabase: Boolean;
begin OpenDatabase := true; //hier der erste try ADOConnection1.Open; except OpenDatabase := false; end; end;
Delphi-Quellcode:
das prgramm läuft zwar normal weiter danach, aber wüsste trotzdem gerne was das soll? könnte es vielleicht was mit der datenbank zu tun haben und den zugriffsrechten oder so...?
function TDataModule1.EditFussballEM_DSN(var DSN: string): Boolean;
begin EditFussballEM_DSN := true; if ADOConnection1.Connected = true then //und hier der zweite if CloseDatabase = false then begin EditFussballEM_DSN := false; exit; end; if EditConnectionString(ADOConnection1) = true then DSN := ADOConnection1.ConnectionString else EditFussballEM_DSN := false; end; |
Re: ADO connection string zur laufzeit verändern
Was machst du denn da? Einer Funktion einen Wert zuweisen??? Ähem, das wird folgendermaßen gemacht!
Delphi-Quellcode:
function TDataModule1.OpenDatabase: Boolean;
begin Result := true; try ADOConnection1.Open; except Result := false; end; end;
Delphi-Quellcode:
function TDataModule1.EditFussballEM_DSN(var DSN: string): Boolean;
begin Result := true; if ADOConnection1.Connected then //und hier der zweite if not CloseDatabase then begin Result := false; Exit; end; if EditConnectionString(ADOConnection1) then DSN := ADOConnection1.ConnectionString else Result := false; end; |
Re: ADO connection string zur laufzeit verändern
Zitat:
danke trotzdem! |
Re: ADO connection string zur laufzeit verändern
Hi Butterflyz,
was willst Du eigendlich? Eine ODBC-Verbindung oder ADO-Verbindug? ADO`mäßig ist es ganz Einfach, Du nimmst eine ADO-Connetction Componente; Füllst den Verbindungsassisenten aus, d.w. . Anstelle des Pfades im ConnectionString kannst Du auch jeden anderen gültigen String zu Deiner DB angeben. Getreu:
Delphi-Quellcode:
"Provider:=..., C:\MeineDatenBanken\Test\User.mdb,..." usw. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz