DBGrid auslesen?
-
Hallo,
ich lese mir gerade mit Hilfe eines DBGrid aus einer DB aus...
wie kann ich jetzt auf die einzelnen Zellen des DBGrid zugreifen?Gruß
skydiver
-
Wieso willst Du auf die einzelnen Zellen des Grids zugreifen? Was versuchst Du zu erreichen.
Normalerweise ermittelt man die Werte aus der zugrunde liegenden Datenmenge.
-
ich möchte die einzelnen Zellen aus dem Grid auslesen...
Kann ich das auch mit einer Collection machen?Ich versuche den Inhalt mit nem DBQuery aus ner DB zu holen und dann in EditFields ausgeben zu lassen.
Bin noch recht neu, kenn mich daher in C++ noch nicht so gut aus...
-
schau mal in den FAQs, da steht sowohl unter DBGrid als auch Datenbank einiges interessante dazu
Grüße
Linnea
-
Folgender Code
TDataSet *pDS = MyQuery->DataSource->DataSet; ShowMessage(IntToStr(pDS->RecordCount)); ShowMessage(IntToStr(pDS->FieldCount));Leider bekomme ich beim Ausführen die Fehlermeldung:
Im Projekt Projekt1.exe ist eine Exception in der Klasse
EAccessViolation aufgetreten. Meldung "AccessViolation at adress 00401C83 in module 'Project1.exe'....Kann mir ausserdem jemand sagen, wie ich die Ergebnisse aus dem DataSet auslesen kann?
Habe es mit
for(int i=0; i<pDS->FieldCount;i++) { for(int x = 0 ; x<pDS->RecordCount;i++) { ShowMessage(pDS->Fields->Fields[i]->AsString); } }versucht...leider ohne erfolg...Kann mit dem Beispiel in der Hilfe leider auch nichts anfangen...
-
Hallo
zeigt dein DBGrid denn auch Daten an
(ich gehe mal davon aus der Code stammt aus DBGrid->Click)MfG
Klaus
-
skydiver1983 schrieb:
Folgender Code
TDataSet *pDS = MyQuery->DataSource->DataSet;Damit greifst Du auf die DataSource des TQuery zu. Das ist die übergeordnete Datenquelle, wenn die TQuery eine Detailtabelle ist!
Du brauchst eine TQuery und eine TDataSource. In der TDataSource::DataSet gibst Du die TQuery an.
Beispielsweise:
Neues Projekt mit einem TButton, einem TRicheEdit, einer TQuery (heißt 'q') und einer TDataSource (heißt 'ds'). Das Beispiel gibt dir in der ersten Zeile des RichEdits alle Feldnamen aus und darunter alle Felder.void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString OutString; AnsiString tab = "\t"; q->Prepare(); q->Open(); if (q->FindFirst()) { // Alle Feldnamen ermitteln und in RichEdit schreiben for (int i = 0; i < ds->DataSet->FieldCount; i++) { if (!OutString.IsEmpty()) OutString += tab; OutString += ds->DataSet->Fields->Fields[i]->FieldName; } RichEdit1->Lines->Add(OutString); do { // alle Feldwerte ermitteln und in RichEdit schreiben OutString = ""; for (int i = 0; i < ds->DataSet->FieldCount; i++) { if (!OutString.IsEmpty()) OutString += tab; OutString += ds->DataSet->Fields->Fields[i]->AsString; } RichEdit1->Lines->Add(OutString); } while (q->FindNext()); } if (q->Active) q->Close(); if (q->Prepared) q->UnPrepare(); }