Announcement

Collapse
No announcement yet.

wie erstelle ich gespeicherte Abfragen in Access ???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • wie erstelle ich gespeicherte Abfragen in Access ???

    Hallo Herr Kosch, besteht die Möglichkeit mit den ADO-Komponenten gespeicherte Abfragen in Form von "SELECT * FROM XXXXX" zu erstellen die anschließend auch in Access unter dem TabSheet Abfragen angezeigt und bearbeitet werden können ??? Wenn ja, wie müssen die Befehle in Delphi 5 geschrieben werden.

    USES ADOX; // ACCESS 2000
    ADOXCatalog.Create1('Provider=Microsoft.Jet.OLEDB. 4.0;Data Source=new.mdb')

    oder

    USES ADOX; // ACCESS 97
    ADOXCatalog.Create1('Provider=Microsoft.Jet.OLEDB. 3.51;Data
    Source=new.mdb')

    Wie muß die Syntax zur o.g. Problemlösung lauten ???

  • #2
    Hallo,

    ich bin kein guter Kenner von MS ACCESS (sondern mache eher einen grossen Bogen darum), daher kann ich auch nur ein Beispiel für das Erzeugen von Datenbanken und Tabellen liefern. Normalerweise sollten sich in jeder "guten" Datenbank die einzelnen Objekte über SQL anlegen lassen, so das man nach dem Erzeugen der leeren Datenbank nur noch ein Verbindung herstellen muss, um SQL-Anweisungen abzusetzen.

    Eventuell schaut hier jemand vorbei, der genaueres zum Abspeichern von ACCESS-Abfragen beitragen kann.
    <pre>
    uses ADOX_TLB;

    resourcestring
    cCONNECTSTRING = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';

    procedure TFormMain.ButtonCreateClick(Sender: TObject);
    var
    aCatalog : _Catalog;
    aTable : _Table;
    aColumn : _Column;
    sDBPath : String;
    sDS : String;
    begin
    MemoLog.Lines.Clear;
    sDBPath := EditMDB.Text;
    if FileExists(sDBPath) then
    begin
    DeleteFile(sDBPath);
    MemoLog.Lines.Add(Format('Datenbankdatei %s gelöscht',[sDBPath]));
    end;
    aCatalog := CoCatalog.Create;
    MemoLog.Lines.Add('Catalog...');
    sDS := aCatalog.Create(Format('%s%s',[cCONNECTSTRING, sDBPath]));
    MemoLog.Lines.Add(sDS);
    aTable := CoTable.Create;
    MemoLog.Lines.Add('Table...');
    aTable.ParentCatalog := aCatalog;
    aTable.Name := 'Kunden';
    aCatalog.Tables.Append(aTable);
    aColumn := CoColumn.Create;
    MemoLog.Lines.Add('Column...');
    with aColumn do
    begin
    Name := 'KdnName';
    Type_ := adVarWChar;
    ParentCatalog := aCatalog;
    Attributes := adColNullable;
    aColumn.DefinedSize := 30;
    Properties['Jet OLEDB:Allow Zero Length'].Value := True;
    Properties['Description'].Value := 'Name des Kunden'
    end;
    aTable.Columns.Append(aColumn.Name, adVarWChar, 0);
    MemoLog.Lines.Add('Spalte 1 hinzugefügt...');
    // Alternative 2: Spalte direkt deklarieren
    aTable.Columns.Append('eMail', adVarWChar, 20);
    MemoLog.Lines.Add('Spalte 2 direkt hinzugefügt...');
    aTable.Columns.Refresh;
    MemoLog.Lines.Add('.... Fertig!');
    end;
    </pre&gt

    Comment

    Working...
    X