Hallo,
Ich soll über eine Standard
ODBC Verbindung (über
ADO) Daten aus einer Datenbank auslesen und während des Auslesens ausgewählte Datensätze editieren. Das Programm soll sowohl mit
MySQL als auch
MSSQL gleichermassen laufen (der Enduser bestimmt welche Datenbank er haben will und diese zwei (plus Oracle) müssen unter Garantie laufen!).
Vorgehensweise:
- Das Programm liest aus der Datenbank mehrere Datensätze über die ADOQuery aus ('select * from ' + Tabelle + ' WHERE Messaging LIKE "%' + Station+ '%"') aus.
- Die Abfrage wird gesendet
- über eine Schleife von ADOQuery.First über ADOQuery.Next bis zur Erfüllung von While not ADOQuery.EOF werden die richtigen
nacheinander Datensätze in einem Fenster angezeigt.
- Hier muss der User die Nachricht entweder
bestätigen (
Update im Datensatz -> ein Feld wird gefüllt) oder
abbrechen (es passiert nichts). In beiden Fällen wird das Fenster geschlossen und das nächste Fenster mit dem nächsten Datensatz angezeigt.
- Das Update des betreffenden Datensatzes erfolgt über ADOQuery.Edit -> ADOQuery.FieldByName(FieldName).AsString -> ADOQuery.Post.
Nun zum Problem:
Diese Anweisung klappt mit der
MSSQL jedoch nicht mit
MySQL!!
Der Fehler tritt bei der Ausführung von ADOQuery.Post:
EOLEException - Die zum aktualisieren angegebene Zeile wurde nicht gefunden
Den Fehler habe ich noch mal im Angang angefügt.
Woran liegt es denn?!
Logisch betrachtet: Es liegt an der
MySQL Datenbank.
Soweit ich verstanden habe ist es
MySQL nicht möglich verschachtelte Abfragen zu machen wie:
SELECT * FROM Tabelle WHERE note>(SELECT AVG(note) FROM Tabelle)
könnte es daran liegen? Ich hoffe nicht
Welche Lösung hättet Ihr?
Fragen über Fragen...
Hoffe auf eine Antwort.
Gruß
Tomektor