DBGrid mit Daten füllen (gelößt)
-
Hallo Leute,
ich bin nun seit langem mal wieder hier. Dementsprechend kann ich nicht sagen, ob meine Fragestellung im C++Builder richtig ist.
Verwendete IDE: Turbo C++ (Borland)
Problem: Wie bekomme ich verdammich nochmal die Daten aus meiner MySQL-Datenbank in das Gitter rein?if(SQLConnection1->Connected==true){ StatusBar1->SimpleText = "Verbunden mit Datenbank"; myerror=0; Sql = "select Id,name from users"; SQLQuery1->Close(); SQLQuery1->SQL->Clear(); SQLQuery1->SQL->Add(Sql); SQLQuery1->Open(); row = SQLQuery1->RecordCount; SQLQuery1->First(); // ShowMessage(row); for (int i=0;i<=row;i++){ id = SQLQuery1->Fields->Fields[0]->AsInteger; nachname = SQLQuery1->Fields->Fields[1]->AsString; // HIER MUESSEN IRGENDWIE DIE DATENSÄTZE IN DIE LINE SQLQuery1->Next(); } }
Ich bin nunmehr 2 Tage am suchen und finde nur Beiträge, dass die Datensätze schon im Grid enthalten sind. Nur wie bekomme ich die denn nun da rein? Ich komme einfach nicht darauf. Könnt Ihr helfen?
Und die Borlandhilfe meint auch, dass das geht. Aber wie??? Das ist nicht beschrieben.Verbindung zur Datenbank steht. ShowMessage(row); bringt die Anzahl von 50 enthaltenen Datensätzen.
Gruß
cookie_woman
-
Indem du das TDataSource-Objekt, welches mit dem TSQLQuery-Objekt verbunden ist, bei dem TDBGrid unter DataSource einträgst.
Gruß KK
-
Naja, Da kommt dann folgende Fehlermeldung:
Diese Operation ist bei einer unidirektionalen Datenmenge nicht gestattet.
Ok. Daraufhin habe ich das gefunden.
Nur dann lässt sich das Projekt nicht mehr kompelieren. Das Verhalten ist so, als würde dieser ohne Fehlerangabe die Kompelierung abbrechen.
Erst wenn ich SQLConnection1, SQLQuery1, DataSetProvider1 und DataSource1 von der Form entferne, geht es wieder (Kompelierung). Nach hinzufügen von SQLConnection1, SQLQuery1 und DataSource1 lässt sich das Projekt kompelieren. Allerdings mit obiger Fehlermeldung. Es scheint am DataSetProvider1, oder, und das ist wahrscheinlicher, an mir zu liegen.
Wie bekomme ich denn die Geschichte jetzt gelößt?
Gruß und Danke für die schnelle Hilfe.
Cookie_woman
-
cookie_woman schrieb:
Naja, Da kommt dann folgende Fehlermeldung:
Diese Operation ist bei einer unidirektionalen Datenmenge nicht gestattet.
Das ist aber ein Laufzeitfehler, kompiliert wird das schon... Der Fehler bedeutet nichts anderes, als das der Datensatzzeiger in der Datenquelle nur nach vorne bewegt werden kann, aber nicht zurück. Für die Anzeige in einem DBGrid muss der Datensatzzeiger in beide Richtungen bewegt werden können.
Hast Du das exakt so gemacht, wie witte das in seinem Post beschrieben hatte?
Ehrlich gesagt bin ich auch kein Freund dieser dbExpress-Komponenten.
Kann man die ADO-Komponenten verwenden, oder unterstützen die MySQL nicht? Wenn nicht, gibt es keine Komponentensammlung für den Zugriff auf MySQL? Beides würde ich vorziehen.
-
Das gibt es doch nicht.
Jetzt habe ich die TADOComponenten genommen und es geht dennoch nicht.
- Verbindung zu MySQL-Server per ODBC über ADOConnection1 steht 100%.
- SQL-Abfrage über ADOQuery1 steht auch. Zumindest kommt keine Fehlermeldung bei Active = true
- CommandText bei ADODataSet1 bringt auch die Informationen die in der DB stehen
- Wenn ich dann DBGrid1 mit ADODataSet1 per DataSource verbinden will, dann steht dort nix drin!! Und ich meine hier den Schalter DataSource im Objectinspektor von DBGrid1
Hat noch jemand eine Idee??? Oder fehlt hier noch was?
Grüße
-
Hast Du denn auch eine TDataSource-Komponente? Wenn nicht, pack die noch dazu, setze dort DataSet auf die TADOQuery udd im TDBGrid setzt Du DataSource auf diese TDataSource. TDataSoruce findest Du in dem Reiter Datenzugriff.
Grüße Joe
-
Hallo Joe_M.,
genau das war es. Die Daten werden jetzt wunderbar in das DBGrid1 eingefügt.
Ich danke Dir und den Anderen für Eure Hilfe.
Grüße
cookie_woman