Problem mit ADOConnection / ADOQuery
-
Hi Leute erstmal ein herzliches hallo und gleich meine erste frage.
AnsiString LibPath = ("C:\\Daten\\LibraryInventory\\db1.mdb"); AnsiString ConString; ConString = ConString.sprintf("%s=%s;%s=%s;%s=%s;", "Provider","Microsoft.Jet.OLEDB.4.0","Data Source",LibPath.c_str()); ADOConnection->LoginPrompt = false; ADOConnection->Mode = TConnectMode(DB_MODE_READ); ADOConnection->ConnectionString = ConString; ADOConnection->Open("admin",""); ADOQuery->Connection = ADOConnection; ADOQuery->SQL->Add("SELECT PartitionName FROM PartPartition"); ADOQuery->Open(); ADOQuery->Close();
mir ist klar dass noch nicht viel zurückliefert... aber jetzt die frage... was muss nach ADOQuery->Open stehen?! Irgendwohin müssen ja die Felder gespeichert werden... Die ausgelesene Tabelle in der DB hat bloss zwei Spalten und ich möchte ein von diesen beiden komplett auslesen und dann in einem StringGrid darstellen...
Hoffe ihr könnt mir weiterhelfen....
Thx
-
Über ein DBGrid wäre das viel einfacher. Da reicht es, beim DBGrid, die dem Query zugeordnete DataSource einzutragen und schon werden nach dem Öffnen der Query die Daten im Grid angezeigt.
Hast Du denn überhaupt eine TDataSource (unter Datenzugriff zu finden) im Projekt?
Hast Du einen entsprechend SELECT in der Query eingetragen?
Wieso verwendest Du bei AnsiString sprintf?Wenn es unbedingt ein StringGrid sein soll, mußt Du durch alle Datensätze iterieren und die Feldwerte auslesen:
while (!ADOQuery1->Eof) { // entweder Felder über persistente Felder oder FieldByName auslesen // und in das StringGrid übertragen ADOQuery1->Next(); // auf nächsten Datensatz gehen }
Noch als Hinweis. Statt TADOQuery solltest Du besser TADODataSet verwenden, dass ist die bessere Komponente.
Das ganze wäre vermutlich im BCB-Forum besser aufgehohen. Ich denke da schiebt Dich gleich in Mod hin.