Ich lese eine
SQL-Tabelle mit FDQuery aus lasse es mir in einem DBGrid anzeigen. Das Funktioniert auch soweit.
Die Tabelle hat am Anfang 8 Spalten, die ich aber wegen anderen Anwendungen welche die Tabelle auch nutzen nicht in der Reihenfolge ändern kann. Da ich sie aber bei mir in einer anderen Reihenfolge benötige habe ich sie im DBGrid von der Reihenfolge geändert.
Da aber nicht jeder Benutzer alle Spalten sehen darf blende ich im Nachgang je nach Berechtigung die Spalten aus und ändere in diesem Moment gleichzeitig die Spaltenüberschriften dies mache ich wie folgt:
FDQuerryAfterOpen
for i := 0 to DataSet.Fields.Count-1 do begin
DataSet.Fields[i].DisplayLabel := DataSet.Fields[i].DisplayLabel + '_TXT'; // Umbenennen geht
if NOT(
Access[i]) then begin
// DataSet.Fields[i].Visible := FALSE; // -> Erzeugt eine Fehlermeldung daher geändert in:
DBGGrid.Columns[i].Visible := FALSE // Blendet falsche Spalten aus, da Reihenfolge geändert
end;
end;
Durch das Umsortieren bekomme ich jetzt die Falschen Spalten ausgeblendet da "DataSet.Fields[i]" auf eine andere Spalte verweist als "DBGGrid.Columns[i]"
Hat jemand ein Tipp wie ich das zusammen bekomme?
Oder wie ich das VISIBLE der Spalte unter "DataSet" erreiche?
Alternative wäre noch dass ich die Reihenfolge der Spalten im original lasse und sie dann nach dem Auslesen in der Reihenfolge verändere, was ich aber auch noch nicht herausgefunden habe, wie es geht.
Zu alten Zeiten als es noch kein FireDAC gab und man es mit etwas mehr und aufwändigerem Code auslesen musste und in einen normalen GRID geschrieben hat hat es in der Auslese-Schleife ganz gut Funktioniert. Jetzt wo das alte Programm ein Update braucht und ich es in meine Aktuelle Version übernehme soße ich gerade an die grenzen meines wissens mit FireDAC.