Seite 1 von 3

Illegal operation on emty result set

Verfasst: Mi, 19.05.2010 19:36
von nahemoth
Hi,

ich möchte per Formular einen Datensatz zu einer Tabelle hinzufügen, nur 2 Felder, nichts ungewöhnliches. Im Hintergrund läuft ein SQL-Server der dann via Trigger aus einem Feld die md5-Summe erstellt und das Feld dadurch ersetzt ... funktioniert auch, wenn ich via sql-Statement einen Datensatz anlege. Wenn aber über ein Formular ein Datensatz angelegt werden soll, kommt der Fehler Illegal operation on emty result set, der Datensatz wird aber trotzdem angelegt.
Was soll mir diese Meldung sagen ? und wie kann ich sie abstellen ;-)

Thx!

Re: Illegal operation on emty result set

Verfasst: Mi, 19.05.2010 23:27
von AndreasJBittner
Hi,

na lies Deine Fehlermeldung doch mal. Du versuchst eine Operation auf einer leeren (empty ... set) Menge. Offenbar macht Dein Formular etwas Anderes als Dein SQL-Statement.

Grüße
Andreas

Re: Illegal operation on emty result set

Verfasst: Do, 20.05.2010 08:36
von nahemoth
hm, aber ich habe ein ganz normales formular zur dateneingabe erstellt, und ich habe das auch schon mit dem asisstenten wiederholt, aber immer der selbe fehler.
und er fügt die datensätze ja der tabelle hinzu, dessahlb wundert mich ja die fehlermeldung.

Re: Illegal operation on emty result set

Verfasst: Fr, 21.05.2010 00:50
von DPunch
Aloha

Zu dem Thema (bzw. der Fehlermeldung) gibt es bei Google einiges zu finden - ich würde also empfehlen, dort mal Ausschau zu halten.
Es ist zumindest meines Wissens nach kein Base-spezifischer Fehler, insofern wird Dir hier mit diesen spärlichen Informationen sowieso niemand helfen können.
Dazu fehlen einfach die Details (welches DBMS, Fehler auch ohne md5, Datentyp etcetc)

Re: Illegal operation on emty result set

Verfasst: Fr, 21.05.2010 13:10
von nahemoth
also, google habe ich bereits befragt ... keine zu verwertende antwort erhalten, sonst hätte ich das problem warscheunlich schon gelöst.
am md5 kann es nicht liegen, da der string als varchar an mysql übergeben wird und dort dann via trigger md5-codiert wird.
Ich kann in Base einen Datensatz anlegen, wenn ich die tabelle öffne und eben die daten eingebe, dann funktioniert es ohne Fehler.
nur eben nicht über ein Formular.

Re: Illegal operation on emty result set

Verfasst: Fr, 21.05.2010 16:42
von DPunch
Aloha
nahemoth hat geschrieben:Ich kann in Base einen Datensatz anlegen, wenn ich die tabelle öffne und eben die daten eingebe, dann funktioniert es ohne Fehler.
Selbstverständlich.
Da Du in der Tabelle nicht auf Basis eines Result Sets arbeitest, im Gegensatz zu einem Formular, kann es dort diese Fehlermeldung logischerweise auch nicht geben.

Angesichts Deiner Aussage, dass der Datensatz trotz der Fehlermeldung angelegt wird, wäre meine erste Vermutung:
Der Trigger doktort an einem Key rum.
Der Datensatz wird vom Result Set in die Datenbank geschrieben, dort wird der Trigger ausgelöst und die entsprechenden Werte als md5-Hash aktualisiert.
Das Result Set im Formular hat aber immer noch den Originalwert als Referenz, nach dem Einfügen des Datensatzes versucht das Formular sich zu aktualisieren, findet aber unter dem Originalwert keinen Datensatz, da dieser in der Datenbank ja nun als md5-Hash hinterlegt ist => das Result Set ist empty.

Aber nochmal:
Wenn Du wirklich Hilfe suchst, dann solltest Du vielleicht genauere Informationen preisgeben. Ins Blaue zu raten ist mühsam. Tritt der Fehler z.B. auch ohne den md5-Hash-Trigger auf, ist obige Vermutung schon obsolet.

Re: Illegal operation on emty result set

Verfasst: Sa, 22.05.2010 11:00
von nahemoth
also, derfehler tritt auch auf, wenn der trigger nicht aktiv ist.
die tabelle besteht aus genau 2 spalten: name(pk) und passwort.
was braucht ihr noch an infos ?

Re: Illegal operation on emty result set

Verfasst: Di, 25.05.2010 16:07
von DPunch
Aloha

Ich kann den Fehler leider nicht reproduzieren (MySQL-Server, OOBase über ODBC als Frontend, Tablle mit den zwei Spalten, Eingabe über Formular).
Vielleicht hängt irgendwo doch noch ein Trigger in der Datenbank, den Du schlichtweg vergessen hast?
(SQL-Abfrage -> SQL direkt ausführen -> SHOW TRIGGERS)

Erstell doch mal eine neue Tabelle mit dem gleichen Aufbau und lass von vornherein die Trigger weg und schau mal, ob der Fehler immer noch auftritt.
Alternativ verseh die Tabelle mit einem auto_increment als PK und pack auf den Benutzernamen einfach einen UNIQUE-Constraint.

Re: Illegal operation on emty result set

Verfasst: Mi, 26.05.2010 11:07
von nahemoth
ahm, ich sehe dort kein "show triggers", schon in oobase oder im mysql-server ?

thx !

Re: Illegal operation on emty result set

Verfasst: Mi, 26.05.2010 11:12
von DPunch
Aloha

Sorry, hätte ich erwähnen sollen:
SHOW TRIGGERS ist eine ganz "normale" Abfrage auf die Datenbank selber, wie ein SELECT auf eine Tabelle.
Also einfach in Base eine Abfrage in SQL-Ansicht öffnen, in der Symbolleiste "SQL direkt ausführen" aktivieren und als Statement nur "SHOW TRIGGERS" eingeben.

Re: Illegal operation on emty result set

Verfasst: Mi, 26.05.2010 11:18
von nahemoth
hm, da zeigt er aber dann keinen trigger an

Re: Illegal operation on emty result set

Verfasst: Mi, 26.05.2010 11:19
von AndreasJBittner
Na, rate mal, warum!

Re: Illegal operation on emty result set

Verfasst: Mi, 26.05.2010 11:25
von DPunch
Ok, das schliesst dann einen vergessenen Trigger schonmal aus.

Bliebe noch, mal meine Alternativvorschläge auszuprobieren.

Re: Illegal operation on emty result set

Verfasst: Mi, 26.05.2010 11:27
von nahemoth
müsste er da net den vorhandenen trigger, der die md5-codierung vornimmt ausgeben ?

Re: Illegal operation on emty result set

Verfasst: Mi, 26.05.2010 11:46
von DPunch
Das kannst allein Du wissen ;)
Wir wissen nicht, ob es den Trigger überhaupt noch gibt, ob Du in der richtigen Datenbank bist, ob Du dort im richtigen Katalog bist etc. ;)

Im Zweifelsfalle direkt über die MySQL-Konsole gehen, dort die Datenbank explizit auswählen und dann nochmal den Befehl absetzen.