AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBgrid-Sortierung

Ein Thema von Hansa · begonnen am 27. Apr 2003 · letzter Beitrag vom 30. Apr 2003
Antwort Antwort
Seite 2 von 3     12 3      
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#11
  Alt 27. Apr 2003, 18:31
Bei mir wird zumindest nach angeklickter Spalte sortiert. Da fällt mir aber noch mehr auf:

1. Bei meiner fetten Tabelle sind zu viele Spalten drin, wegen des "Select * from", aber ich will den Anwender entscheiden lassen, was er sieht, also muß er an alles rankommen. Wie kann ich jetzt zulassen, daß einzelne Spalten ausgeblendet werden? Oder umgekehrt, ich biete ihm die Spalten an, die er sowieso braucht und er kann welche hinzufügen ? Wahrscheinlich brauche ich beide Varianten. Grob schwebt mir da eine Auswahlbox vor mit markieren, alle markieren usw. Aber irgendwie gefällt mir das nicht. Wie macht ihr sowas ?

2. Im Moment habe ich nur einen Primary Key, was ist mit Indices, Foreign Keys usw.? Sollte man das auch schon mal einbauen, oder erst, falls die Performance in die Knie gehen sollte (was im Moment nicht zu bemerken ist) ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12
  Alt 27. Apr 2003, 19:45
Noch eine kurze Frage: Wie kann ich denn in der Titelleiste die Spalte, nach der sortiert wird irgendwie hervorheben
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#13
  Alt 28. Apr 2003, 07:26
Zitat von Hansa:
Noch eine kurze Frage: Wie kann ich denn in der Titelleiste die Spalte, nach der sortiert wird irgendwie hervorheben
Hai Hansa,

ich verwende immer die DB-Grids von den RX-Tools, dort gibt es recht einfach die Möglichkeit eine Markierung in der Titelleiste anzuzeigen.

Zu deiner anderen Frage:
In einem Grid würde ich immer nur die absolut notwendigen Spalten anzeigen. Wenn der Anwender details wissen möchte öffne ich bei einem Doppelklick ein neues Fenster in dem ich dann alle anderen Daten anzeige.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14
  Alt 29. Apr 2003, 12:15
Ich habe jetzt folgendes Problem: Es sind einfach zu viele Spalten vorhanden. Wie Sharky, will ich lieber automatisch die notwendigen Spalten automatisch im Grid drin haben und dann eine Auswahlbox bringen, wo die anderen Felder hinzugefügt werden können. Nun habe ich mir mal die Lieferanten vorgeknöpft :

Code:
procedure TForm2.DBGrid1TitleClick(Column: TColumn);
begin
  with LiefModul.LiefDS do begin
    Close;
    SelectSQL.Text := 'SELECT * FROM LIEF8 WHERE NR >= ' +
    LabeledEdit1.Text + ' AND NR <=' + LabeledEdit2.Text+' ORDER BY ' + Column.FieldName;
    if RadioGroup1.ItemIndex = 1 then
      SelectSQL.Text := SelectSQL.Text + ' DESC';
    Open;
  end;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
  with LiefModul do begin
    DBGrid1.Hide;
    LiefDS.Close;
    LiefDS.SelectSQL.Text := 'SELECT NR, NAME FROM LIEF8 WHERE NR >= ' +
    LabeledEdit1.Text + ' AND NR <=' + LabeledEdit2.Text+' ORDER BY NR';
    LiefDS.Open;
    DBGrid1.Show;
  end;
end;
Für Testzwecke setze ich die Select Anweisung per ButtonClick auf Anzeige nur der Nr und des Namens. Soweit geht das auch so, ABER die Titelzeile des Grids enthält immer noch alle Felder und ist genauso breit wie vorher. Das Grid weiß Sachen, die es nicht wissen soll/kann.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#15
  Alt 29. Apr 2003, 13:04
Zitat von Hansa:
.... ABER die Titelzeile des Grids enthält immer noch alle Felder und ist genauso breit wie vorher. Das Grid weiß Sachen, die es nicht wissen soll/kann.

Schon mal mit der rechten Maustaste auf das Grid geklickt? (In der IDE).
Stichwort : SpaltenEditor.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#16
  Alt 29. Apr 2003, 13:36
Das ist schon klar. Aber das muß zur Lufzeit geschehen.
Code:
DBGrid1.Add
ohne Parameter!! Das kann nicht alles sein. Wo und wie muß ich sagen, daß eine Spalte hinzukommen soll? Vor allem aber, wie soll das überhaupt gehen, wenn eine Spalte rausfliegen soll Mit Hide und Show des Grids geht das mal nicht einfach so.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#17
  Alt 29. Apr 2003, 13:53
Zitat von Hansa:
Das ist schon klar. Aber das muß zur Lufzeit geschehen.
Code:
DBGrid1.Add
ohne Parameter!! Das kann nicht alles sein. Wo und wie muß ich sagen, daß eine Spalte hinzukommen soll? Vor allem aber, wie soll das überhaupt gehen, wenn eine Spalte rausfliegen soll Mit Hide und Show des Grids geht das mal nicht einfach so.
hmm... dafür hast Du doch die Eigenschaft columns im Grid.

Delphi-Quellcode:
Var
 spalte : TColumns

begin
 spalte := RXdbGrid1.Columns.Add
 spalte.Field.Name
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18
  Alt 29. Apr 2003, 14:08
Code:
DBGrid1.Column.Add;
das wird compiliert (laut Hilfe ist die Deklaration: function Add: TColumn Nur was wird wo geadded? Vor allem aber: wenn ich etwas hinzufügen kann, dann muß ich es auch wieder wegkriegen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#19
  Alt 29. Apr 2003, 15:08
Zitat von Hansa:
Code:
DBGrid1.Column.Add;
das wird compiliert (laut Hilfe ist die Deklaration: function Add: TColumn Nur was wird wo geadded? Vor allem aber: wenn ich etwas hinzufügen kann, dann muß ich es auch wieder wegkriegen.
Hai Hansa,

hier mal etwas Code. Du brauchst:

1 x Button
1 x Query
2 x ComboBox

Delphi-Quellcode:
procedure TForm1.ComboBox1Click(Sender: TObject); //Feld zum Grid zufügen.
var
 spalte : TColumn;
begin
 spalte := RxDBGrid1.Columns.Add;
 spalte.FieldName := ComboBox1.Text;
 ComboBox2.Items.Add (ComboBox1.Text); // In die C-Box zum löschen der Spalte eintragen.
end;

{****************************************************}

procedure TForm1.ComboBox2Click(Sender: TObject); //Feld aus dem Grid löschen
begin
 RxDBGrid1.Columns.Delete (ComboBox2.ItemIndex);
 ComboBox2.Items.Delete (ComboBox2.ItemIndex);
end;

{****************************************************}

procedure TForm1.Button1Click(Sender: TObject); //Felder der Tabelle in ComboBox.
begin
 ComboBox1.Clear;
 ADOQuery1.GetFieldNames(ComboBox1.Items);
end;
ACHTUNG: Wenn einem Grid keine Spalten zugewiesen wurden werden immer alle Spalten der Tabelle angezeigt

Ich hoffe das hilft dir so.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#20
  Alt 29. Apr 2003, 15:10
Hi Hansa.

Sharky hat schon mal in die richtige Richtung geschossen.

Es gibt genau zwei Möglichkeiten (ohne riesen Aufwand).

Die erste ist die von Sharky benannte. du definierst zur Designzeit mittels Spalteneditor des DBGrid die Spalten, die du anzeigen möchtest. Der Vorteil ist, dass Du auch Spaltenbreite etc. voreinstellen und zur Erstellungszeit kontrollieren kannst.

Zweite Möglichkeit. Du gibst in Deiner Select-Anweisung nicht den Platzhalter * für alle Felder an, sondern nur die, die du im Grid sehen willst. Ist der Name doof, so kannst du ihn ja dort noch mit der as-Anweisung umbenennen.
Bsp.:

[/delphi]
select KdNr as Kundennummer from ...
[delphi]

Die dritte Variante zur Laufzeit die Columns des Grid zu kreieren verkneif ich mir hier. Das macht Arbeit und deshalb blöd (zumindest wenn es einfacher geht und so ausreicht).
Für ganz arbeitsame ist das aber dann eine Variante wo man dem Anwender nicht nur die Möglichkeit der Auswahl der anzuzeigenden Spalten, sondern auch noch das Design in die Hand geben kann (aber wer will das schon).

Gruß oki

[edit] Tschuldigung! irgentwie paßt mein Beitrag nicht in die Reihenfolge. Aber vielleicht kannst du trotzdem was damit anfangen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 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