AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid Spalten Sortieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid Spalten Sortieren

Ein Thema von Berserker · begonnen am 7. Dez 2003 · letzter Beitrag vom 7. Dez 2003
Antwort Antwort
Benutzerbild von Berserker
Berserker

Registriert seit: 15. Dez 2002
Ort: Chemnitz
164 Beiträge
 
Delphi 6 Professional
 
#1

DBGrid Spalten Sortieren

  Alt 7. Dez 2003, 18:44
Hallo Delphi-Gemeinde.

Ich stehe mal wieder vor einem Problem für welches ich leider keine Lösung finde.

Ich habe eine MySQL Datenbank und lese Daten aus eine Tabelle aus.
diese habe ich an ein DataSource gebunden, welche die Daten ans DBGrid weitergibt.

im DBGrid werden 3 Spalten angezeigt (Kundennummer,Name,Vorname)

Jetzt möchte ich, das wenn man im DBGrid mit dem Cursor zwischen den Spalten wechselt, das er die aktive spalte jeweils aufsteigent sortiert. Dies habe ich auch hinbekommen, jedoch springt der cursor immer auf den 1. Datensatz ganz oben.

Gibt es eine möglichkeit das er Cursor immer auf dem aktuellen Datensatz stehen bleibt, welcher gerade ausgewählt ist?

Ich würde mich über Lösungs-Ansätze freuen.

MfG, Ronny
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: DBGrid Spalten Sortieren

  Alt 7. Dez 2003, 19:00
schau mal in der OH unter "TDataSet.Bookmark", das ist eine an's Dataset gekoppelte Liste von Lesezeichen, die man nach dem Wechsel der Sortierung ansteuern kann - damit solltest Du sowas "basteln" können.
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von Berserker
Berserker

Registriert seit: 15. Dez 2002
Ort: Chemnitz
164 Beiträge
 
Delphi 6 Professional
 
#3

Re: DBGrid Spalten Sortieren

  Alt 7. Dez 2003, 20:08
Hallo.

Danke erstmal für diese Idee.

Sortieren tut er jetzt, jedoch wirt er irgendwie wie Daten durcheinander.

ich habe folgenden Code verwendet:

Delphi-Quellcode:
procedure TForm1.DBGrid1ColEnter(Sender: TObject);
var cBook : TBookmark;
begin
 if(DBGrid1.Columns[DBGrid1.Col-1].Fieldname='nummer') then begin
  cBook := MyTable1.GetBookmark;
  MyTable1.OrderFields := 'nummer';
  MyTable1.GotoBookmark( cBook );
  MyTable1.FreeBookmark( cBook );
 end else if(DBGrid1.Columns[DBGrid1.Col-1].Fieldname='name1') then begin
  cBook := MyTable1.GetBookmark;
  MyTable1.OrderFields := 'name1';
  MyTable1.GotoBookmark( cBook );
  MyTable1.FreeBookmark( cBook );
 end else if(DBGrid1.Columns[DBGrid1.Col-1].Fieldname='vorname') then begin
  cBook := MyTable1.GetBookmark;
  MyTable1.OrderFields := 'vorname';
  MyTable1.GotoBookmark( cBook );
  MyTable1.FreeBookmark( cBook );
 end;
end;
Für weitere Hilfe wäre ich dankbar.

MfG, Ronny
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: DBGrid Spalten Sortieren

  Alt 7. Dez 2003, 20:22
Ich glaube so ist es einfacher.

Delphi-Quellcode:
procedure TForm1.DBGrid1ColEnter(Sender: TObject);
var
  cBook : TBookmark;
begin
  cBook := MyTable1.GetBookmark;
  MyTable1.OrderFields := DBGrid1.Columns[pred( DBGrid1.Col )].Fieldname;
  MyTable1.GotoBookmark( cBook );
  MyTable1.FreeBookmark( cBook );
end;
Du brauchst keine verschachtelten If-Clauses wenn du sowieso nur nach "DBGrid1.Columns[pred( DBGrid1.Col )].Fieldname" sortierst.

Mit dem Datensalat kann ich dir nicht weiterhelfen, hab' noch nie TTable benutzt.
  Mit Zitat antworten Zitat
Benutzerbild von Berserker
Berserker

Registriert seit: 15. Dez 2002
Ort: Chemnitz
164 Beiträge
 
Delphi 6 Professional
 
#5

Re: DBGrid Spalten Sortieren

  Alt 7. Dez 2003, 21:05
Hi.

Ich habe mal deinen Code versucht.
Der macht jedoch das gleiche wie meiner und bringt kein anderes Ergebnis.

Er würfelt irgendwie die Zeilen durcheinander.

Naja ich versuche mal weiter. Evtl. finde ich ja noch eine Lösung.

Mfg, Ronny
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: DBGrid Spalten Sortieren

  Alt 7. Dez 2003, 22:58
Es ist dein Code, ich wollte dir nur zeigen, dass es einfacher geht.

Wie werden die Einträge durcheinandergewürfelt?
1)Bleiben die Einträge intakt, nur die Sortierung entspricht nicht deinen Vorstellungen.
oder
2)werden die Spalten unabhängig voneinander sortiert.
z.B.:
Code:
10    ABC
20    XXX
30    YYY
wird zu
Code:
30    XXX
20    YYY
10    ABC
Der 1. Fall kann passieren wenn z.B.: ein String-Feld sortiert wird (3 ist dann größer als 200!)

Der 2. Fall wäre eine Art Super-GAU, aber wie gesagt - ich habe TTable noch nie benutzt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:30 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