Hallo
Wie oben geschrieben, habe ich auch mal was ähliches gemacht.
Läuft im Netzwerk ohne Probleme.
Zugegriffen wird auf eine
Access DB via
OLE (DAO.DBEngine.36)
Anbei einige Funktionen aus (z.T vereinfacht und geändert) aus meinem Programm.
Delphi-Quellcode:
const
DAOMSJet = 'DAO.DBEngine.36'; // 'DAO.DBEngine'
function GetDBName: string;
begin
Result := ExtractFilePath(Paramstr(0)) + 'MyDB.mdb';
end;
Delphi-Quellcode:
function TfrmX.OpenDB: Boolean;
begin
Result := False;
if FileExists(GetDBName) then
begin
FDao := CreateOleObject(DAOMSJet);
try
Fdbs := FDao.OpenDatabase(GetDBName);
Result := True;
except
FDao := Unassigned;
end;
end;
end;
Delphi-Quellcode:
procedure TfrmX.CloseDB;
begin
if not VarIsNull(FDbs) then
begin
Fdbs.Close;
Fdbs := Unassigned;
end;
end;
Delphi-Quellcode:
function PrepareSQL: string;
begin
Result := 'SELECT * FROM MyTable';
end;
Delphi-Quellcode:
function TfrmX.GetUsers: string;
var
rds: variant;
ss, SLQString: string;
begin
SLQString := PrepareSQL();
rds := Fdbs.OpenRecordset(SLQString);
try
while (not rds.EOF) do
begin
// ..
rds.MoveNext;
end;
finally
rds.Close;
rds := Unassigned;
end;
end;
Delphi-Quellcode:
procedure TfrmX.SaveDataToDB;
const
dbOpenTable = 1;
var
rds: variant;
begin
if OpenDB then
begin
Rds := Fdbs.OpenRecordSet('MyTable', dbOpenTable);
try
Rds.AddNew;
rds.fields['Date'].Value := FormatDateTime('dd.mm.yyyy hh:nn:ss', dtNow);
rds.fields['XYZ'].Value := ...
rds.Update;
finally
rds := Unassigned;
end;
CloseDB;
end;
end;