Inhalt einer DBGrid in eine ListBox schaufeln
-
Hallo!
Ich möchte den gesamten Inhalt einer DBGrid in eine ListBox schaufeln. Das geht mit manuell Selektierten Feldern auch ganz gut (aus der Hilfe) nur wie kann ich das machen das alle Felder automatisch selektiert sind??
Gruß:
-
ratfury,
ratfury schrieb:
Ich möchte den gesamten Inhalt einer DBGrid in eine ListBox schaufeln.
Gegenfrage: Warum?
Der Inhalt Deines DBGrid's kommt i.allg. aus einer Datenbank. Warum die Daten also nicht direkt aus der Datenbank laden?
-
Weil ich nicht weiß wie ich das machen soll. Mit dem DBGrid schien mir das relativ einfach, aber eben nicht so toll. Wenn mir jemand sagen kann wie ich die Daten direkt aus der Datenbank in einen Ansistring kriege dann wäre ich euch auch dankbar!
-
Sieh dir mal den FAQ-Beitrag "Ergebnisse von SELECT verarbeiten" an.
-
Hallo!
Danke Jansen für den Tipp!
Also ich habe das jetzt soweit hingekriegt aber irgendwie fängt die Abfrage immer von vorne an. Ein Fehler wird auch nicht ausgegeben, es werden nur wieder die Datensätze angezeigt die ich schon ausgelesen habe.
Kann mir jemand sagen wieso?int AnzSpalten=1; SQLQuery1->Close(); SQLQuery1->SQL->Clear(); SQLQuery1->SQL->Add("select * from search order by id"); SQLQuery1->Open(); SQLQuery1->First(); while (!SQLQuery1->Eof) { int i = 0; Label1->Caption = SQLQuery1->Fields->Fields[i]->AsString; Label2->Caption = SQLQuery1->Fields->Fields[i+1]->AsString; SQLQuery1->Next(); try { Label3->Caption = "checking URL "+ Label2->Caption +"..." ; Form1->Refresh(); HttpCli1->URL = Label2->Caption; HttpCli1->Get(); } catch(...) { SQLQuery2->SQL->Clear(); try { Memo1->Lines->Add("Not Found:" + Label1->Caption +"," + Label2->Caption) ; SQLQuery2->SQL->Add("UPDATE search SET status=0 WHERE id ="+Label1->Caption ); SQLQuery2->ExecSQL(); } catch(...) {} } Label1->Refresh(); Label2->Refresh(); }
-
Hat keiner eine Anwort?
-
Eigentlich wäre es ja wohl Table->Eof und Table->Next
-
Haltepunkte setzen und debuggen
MfG
VergissEs
-
Also irgednwie springt der hierbei raus:
try { Memo1->Lines->Add("Not Found:" + Label1->Caption +"," + Label2->Caption) ; SQLQuery2->SQL->Add("UPDATE search SET status=0 WHERE id ="+Label1->Caption ); SQLQuery2->ExecSQL();
Ich versteh nur nicht so ganz wieso. Weil es ja auch nicht immer ist sondern nur nach dem x-ten mal. Echt merkwürdig. Ein Fehler wird ja auch nicht ausgegeben. EOF ist aufeinmal einfach True.
Vielleicht wäre es doch besser die Sache mit dem DBGrid zu amchen, aber da weiß ich ja auch nicht wie es geht.
-
Hallo,
versuch es mal so
SQLQuery1->Close(); SQLQuery1->SQL->Clear(); SQLQuery1->SQL->Add("select * from search order by id"); SQLQuery1->Open(); SQLQuery1->First(); while (!SQLQuery1->Eof) { Label1->Caption = SQLQuery1->Fields->Fields[0]->AsString; Label2->Caption = SQLQuery1->Fields->Fields[1]->AsString; try { Label3->Caption = "checking URL "+ Label2->Caption +"..." ; Form1->Refresh(); HttpCli1->URL = Label2->Caption; HttpCli1->Get(); } catch(...) { Memo1->Lines->Add("Not Found:" + Label1->Caption +"," + Label2->Caption); //gleich direkt in den gerade ausgewerteten Datensatz den status auf 0 setzten SQLQuery1->Edit(); SQLQuery1->FieldByName("status")->AsInteger = 0; SQLQuery1->Post(); } Label1->Refresh(); Label2->Refresh(); SQLQuery1->Next(); }
-
Danke, für die schnelle Antwort! Allerdings gibt er mir nun ein Fehler aus: Cannot modify a read-only dataset. Was soll das denn bedeuten?? Also Datenbanken sind echt kompliziert würd ich mal sagen. Wieso kann ich denn nund as Feld nich überschreiben. *FRUST*
-
Hallo
du ueberschreibst ja nicht das Feld in der Datenbank, sondern in deinem
"SQLQuery"
Der ist im Normalfall immer ReadOnlyMfG
Klaus
-
aha! Und was kan ich dagegen machen, ich habe shcon geguckt ob man ind en eigenschaften was umstellen kann, aber irgendwie kann man das wohl nicht
-
Hallo
schreib per SQl direkt in die Datenbank und lade deine Daten neu
MfG
Klaus
-
Das haut nicht hin dann muss ich ja unter umständen 30.000 Einträge nochmal durchgehen. Dann komme ich ja nie zum Ende der Datenbank. Oder wie meinst du das?