Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - DBGrid geordnet ausgeben... !


LuckyStrike4life - Mi 03.12.03 11:19
Titel: DBGrid geordnet ausgeben... !
Morgen,

mein momentanes Problem:
Ein DBGrid auf nem Form muss sich ordnen. D.h. die Einträge müssen sich nach dem Datum richten.
Das Datum steht in der ersten Spalte 'Datum'.

Das Datum wird immer in der Form TT.MM.JJJJ éingetragen, geht über nen DateTimePicker.

Jetzt ist es wichtig das ich dem Grid sagen kann, das zuerst (sprich: oben) die älteren Daten liegen. Es ist wichtig - da sonst keine Übersicht möglich ist.

Leider ist das Datum in keiner Weise von dem Datum der Einstellung des jeweiligen Datensatzes abhängig, daher hilft mir die normale Ausgabe des Grids nicht.

Help!!


Delete - Mi 03.12.03 11:30

Man sortiert nicht mit dem DBGrid. Das DBGrid dient lediglich dazu ein Ergebnismenge aus der Datenbank darzustellen. mach eine SQL Abfrage und sortier die.


jaenicke - Mi 03.12.03 11:33
Titel: Eigenschaft Sort
Hallo!

Sieh Dir mal die Eigenschaft Sort an!

Ein Beispiel für die Verwendung findet sich hier:
http://delphi.about.com/library/weekly/aa042203a.htm

Ich arbeite nicht mit DBGrid, daher weiß ich nicht, ob folgende Tips auch dort funktionieren:
1. Evtl. gibt es ein onCompare-Ereignis, wie bei der TListView-Komponente
2. Evtl. gibt es einen Befehl wie AlphaSort oder etwas ähnliches
Wie gesagt, keine Ahnung ob dem so ist... :?:

MfG,
S.J.


Delete - Mi 03.12.03 11:46

Nein geht alles nicht. das DBGrid ist ein StringGrid mit Datenbankanbindung.


jaenicke - Mi 03.12.03 12:07
Titel: Aber
Hallo nochmal!

@Luckie: Soweit ich das verstanden habe gibt doch Sort an, welches Feld aus der Datenbank zur Sortierung herangezogen werden soll!

MfG,
S.J.


LuckyStrike4life - Mi 03.12.03 12:17

Luckie hat folgendes geschrieben:
Man sortiert nicht mit dem DBGrid. Das DBGrid dient lediglich dazu ein Ergebnismenge aus der Datenbank darzustellen. mach eine SQL Abfrage und sortier die.
Hm...
könntest du das n wenig genauer erklären.
Ich denke das ich ein Query brauche, liegt auch drauf, aber wie schreib ich jetzt die Anweisung zum sortieren?

Luckie hat folgendes geschrieben:
Nein geht alles nicht. das DBGrid ist ein StringGrid mit Datenbankanbindung.
Also doch nicht?

jaenicke hat folgendes geschrieben:
Hallo!

Sieh Dir mal die Eigenschaft Sort an!

Ein Beispiel für die Verwendung findet sich hier:
http://delphi.about.com/library/weekly/aa042203a.htm

Ich arbeite nicht mit DBGrid, daher weiß ich nicht, ob folgende Tips auch dort funktionieren:
1. Evtl. gibt es ein onCompare-Ereignis, wie bei der TListView-Komponente
2. Evtl. gibt es einen Befehl wie AlphaSort oder etwas ähnliches
Wie gesagt, keine Ahnung ob dem so ist...

Okay, die Seite könnte mich weiter bringen, aber die reden immer über ADO Komponenten, z.B. 'ADOQery, ADOTable', bei mir sind das aber alles Datenbankkomponenten.
Na gut, ich werds mal probieren. Danke für den Tipp.

Gibts noch schönere Lösungen? Ich bin gerne bereit n einfacheren Weg zu nehmen ... . Oder wenn jemand eine relativ gute Erklärung hat - wäre mir auch sehr geholfen.


Delete - Mi 03.12.03 12:17

Ja, aber letzten Endes wird in der datenbak sortiert und das ergebnis im DBGrid dargestellt.


Delete - Mi 03.12.03 12:18

LuckyStrike4life hat folgendes geschrieben:

Luckie hat folgendes geschrieben:
Nein geht alles nicht. das DBGrid ist ein StringGrid mit Datenbankanbindung.
Also doch nicht?

Ich bezog mich auf die weiteren Vorschläge von jaenicke.


LuckyStrike4life - Mi 03.12.03 12:20

Luckie hat folgendes geschrieben:
LuckyStrike4life hat folgendes geschrieben:

Luckie hat folgendes geschrieben:
Nein geht alles nicht. das DBGrid ist ein StringGrid mit Datenbankanbindung.
Also doch nicht?

Ich bezog mich auf die weiteren Vorschläge von jaenicke.
Aha, also geht doch nur deine Version.

Nun gut, könntest du mir n wenig mit dem Code helfen?


jaenicke - Do 04.12.03 12:49
Titel: Zu ADO:
Hallo!

LuckyStrike4life hat geschrieben:
Zitat:

Okay, die Seite könnte mich weiter bringen, aber die reden immer über ADO Komponenten, z.B. 'ADOQery, ADOTable', bei mir sind das aber alles Datenbankkomponenten.


@LuckyStrike4life: ADO ist auch ein Datenbanksystem, es bietet die Möglichkeit auf verschiedene Datenbank-Formate zuzugreifen...

Ciao,
S.J.


LuckyStrike4life - Do 04.12.03 12:55

Okay,
aber mir fehlt die Zeit!
Leider hat sich das Problem noch nicht gelöst - wirklich traurig!

Muss mal alles ausprobieren, Hilfe nehme ich natürlich weiterhin gerne an... . N wenig Codebeispiel, wäre echt gut.


LuckyStrike4life - Do 04.12.03 16:29

Könnte das:

Delphi-Quelltext
1:
2:
3:
4:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from "t:eDienstreisebuch\main.dbf" ORDER BY "DATUM"');
Query1.Active:=True;

funktionieren?
So ganz hauts noch nicht hin, Delphi kompiliert zwar, aber wenn ich auf den Button Click, dann bricht das Programm mit ner Fehlermeldung ab. :cry:


CenBells - Do 04.12.03 17:03

was für eine meldung bekommst du denn?

Gruß
Ken


LuckyStrike4life - Do 04.12.03 17:05

Diese:
Zitat:
Im Projekt soundso.exe ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: 'Ungültiges Schlüsselwort
Symbol-String: "DATUM"
Zeilennummer: 1'. Prozeß wurde angehalten. Mit Einzelne ...


LuckyStrike4life - Do 04.12.03 17:20

Hab gerade mal den Fehler beseitigt:


Delphi-Quelltext
1:
2:
3:
4:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from "t:eDienstreisebuch\mainDB.dbf" ORDER BY DATUM');
Query1.Active:=True;

Nun gibts keine Fehlermeldung mehr, wenn man auf den Button Clickt, aber der gewünschte Erfolg stellt sich auch nicht ein.
*mist*e!