Entwickler-Ecke

Datenbanken - Typkonvertierung bei Sortierung einer Ado-Tabelle


saxe66 - Mi 15.09.10 07:27
Titel: Typkonvertierung bei Sortierung einer Ado-Tabelle
Hallo ....,

ich habe folgendes Problem. Ich greife per Ado auf eine Tabelle zu, das mich interessierende Feld ist eine Nummer, die jedoch als String gespeichert wird.
Im DBGrid angezeigt soll dieses Feld jedoch numerisch sortiert werden.
Hole ich die entsprechenden Daten per Query ist das natürlich kein Problem (order by val(nummer)).
Kann ich diese Vorgehensweise aber auch irgendwo direkt in den Table-Eigenschaften hinterlegen ? (Indexname oder Index)
Das DBGrid soll idealerweise direkt auf ein Table-Objekt zugreifen.

Danke


mkinzler - Mi 15.09.10 07:53

Ich würde den Query verwenden


saxe66 - Mi 15.09.10 08:25

Dann eine zweite Frage ...

Kann ich in einer Query Fomatangaben hinterlegen ? (Numerische Werte mit 0.00 formatiert ???)

Gruß, saxe66


mkinzler - Mi 15.09.10 08:58

Das würde ich bei der Anzeige machen


Sybok Factor - Mi 15.09.10 11:39

user profile iconsaxe66 hat folgendes geschrieben Zum zitierten Posting springen:

Im DBGrid angezeigt soll dieses Feld jedoch numerisch sortiert werden.
Hole ich die entsprechenden Daten per Query ist das natürlich kein Problem (order by val(nummer)).
Kann ich diese Vorgehensweise aber auch irgendwo direkt in den Table-Eigenschaften hinterlegen ?


Also ich würde TAdoDataSet verwenden, das Objekt hat die Eigenschaft Sort, die macht genau das gewünschte möglich. Dann hast du auch die Möglichkeit im DBGrid beim Klick auf den Spaltenkopf folgendes zu machen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
With (Column.Grid.DataSource.DataSet as TADODataSet) do
begin
  ...
  Sort := '[' + Column.Fieldname + ']' // + ' DESC' <- sortiert absteigend
  ...
end;


Beim AdoDataSet kannst du über CommandType einstellen, dass es wie eine Tabelle arbeitet.

Bei der Formatierung schließe ich mich mkinzler an, das macht das anzeigende Element

Viele Grüße

Sybok Factor


saxe66 - Di 19.10.10 16:19

Danke erstmal, das Problem ist dadurch jedoch nicht gelöst.
Das zu sortierende Feld ist vom Typ String, soll aber numerisch sortiert werden.