Einzelnen Beitrag anzeigen

Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#4
  Alt 4. Dez 2002, 20:58
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
Harry Boldt
  Mit Zitat antworten Zitat