Einzelnen Beitrag anzeigen

FlatG

Registriert seit: 31. Jan 2003
21 Beiträge
 
Delphi 5 Professional
 
#1

Wie kann ich mit SQL und DAO Engine auf Access zugreifen?

  Alt 31. Jan 2003, 10:18
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!
  Mit Zitat antworten Zitat