Hallo zusammen,
ich benutze bisher folgenden Code, um eine
Access-Datenbank anzulegen.
Delphi-Quellcode:
const
C_CONNECTION_STRING = '
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s';
....
//Datenbank erzeugen
if not SameText(LPath, '
')
then
begin
try
LCatalog := CreateOleObject('
ADOX.Catalog');
LConnectionString := Format(C_CONNECTION_STRING, [LPath]);
LCatalog.Create(LConnectionString);
LCatalog := Unassigned;
result := FileExists(LPath);
except
on e:
Exception do
begin
MessageDlg(LoadResString(@SCannotCreateDatabase), mtError, [mbOK], 0);
Result := false;
Exit;
end;
end;
end;
....
Dies funktioniert auch gut.
Jetzt wollte ich die erzeugte Datenbank mit einem Passwort versehen, damit man diese
Datenbank nicht in
Access öffnen kann.
Wenn ich den Connectionstring folgendermassen ändere
Delphi-Quellcode:
const
C_CONNECTION_STRING = 'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Jet OLEDB:Database Password="%s";' +
'Data Source=%s;' +
'Persist Security Info=True';
C_PASSWORD = '1234567890'
...
LCatalog := CreateOleObject('ADOX.Catalog');
LConnectionString := Format(C_CONNECTION_STRING, [C_PASSWORD, LPath]);
LCatalog.Create(LConnectionString);
...
bekomme ich dei Fehlermeldung
"Fehler bei einem aus mehreren Schritten bestehenden
OLE DB-Vorgang. Prüfen Sie die einzelnen
OLE DB-Statuswerte, falls vorhanden. Daten wurden nicht verarbeitet"
Was mach ich falsch?
Der Connectionstring sieht eigentlich richtig aus.
Hängt es vielleicht damit zusammen, das ich die Datenbank über ein
COM-Objekt erzeugen lasse?