Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Spaltenreihenfolge im DBGrid festlegen (https://www.delphipraxis.net/126106-spaltenreihenfolge-im-dbgrid-festlegen.html)

Moony 18. Dez 2008 06:51

Datenbank: MSAccess, MSSQL, MySQL, DB2, Oracle • Zugriff über: ADO

Spaltenreihenfolge im DBGrid festlegen
 
Hallo zusammen,

ich habe folgende Situation:

In meiner Software greife ich über das ADODataset auf eine Datenbank zu. Über einen DataSource ist ein DBGrid mit dem Dataset verbunden. Die Datenmenge wird mit einer SQL Anweisung geöffnet und im Grid angezeigt. Innerhalb des Grids lasse ich eine Umsortierung der Spalten zu. Somit ändert sich ggf der Spaltenindex. Wenn ich die Software beende muß ich dann den Index speichern. Das mache ich so:

Delphi-Quellcode:
for i := 0 to PFORM.MyGrid.Columns.Count - 1 do
begin
  if Form1.MyGrid.Columns.Items[i].FieldName = tdbe.DataField then // tdbe ist ein DBEdit
  begin
    MyInifile.WriteInteger(tempstr, 'ColID', Form1.MyGrid.Columns.Items[i].Index);
    Break;
  end;
end;
Das funktioniert soweit richtig. Jetzt kommt aber der Rest. Wenn ich die Software wieder starte und an meine Datenquelle anknüpfe, will ich anschließend die Spaltenreihenfolge wieder zuweisen. Ich habe es auf dem gleichen Weg wieder versucht, aber da wird dann alles durcheinander gewürfelt.

Ich lade immer alle Felder per SQL in das Dataset, es kann aber auch sein, dass ich im Grid einige nicht anzeigen lasse. Die Spalte wird dann auf invisible gesetzt:

Delphi-Quellcode:
Form1.MyGrid.Columns.Items[i].Visible:= FALSE
So, hoffe die Infos sind alle vorhanden, die benötigt werden und mir kann schnell geholfen werden.

Gruß, Moony

joachimd 18. Dez 2008 08:51

Re: Spaltenreihenfolge im DBGrid festlegen
 
Ich streame so etwas in ein Binärfeld in der Datenbank.
Speichern:
Delphi-Quellcode:
...
ms:TMemoryStream;
...
ms:=TMemoryStream.Create;
DBGrid1.Columns.SaveToStream(ms);
ms.Position:=0;
TBlobField(tbSettings.FieldByName('Data')).LoadFromStream(ms);
tbSettings.Post;
Laden:
Delphi-Quellcode:
...
ms:TMemoryStream;
...
ms:=TMemoryStream.Create;
TBlobField(tbSettings.FieldByName('Data')).SaveToStream(ms);
ms.Position:=0;
DBGrid1.Columns.LoadFromStream(ms);

sx2008 18. Dez 2008 08:52

Re: Spaltenreihenfolge im DBGrid festlegen
 
Hier im Forum suchenSpaltenreihenfolge AND DBGrid

Moony 18. Dez 2008 10:18

Re: Spaltenreihenfolge im DBGrid festlegen
 
@ joachim: Danke, aber ich kann die Software jetzt nicht ohne weiteres auf das Streamen umbauen.

Ich hatte das auch schon mit dem Index probiert, aber dieser funktioniert innerhalb eine for-Schleife sehr schlecht. Aber ich muß die einzelnen DB Felder durchgehen. Da muß ich wohl schauen, ob es nicht irgendeine Möglichkeit gibt das dennoch so durchzuführen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz