Autor Beitrag
Miephos
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 20.03.03 12:32 
Ich wollte ein paar SQL-Anweisungen schreiben um den Ihnalt der Tabellen zu ändern: z.B.

ausblenden Quelltext
1:
2:
3:
INSERT INTO
 Kunden (Vorname,Name)
VALUES ('Stefan','Müller')


oder

ausblenden Quelltext
1:
2:
3:
UPDATE Mitarbeiter
 SET gehalt = gehalt + 150
 WHERE gehalt < 2000


aber jedesmal, wenn ich die Anweisung in einem Query starten will, kommt die Fehlermeldung ...Klasse ENoResultSet ... Meldung:'Fehler beim Erstellen des Cursor-Handle.' Ich habe alles ausprobiert, was mir eingefallen ist, aber nichts hat geholfen. Hat nicht jemand eine Lösung???

MfG Miephos
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Do 20.03.03 12:41 
poste doch bitte mal den kompletten code, also auch das davor und danach, was deine Query betrifft, den die SQL-Anweisungen an sich sehen erstmal fehlerfrei aus...
ao
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Do 20.03.03 12:46 
Hallo Miephos,

du musst den Query bei Insert's, Update's und Delete's statt mit der Methode Open mit der Methode ExecSQL ausführen.

Bsp:Query1.ExecSQL;

Gruß
Andreas
Miephos Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 20.03.03 15:02 
Ich habe deinen Tipp

ao hat folgendes geschrieben:
du musst den Query bei Insert's, Update's und Delete's statt mit der Methode Open mit der Methode ExecSQL ausführen.


ausprobiert und es scheint zu funktionieren, aber erst mit der ganz einfachen variante wie oben das Beispiel.

Der nächste schritt soll sein, einen Datensatz in einer Tabelle zu suchen und da einen Wert verändern, und fals der Datensatz nicht existiert einen neuen hinten anzufügen. Das bereitet mir noch Kopf zerbrechen.

MfG Miephos
kiwicht
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1021

Win 7, MacOS
Delphi x, VBA, PHP, ...
BeitragVerfasst: Do 20.03.03 16:48 
vielleicht so...

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
query.SQL.Text := 'SELECT * FROM dbank WHERE feld1 = "test"';
query.open;

if query.fieldbyname('feld1').AsString <> '' then
query.SQL.Text := 'UPDATE ... bla u.sw. ... wie oben halt'
else query.SQL.Text := 'INSERT etc. bla u.s.w auch wie oben';
query.execsql;


der Nachteil ist halt, das du vorher erst die SELECT-Abfrage durchführen musst, weil es innerhalb von SQL, meines Erachtens, keine Möglichkeite der IF-Abfrage (o.ä.) gibt..
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Do 20.03.03 16:53 
kiwicht hat folgendes geschrieben:

der Nachteil ist halt, das du vorher erst die SELECT-Abfrage durchführen musst, weil es innerhalb von SQL, meines Erachtens, keine Möglichkeite der IF-Abfrage (o.ä.) gibt..


IM SQL-Standard ist sowas leider nicht definiert, aber man hat immer noch die Möglichkeit das Ganze in einer Stored Procedure laufen zu lassen, is ein bisschen Delphi-ähnlich und bietet die meisten Sachen, die man so gebrauchen könnte. Ist aber wieder Lernaufwand und leider nur bei Interbase zu gebrauchen.

Gruß