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...


  • Mod

    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();   
    }
    

Anmelden zum Antworten