Hallo Jürgen,
ich habe da wohl etwas falsch gelesen.
So wie Du beschreibst geht das natürlich.
Allerdings funktioniert es nicht gut wenn die zu editierenden Daten ein anderes (komplizierteres) gemeinsames Merkmal haben als nur der Inhalt des Feldes "Interpret".
Schöner wäre für mich wenn ich das mit einem UPDATE machen könnte.
Dazu habe ich folgende Infos gefunden:
Die Meldung "Fehler beim Erstellen des Cursor-Handle" kommt nach etwas googlen wohl durch die generelle Verwendung des Befehl TQuery.Open bei der Ausführung der SQL-Statements.
Dieser Befehl ist jedoch nur für SQL-Statements mit einem SELECT korrekt. (Diese liefern Datensätze zurück)
Bei "ändernden" Statements z.B. UPDATE, INSERT, ... muß anstelle von TQuery.Open der Befehl TQuery.ExecSQL verwendet werden.
Wie ich schon geschrieben habe funktioniert ein UPDATE ja, doch es kommt die o.g. Meldung.
Du könntest diese Fehlermeldung amS abfangen indem Du den Text in dem, das SQL-Statement enthaltenden, TMemofeld nach dem Wort
"SELECT" parst und anhand dem Vorhandensein entscheidest welchen Befehl Du benutzt.
s.auch z.B.:
http://www.delphicorner.f9.co.uk/articles/comps2.htm
>>
{=========================================================================
This is a very simple routine that will determine which route to take with
respect to executing the SQL query. It gives the component a bit of
intelligence, so the user need only use one call. Essentially, it looks
at the first line of the query; if it finds the word SELECT, then it
knows to call OpenProc, which will open the query and perform a batch move.
=========================================================================}
procedure TEnhQuery.Execute;
begin
if (SQL.Count > 0) then
if DoBatchMove then {Check to see if a batch move is desired}
if (Pos('SELECT', SQL
) > 0) then
if (DestinationTable <> '') AND (DestDatabaseName <> '') then
try
DoEnhQueryOpen;
except
raise Exception.Create('Enhanced Query DoEnhQueryOpen procedure did not execute
properly. Aborting');
Abort;
end
else
MessageDlg('You must supply a Destination Table and DatabaseName', mtError, [mbOK], 0)
else
Open
else
try
ExecSQL;
except
raise Exception.Create('ExecSQL did not execute properly. Aborting');
Abort;
end
else
MessageDlg('You have not provided any SQL to execute' + #13 +
'so there is nothing to process. Load the' + #13 +
'SQL property with a query', mtError, [mbOk], 0);
end;
<<
Gruß und ein schönes Wochenende
Chris