ich habe nun ein neues Problem. Mit der nachfolgenden Code-Sequenz möchte ich Daten aus einer Datenbank ermitteln und am Bildschirm in einer Combobox anzeigen.
Die Abfrage selbst ist richtig und bringt auch die richtigen Ergebnisse.
Wenn ich nun das Programm starte erscheint die Messagebox mit dem Ersten Ergebnis. Nach drücken des OK-Buttons in der Messagebox erscheint wiederum die Messagebox, aber nicht mit dem erwarteten nächsten Ergebnis sondern wieder mit dem Ersten.
Erst nach drücken des OK-Buttons erscheint der nächste richtige Satz. Nach drücken des OK-Buttons sollte nun die Verarbeitng abgeschlossen sein, da nur zwei Ergebnissätze vorhanden sind. Es erscheint aber wieder die Messagebox mit dem zweiten Satz.
Nach nochmaligen drücken des OK-Buttons erscheint die Fehlermeldung:
Operation cannot performed on an inactive dataset
gefolgt von der Messagebox mit dem Ersten Datensatz.. Nach drücken des OK-Buttons erscheint die Messagebox mit dem Zweiten Datensatz, nach nochmaligen drücken des OK-Buttons ist die Verarbeitung scheinbar beendet und das Drücken des Cancel-Buttons der Fehlermeldung beendet das Programm.
Welcher logische/Denkfehler liegt hier vor? Habt Ihre irgendwelche Ideen?
Code: Alles auswählen
// Verbindung zur DB herstellen
if MySQL50Connection2.Connected then
MySQL50Connection2.Close;
MySQL50Connection2.Open;
if not MySQL50Connection2.Connected then
begin
ShowMessage('Keine Datenbankverbindung');
Self.Close;
end;
// Comboboxen Monat fuellen
sSQL:= 'SELECT date_format(g_datum,"%b") AS Monat FROM gesundheit GROUP BY month(g_datum);';
SQLQUERY2.SQL.Clear;
SQLQUERY2.SQL.Add(sSQL);
SQLQUERY2.Prepare;
SQLQUERY2.Open;
SQLQUERY2.FindFirst;
if SQLQuery2.RecordCount > 0 then
if SQLQuery2.FieldCount > 0 then
begin
while not SQLQUERY2.EOF do
begin
showmessage(SQLQuery2.fieldbyname('Monat').asString);
// DBComboBox_Monat.Items.AddStrings(sZw);
SQLQUERY2.Next;
end;
SQLQUERY2.Close;
exit;
end
else
begin
showmessage('Keine Daten vorhanden');
SQLQuery2.Close;
end;
end;
Bis dann ...
MfG
Günter