Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Operation muss eine aktualisierbare Abfrage verwenden? (https://www.delphipraxis.net/9233-operation-muss-eine-aktualisierbare-abfrage-verwenden.html)

Gambit 21. Sep 2003 13:25


Operation muss eine aktualisierbare Abfrage verwenden?
 
Hallo!

Ich bekomme beim Versuch in eine Tabelle zu schreiben folgende Fehlermeldung im IEExlorer:

"Operation muss eine aktualisierbare Abfrage verwenden"

Wie muss ich denn das verstehen?

Es handelt sich hier um eine ISAPI und ich wollte folgendes verwenden:

Delphi-Quellcode:
with ADODataSet1 do begin
          Close;
          CommandText:= 'INSERT INTO `tbl_blah` '+
                        '(`blahNr`, `blahblahNr`)'+
                        ' VALUES '+
                        '( '''+ UserProfile.UserId +''', '''+blahStr+''')';

          Open;
Was muss ich denn ändern? Brauch ich noch ne Update Anweisung?

Gruß

Gambit

Sharky 21. Sep 2003 14:21

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Hai Gambit,

das geht mit einem ADODataSet nicht.

Zitat:

Zitat von OnlineHilfe (AKA F1)
Die Datenmenge wird mit Hilfe der Eigenschaft CommandText des TADODataSet-Objekts abgerufen. Weisen Sie dieser Eigenschaft den betreffenden Tabellennamen oder eine SQL-Anweisung (nur SELECT) zu. Mit der Datenmengenkomponente können nur DDL-Befehle (Data Description Language = Datendefinitionssprache) ausgeführt werden, die eine Ergebnismenge zurückliefern. Für SQL-Anweisungen wie DELETE, INSERT und UPDATE sind Komponenten wie TADOCommand oder TADOQuery besser geeignet.

Du must deine Insert, Update Anweisungen also mit ADOQuery machen.

Gambit 21. Sep 2003 14:34

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Aha! Danke!

Gambit

Gambit 21. Sep 2003 14:42

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Hmm, habe das ADODataSet durch eine ADOQuery ersetzt, bekomme aber die gleiche Meldung....

Gruß

Gambit

Sharky 21. Sep 2003 14:50

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Zitat:

Zitat von Gambit
Hmm, habe das ADODataSet durch eine ADOQuery ersetzt, bekomme aber die gleiche Meldung....

Zeige mal den Code.

Gambit 21. Sep 2003 15:01

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Also im Moment sieht er so aus:

Delphi-Quellcode:
with ADOQuery1 do begin
          //Close;
          SQL.Text := 'INSERT INTO tbl_reserv '+
                        '(''KundenNr'',''FilmNr'')'+
                        ' VALUES '+
                        '('''+UserProfile.UserId+''', '''+FilmStr+''')';

          ExecSQL;
          //Open;
        end;
Gruß

Gambit

Sharky 21. Sep 2003 15:03

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Hmmm....

Sieht eigentlich ganz gut aus.
Hast Du es auch mal mit Open/Close versucht?

Aber einen Fehler sehe ich auf den ersten Blick nicht :oops:

Gambit 21. Sep 2003 15:11

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Ja, habe ich. Meine aber irgendwo gelesen zu haben, dass man das hier eigentlich nicht brauch. Kann es sein, dass die Datenbank nicht im wwroot Verzeichnis bzw in einem Unterverzeichnis darin liegen darf?
Soll ja ne Client-Server Anwendung werden. Oder darf man da gar kein TADOQuery benutzen? Ist übrigens ne Access DB.

Gruß

Gambit

MrSpock 21. Sep 2003 22:01

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Hallo Gambit,

bei einem INSERT Statement muss man wie in deinem letzten Codeschnipsel immer mit ExecSQL und nicht mit Open arbeiten.

Du kannst mit Access keine Client / Server Anwendung erstellen, da Access wie Paradox eine Desktopdatenbank ist. Sie sind zwar beide netzwerkfähig, sind aber keine SQL Server wie z.B. Interbase oder Oracle.

In deinem SQL Statement dürfen die Feldnamen nicht in Anführungszeichen stehen. Werte dürfen nur dann in Anführungszeichen (einfache!) gesetzt werden, wenn es Strings sind.

Delphi-Quellcode:
SQL.Text := 'INSERT INTO tbl_reserv '
+'(KundenNr, FilmNr)'
+' VALUES '
+'('+UserProfile.UserId +','
+ FilmStr+')';

Gambit 22. Sep 2003 16:06

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Tach,

mal abgesehen, dass die Syntax falsch war und es jetzt läuft(Danke!), warum kann ich denn keine Webserveranwendung schreiben, die serverseitig auf eine Access Datenbank zugreift?

Also funzen tut das auf jeden Fall recht gut...

Gruß

Gambit

MrSpock 22. Sep 2003 20:45

Re: Operation muss eine aktualisierbare Abfrage verwenden?
 
Hallo Gambit,

ich habe Client / Server Anwendung als Datenbankanwendung verstanden, die einen Datenbank Server benutzt. Wenn du mit einem Webserver lokal auf eine Desktop Datenbank zugreifst, kann das natürlich funktionieren. Ich wollte nur erklären, das Access kein Datenbankserver ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 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 by Thomas Breitkreuz