ADO Tabelle sortieren in DBGrid
-
Hallo,
Wenn ich ein DBGrid mit einer DataSource verbinde und dann eine Zeile auf dem DBGrid selectiere wird mir die richtige ID vom Datensatz zurückgegeben.Will ich aber die ADO Tabelle sortiert anzeigen mit ADOQuery oder einem ADO Dataset wird immer nur die ID vom letzten Datensatz zurückgegeben.
-
zeig doch mal etwas Quellcode, vorallem die Rückgabe aus dem sortierten DBGrid
-
Da gibts eigentlich keinen Quellcode.
Ich habe eine ADOConnection->AdoTable->DataSource->DBGrid
In diesem Fall wird die richtige ID vom Datensatz zurückgegeben.mit ADOConnection->AdoTable->DataSet oder SQLQuery->DataSource->DBGrid
wird immer nur der letzte Datensatz der Tabelle zurückgegeben.
-
was heißt zurückgegeben: im DBGrid angezeigt? als Label auf dem Form angezeigt? oder als MessageBox?
was hast du im Query/DataSet stehn?
warum verbindest du den ADOTable mit dem DataSet oder dem Query?
[Edit]
es sollte eher ADOConnection->ADODataSet->DataSource->DBGrid heissen, und das ADODataSet mit einer entsprechenden SQl-Anweisung in CommandText zur Sortierung verwendet werden[/Edit]
-
ich habs mit ADOConnection->ADODataSet->DataSource->DBGrid
versucht. Das Ergebnis ist das selbe.
Der ADODataSet Text =
select * from TBAbteilung ORDER BY NameDie ID lese ich folgend aus
void __fastcall TNeueAbteilung::DBGrid1CellClick(TColumn *Column)
{
LaufendeNr=Main1->ADOTable2->FieldByName("ID")->AsInteger;
ShowMessage(AnsiString("select Nr = ")+ IntToStr(LaufendeNr));
}
-
endlich

void __fastcall TNeueAbteilung::DBGrid1CellClick(TColumn *Column) { LaufendeNr=Main1->[b]ADOTable2[/b]->FieldByName("ID")->AsInteger; ShowMessage(AnsiString("select Nr = ")+ IntToStr(LaufendeNr)); }das fettgeschriebene ist der Fehler. Du greift immer auf ADOTable zu, obwohl du das ADODataSet als Datenquelle für das DBGrid hast
korrekt ist hiervoid __fastcall TNeueAbteilung::DBGrid1CellClick(TColumn *Column) { LaufendeNr=DBGrid1->DataSource->DataSet->FieldByName("ID")->AsInteger; ShowMessage(AnsiString("select Nr = ")+ IntToStr(LaufendeNr)); }
-
Danke!
Auch für deine grenzenlose Geduld.Gruß Horscht