TSQLQuery findet nur einen Eintrag?
-
Hallo,
ich stecke da in einer sehr merkwürdigen Situation:
Ich habe diesen Code:liste->Items->Clear(); query_object->SQL->Clear(); query_object->SQL->Add("SELECT id, name FROM streifen ORDER BY name ASC"); query_object->Open(); query_object->FindFirst(); int i = 0; do { liste->Items->Add(query_object->Fields->FindField("name")->AsString); liste->Items->Objects[i] = reinterpret_cast<TObject*>(query_object->Fields->FindField("id")->AsInteger); i++; } while (query_object->FindNext()); query_object->Close();
Lustiger weise wird immer nur das erste Element angezeigt.
Die anderen werden nicht zur Liste hinzugefügt.Könnt ihr mir sagen, wo hier der Fehler ist?
-
Ich habe gerade keinen C++ Builder an der Hand und muß jetzt ins Blaue schießen. Aber normalerweise habe ich bei TQuery (ohne SQL) mit Eof geprüft, ob das Ende erreicht wurde. TSqlQuery kenn ich jetzt nicht.
mfg Martin
-
Hallo nochmal:
Ich habe schon lange nichts mehr mit dem BCB gemacht, aber ich war der Meinung, dass ich es früher auf die im ersten Post genannte Art gemacht habe.
Naja, war wohl eine winzige Kleinigkeit damals anders..
Ich habe es jetzt so gemacht, wie du vorgeschlagen hast und es klappt super.
Für alle die, die dieses Problem auch haben, das ist meine Lösung:while(!query_object->Eof) { // Do something with your database row query_object->Next(); }
-
DBler55 schrieb:
Hallo nochmal:
Ich habe schon lange nichts mehr mit dem BCB gemacht, aber ich war der Meinung, dass ich es früher auf die im ersten Post genannte Art gemacht habe.
Naja, war wohl eine winzige Kleinigkeit damals anders..
Ich habe es jetzt so gemacht, wie du vorgeschlagen hast und es klappt super.
Für alle die, die dieses Problem auch haben, das ist meine Lösung:while(!query_object->Eof) { // Do something with your database row query_object->Next(); }
Hallo,
bei TQuery ist es so, daß FindFirst und FindNext bei gefilterten Abfragen verwendet wird. Da Du keinen Filter definiert hast, hat FindNext nichts getan und false zurückgeliefert. Ich habe hier BCB 5 zur Verfügung, ich nehme daher an, daß es nicht geändert wurde, sondern Du dich nur falsch erinnert hast.
mfg Martin