Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie kann ich mit SQL und DAO Engine auf Access zugreifen? (https://www.delphipraxis.net/2649-wie-kann-ich-mit-sql-und-dao-engine-auf-access-zugreifen.html)

FlatG 31. Jan 2003 10:18


Wie kann ich mit SQL und DAO Engine auf Access zugreifen?
 
Ich habe eine Access Datenbank und in Delphi einen fertigen HTTP Server, der nun über DAO auf die besagte Access Datenbank zugreifen soll

Code:
# ... #

const
  db_open_table = 1;
  db_open_dynaset = 2;
  db_open_snapshot = 4;

# ... #

var
  Form1: TForm1;
  dbengine: variant;
  db: variant;
  Workspace: variant;
  Stream: TStringStream;
  RequestInfo: TIdHTTPRequestInfo;

  T_Test_HttpServer: variant;
  T_Test: variant;
  T_Test_Login: variant;

# ... #

procedure Test_Prozedur(Stream:TStringStream);
var
  SQL: String;
  rs: variant;

begin

####### SQL ABFRAGE FUNKTIONIERT NICHT #######
  SQL := 'Select * From T_Test_Tabelle';
  rs := db.OpenRecordset(SQL, db_open_dynaset);
  rs.findfirst := 'ID_Test_Login = test';
  rs.edit;
  rs.Bemerkung.value := 'geänderte Daten';
  rs.update;

####### DIESE ABFRAGE HINGEGEN SCHON ########
        if not (T_Test_Tabelle.eof and T_Test_Tabelle.bof) then begin
           T_Test_Tabelle.movefirst;
           while not T_Test_Tabelle.eof do begin

              T_Test_Login.seek('=', T_Test_Tabelle.fields[1].value);
              if not T_Test_Login.nomatch then begin

                 Stream.WriteString('[url="' + requestinfo.Document + '?login=' + ToString(T_Test_Login.fields[0].value) + '"]' + ToString(T_Test_Login.fields[3].value) + '[/url]');
                 T_Test_Login.movenext;
              end;

           T_Test_Tabelle.movenext;
           end;
        end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  try
    dbengine := CreateOleObject('DAO.DBEngine.36');
  except
    dbengine := CreateOleObject('DAO.DBEngine.351');
  end;

  Workspace := dbengine.CreateWorkspace('', 'Admin', '', 2);
  db := workspace.opendatabase('D:\Pfad\test.mdb);

  T_Test_HttpServer := db.openrecordset('T_Test_HttpServer', 1);
  T_Test := db.openrecordset('T_Test_Tabelle', 1);
  T_Test.Index := 'ID_Test_Tabelle';
  T_Test_Login := db.openrecordset('T_Test_Tabelle', 1);
  T_Test_Login.Index := 'ID_Test_User';
end;

# ... #
Bei # ... # habe ich Code ausgelassen

Die zweite markierte Datenbank Abfrage funktioniert, ich würde nur viel lieber mit SLQ Statements arbeiten, weil ich mich da ein bisel besser auskenne (grundsätzlich jedoch absoluter newbie, delphi seit paar tagen gesehen)

Die erste SQL Abfrage (markiert im Code) funktioniert halt nicht, obwohl ich, glaube ich, zur Datenbank connected bin, muss doch, wieso funktioniert denn die andere Abfrage sonst?

Kann mir jemand weiterhelfen, wäre super nett!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz