Hi phlux,
ist zwar schon eine Weile her, dass ich mit
ADO entwickelt habe, aber so oder ähnlich sollte es wohl heute auch noch gehen:
Zunächst connecten bzw. disconnecten(ggfs OLEDB Version anpassen)
Code:
function TDM1.mth_Connect (Filename : string) : boolean;
begin
try
queTable.Close;
conMain.Connected := false;
conMain.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.3.51;'+
'Data Source=' + Filename;
conMain.Connected := true;
result := true;
except
showmessage ('Problem bei der Auswahl der Datenbank');
result := false
end;
end;
procedure TDM1.mth_DisConnect;
begin
try
queTable.Close;
queSchema.Close;
conMain.Connected := false;
except
showmessage ('Problem beim Schließen der Datenbank');
end;
end;
Tabelle öffnen
Code:
function TDM1.mth_OpenTable(tblStr: string): boolean;
begin
try
with queTable do begin
if Active then Close;
FilterCriterion.AsString := '';
Filtered := false;
CommandText := tblStr;
Open;
end;
queTable.GetFieldNames(FieldList);
except
end;
end;
Tabelle in Liste einlesen (hier werden beispielhaft die Namen der in
Access gespeicherten Abfragen in eine Liste eingelesen)
Code:
function TDM1.mth_SetQueryList : boolean;
var
i : integer;
begin
QueryList.Clear;
with queSchema do begin
Close;
InfoType := adSchemaViews;
Filtered := false;
Open;
First;
while not EOF do begin
if queSchema['TABLE_NAME'] <> '' then
QueryList.Add(queSchema['TABLE_NAME']);
Next
end;
end;
result := (QueryList.Count > 0);
end;
Jetzt kann man sich eine allgemeine FileOpen Routine schreiben, die als Parameter eine *.mdb erwartet (incl. Pfad):
Code:
procedure TfrmMain.mth_FileOpen(FileName : string);
begin
if DM1.mth_Connect(FileName) then begin
if DM1.mth_SetQueryList then
// mach sonst noch was
else
showmessage('Tabelle konnte nicht eingelesen werden');
end else
showmessage('Datenbank konnte nicht geöffnet werden');
end;
Pass vielleicht nicht 100%ig auf Deinen Fall, hilft Dir aber hoffentlich etwas weiter.
gruß, harrybo