Entwickler-Ecke

Datenbanken - Probleme mit Connection String zur Laufzeit


Arne Danikowski - Fr 28.03.08 17:20
Titel: Probleme mit Connection String zur Laufzeit
Ich bin dabei ein kleines Tool zu erstellen, mit dem man DBASE Dateien in Access Datenbanken importieren kann.

Über eine ViewList liste ich alle gefundenen Access Datenbanken aus. Nun möchte ich mit einem Doppelklick auf eine beliebig gefundenen Access Datenbank
die Connection zur Datenbank herstellen.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.FoundFiles1DblClick(Sender: TObject);
begin
  suchverzeichnis:=DirectoryEdit2.text;
  ChDir(suchverzeichnis);

   if FoundFiles.Selected <> nil then
      begin
           with FoundFiles.Selected do
           accessdata:=FoundFiles.Selected.Caption;
           ADOConnection1.Connected:=false;
           ADOConnection1.ConnectionString :=
           'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+accessdata +';Persist Security Info=False';
           ADOConnection1.Connected:=true;
   end;



Die Variable accessdata scheint leer zu sein. Ist der obengenannte Code so OK?


Xion - So 30.03.08 14:23

die with ... do zeile ist soweit ich sehe sinnfrei ;)

versuche doch mal, als Source den Pfad+AcessData anzugeben


Arne Danikowski - Di 01.04.08 18:02

Stimmt die with...do Zeile war völlig SINFREI :)
Kommt vom copy Paste hehe.

Aber ich konnte das Problem lösen, die Connection zur einer MDB ist nicht ganz so simpel wie ich gedacht hatte.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
  public
  function EditMeineAnwendungDSN(var DSN: string): Boolean;
  function GetMeineAnwendungDSN: string;
  function SetMeineAnwendungDSN(DSN: string): Boolean;

implementation

function TDataModule2.EditMeineAnwendungDSN(var DSN: string): Boolean;
begin
  EditMeineAnwendungDSN:=true;
  if ADOConnection1.Connected=true then
    if CloseDatabase=false then begin
      EditMeineAnwendungDSN:=false;
      exit;
    end;
  if EditConnectionString(ADOConnection1)=true then
    DSN:=ADOConnection1.ConnectionString
  else
    EditMeineAnwendungDSN:=false;
end;

function TDataModule2.GetMeineAnwendungDSN: string;
begin
  GetMeineAnwendungDSN:=ADOConnection1.ConnectionString;
end;

function TDataModule2.SetMeineAnwendungDSN(DSN: string): Boolean;
begin
  SetMeineAnwendungDSN:=true;
  if ADOConnection1.Connected=true then
    if CloseDatabase=false then begin
      SetMeineAnwendungDSN:=false;
      Exit;
    end;
  ADOConnection1.ConnectionString:=DSN;
end;


Damit habe ich das dann hinbekommen.