AGB  ·  Datenschutz  ·  Impressum  







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

Spalten im DBGrid sortieren OHNE ADO

Ein Thema von BackOrifice · begonnen am 12. Jan 2009 · letzter Beitrag vom 30. Jan 2011
Antwort Antwort
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#1

Spalten im DBGrid sortieren OHNE ADO

  Alt 12. Jan 2009, 19:34
Datenbank: MS SQL Server • Version: 2000 • Zugriff über: dbExpress
Hi.

Ich habe ein DBGrid, welches per TDataSource auf ein SimpleDataSet zugreift. Ich will den Inhalt nach Spalten sortieren. Ich will NICHT ADO benutzen. Füge ich den CommandText im DataSet mit ORDER BY ein, ändert das leider nichts an der Anzeige. Die Daten werden IMMER aufsteigend angezeigt.

Wie krieg ich das DBGrid zu einer sortierten Anzeige?


Vielen Dank.
Henning
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Spalten im DBGrid sortieren OHNE ADO

  Alt 12. Jan 2009, 20:09
Ich denke nicht das das DBGrid solch ein feature besitzt. Hier wäre entsprechende enhanced Grids nötig oder ein MemoryTable-Komponente.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#3

Re: Spalten im DBGrid sortieren OHNE ADO

  Alt 12. Jan 2009, 21:36
Mh, das ist ja echt übel.

Mich nervt es, dass anscheinend das DataSet die Ergebnismenge wieder sortiert. Wenn ich in die SQL Abfrage ein ORDER BY xy DESC/ASC beigebe, juckt das den nicht die Bohne.
Henning
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Spalten im DBGrid sortieren OHNE ADO

  Alt 12. Jan 2009, 21:46
Ich habe das gerade mal ausprobiert, das Sortieren mit einem SimpleDataSet funktioniert wunderbar. Aufsteigend genauso gut wie absteigend. Dabei ist es auch egal, ob die Spalte, nach der sortiert wird im SELECT enthalten ist oder nicht.

Keine Ahnung, was bei dir da nicht geht.
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#5

Re: Spalten im DBGrid sortieren OHNE ADO

  Alt 12. Jan 2009, 23:23
Du sortierst über SQL? Also hast in dem SQL Statement ORDER BY xy DESC/ASC? Oder wie sortierst du?
Bei mir geht es mit ORDER BY definitiv nicht.

PS: PTLer? FHler oder Freiberuflich?
Henning
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Spalten im DBGrid sortieren OHNE ADO

  Alt 13. Jan 2009, 06:55
Zitat von BackOrifice:
Bei mir geht es mit ORDER BY definitiv nicht.
Hast Du einen 'IndexFieldName' gesetzt? DAS ist nämlich das Sortierkriterium. Du könntest also beim Klick auf ein TDBColumn einfach diese Eigenschaft setzen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#7

Re: Spalten im DBGrid sortieren OHNE ADO

  Alt 13. Jan 2009, 07:58
Moin, moin, lasst uns das Ding mal sortieren:



a: DBGrid mit Query und SQL-Abfrage
----------------------------------------------------------------------------------------
Hier geht prinzipbedingt nur die Sortierung über ORDER BY ernsthaft korrekt.

-Hintergrund -
liegt darin, dass der DataSet nicht alle Datensätze einliest. Wenn man im DBGrid bei
größeren Datenmengen scrollt, dann wird nachgeladen. Wenn ich nur den DataSet mit
aktuellem Inhalt sortiere, dann gibt es beim Scrollen Durcheinander, da unosrtierte
Records kommen. Wie "alzaimar" schon angemerkt hat, sollte man in dieser Variante Indexnamen
möglichst nicht im DataSet (Query/DBGrid) angeben, sonst geht das erst recht schief.
----------------------------------------------------------------------------------------


a: DBGrid mit TTable und Indexfeld
----------------------------------------------------------------------------------------
Hier geht prinzipbedingt die Sortierung über das Indexfeld der TTable korrekt.

-Hintergrund -
Auch hier lädt der DataSet Datensätze bei Bedarf (bei Scrollen) nach. Die Sortierung
erfolgt dann über die Angabe in der TTable. Ist die gleich mit der Datenbanksortierung
wird die Datenmenge einfach zum DBGrid durchgereicht. Ansonsten wird sie intern umsortiert,
was sich übrigens in temporären Dateien bemerkbar macht.
----------------------------------------------------------------------------------------


Grüße in die Runde // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
Benutzerbild von BackOrifice
BackOrifice

Registriert seit: 6. Jun 2005
74 Beiträge
 
Delphi 2007 Architect
 
#8

Re: Spalten im DBGrid sortieren OHNE ADO

  Alt 13. Jan 2009, 16:26
Vielen Dank für eure Mühe.


Aber der Fehler lag in der Abfrage selbst. Mein CommandText sah ca. so aus:
SQL-Code:
SELECT t.anfang, t.ende. ti.titel. ti.inhalt
FROM termin t, termin_inhalt ti
WHERE t.inhalt_id = ti.inhalt_id
ORDER BY t.anfang desc;
Kaum zu glauben: Aber das ';' am Ende der Abfrage ist der Fehler. Ohne dem Semikolon funktioniert die Sortierung.
Henning
  Mit Zitat antworten Zitat
HolzFreak

Registriert seit: 30. Jan 2010
17 Beiträge
 
Turbo Delphi für Win32
 
#9

AW: Spalten im DBGrid sortieren OHNE ADO

  Alt 30. Jan 2011, 15:36
Hallo

Es gibt eine TDBSortGrid - Komponente, aber die ist nur kommerziell erhältlich. Kostet so um die CHF 50.-
Anbei ein Screenshot der Version. Habe leider nur eine dcu, aber keinen Quellcode.

Gruss

Holzfreak
Miniaturansicht angehängter Grafiken
screenshot1_tdbsortgrid.jpg   screenshot2_tdbsortgrid.png  
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Spalten im DBGrid sortieren OHNE ADO

  Alt 30. Jan 2011, 15:39
Zitat:
Kaum zu glauben: Aber das ';' am Ende der Abfrage ist der Fehler. Ohne dem Semikolon funktioniert die Sortierung.
Komisch, denn eigentlich gehört es laut Standard auf jedenfall hin, auch wenn es bei den meisten DBMS auch ohne funktioniert
Markus Kinzler
  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 12:27 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