DBGrid->RecordCount in BDS2006???



  • Hallo,
    in C++ Builder 5 bin ich, wenn meine dynamische Unterabfrage nur noch eine Zeile hatte, einfach mit

    if (DBGrid->RecordCount == 1)
       {TDataSet *pLDS = DBGrid->DataSource->DataSet;
        pLDS->GotoBookmark((void *)DBGrid->SelectedRows->Items[0].c_str())
        ....}
    

    zum Ergebnis gekommen. BDS2006 scheint das nicht zu unterstützen.
    Nun kann ich das zwar dem ADOQuery mit RecordCount übertragen, bekomme aber immer die Fehlermeldung "Listenindex überschreitet das Maximum (0)", obwohl nur eine Zeile da ist.

    if (MitarbeiterADOQuery->RecordCount == 1) {
        AnsiString sVorname = "";
        AnsiString sNachname = "";
        AnsiString sAusweis = "";
        TDataSet *pLDS = MADBGrid->DataSource->DataSet;
        pLDS->GotoBookmark((void *)MADBGrid->SelectedRows->Items[0].c_str());
        sVorname = sVorname + pLDS->Fields->Fields[0]->AsString;  	// 1. Spalte = Vorname
        sNachname = sNachname + pLDS->Fields->Fields[1]->AsString; 	// 2. Spalte = Nachname
        sAusweis = sAusweis + pLDS->Fields->Fields[2]->AsString; 	// 3. Spalte = Ausweis
    ...}
    

    Hat jemand eine Idee? Montag ist sowieso nicht mein Ding!

    Grüße, Michael



  • MichaelC schrieb:

    bekomme aber immer die Fehlermeldung "Listenindex überschreitet das Maximum (0)"

    In welcher Zeile?



  • Hallo Jansen,

    in Zeile 6. Habe dem DBGrid auch dgAlwaysShowSelection auf true gesetzt, damit auch wirklich die eine Zeile, die vom Queryergebnis übrig ist, selected ist.

    Grüße, Michael


Anmelden zum Antworten