Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid/ADODataSet sortieren. WIE? (https://www.delphipraxis.net/117506-dbgrid-adodataset-sortieren-wie.html)

Dark Angel 19. Jul 2008 11:15

Datenbank: Access • Version: 2003 • Zugriff über: ADOX

DBGrid/ADODataSet sortieren. WIE?
 
Hallo,
ich habe schon in mehreren Threads gelesen dass es nur möglich ist ein DBGrid zu sortieren indem man die ADODataSet sortiert. Nun darin liegt mein Probelem ich will nur eine bestimmte Spalte sortieren, also kein Button, und sie soll von klein nach groß sortiert werden (zB. 1, 5, 20, 100, 200,...). Die Spalte heist: "Temperatur in °C" und wenn ich in "ADODataSet1-->COmmandText-->"select * from Messdaten ORDER BY Temperatur in °C"" dann ist es mir gar nicht möglich die Dataset zu aktivieren, da dann dieser Fehler angezeigt wird:
"In-Operation ohne Klammern: () in Abfrageausdruck 'Temperatur in °C'"

Wenn ich aber eine andere Spalte eintrage (zB. "Ort") dann kalppt es mit dieser Spalte hervorragend.

Allerdings wird diese Spalte 'Ort' dann nicht sortiert, es ändert sich gar nichts.

Hinweis: Spalte 'Temperatur in °C' ist als "WideString" deklariert, aber es befinden sich natürlich nur Zahlen darin. Das ganze wird über ein Editfeld eingegeben. Es können Zahlen von -20 bis +50 vorkommen und ich will dass diese richtig sortiert werden von klein nach groß.

Ich hoffe Ihr könnt mir helfen. DANKE

DeddyH 19. Jul 2008 11:19

Re: DBGrid/ADODataSet sortieren. WIE?
 
Die Spalte heißt 'Temperatur in °C'? Etwas unglücklich gewählter Bezeichner in meinen Augen. Du könntest es mal so versuchen:
Delphi-Quellcode:
Query.SQL.Text := Format('SELECT * FROM Messdaten ORDER BY %s',[QuotedStr('Temperatur in °C')]);

Jelly 19. Jul 2008 11:20

Re: DBGrid/ADODataSet sortieren. WIE?
 
Probiers mal so:
SQL-Code:
select * from Messdaten ORDER BY [Temperatur in °C]
wenn mich nicht alles täuscht dürfte das die Syntax unter Access sein. Der Grund ist, weil du einen recht unkonventiellen Spaltennamen gewählt hast, stellt aber pribzipiell kein Problem dar.

Dark Angel 19. Jul 2008 11:59

Re: DBGrid/ADODataSet sortieren. WIE?
 
wow das ging aber schnell und es funzt , sehr schön.

Jetzt hab ich allerdings ein weiteres Problem. die zahl muss ja in float sein damit das sortiren funktioniert und ich hab die Eingangs variable bereits in realforamt und bei DataSet hab ich auch unter datatyp ftfloat eingetragen. er zeigt mir allerdings immer noch beim start des programms die fehlermelgung "..unterschiedliche typen für feld 'temperatur in °C'.."

was hab ich übersehen??

Jelly 19. Jul 2008 12:03

Re: DBGrid/ADODataSet sortieren. WIE?
 
Was für ein Type hat denn dein Temperaturfeld in der DB. Vielleicht solltest du da mal sowas wie Decimal oder Float wählen. Sag mir bitte nicht, dass du es in einem Varchar Feld stehen hast.

Kannst du nicht die Struktur ändern, muss du im Select casten:
SQL-Code:
select spalte1, spalte2..., cast([Temperatur in °C] as float) as [Temperatur in °C] from Messdaten ORDER BY cast([Temperatur in °C] as float)
Das schlägt aber fehl, wenn die Umwandlung nicht funktioniert, und ist ausserdem wesentlich langsamer... Also besser die DB Strukur anpassen. (Vorsicht auf Datenverlust)

Dark Angel 19. Jul 2008 13:43

Re: DBGrid/ADODataSet sortieren. WIE?
 
noch ist es in einem varchar, weil ich ja nicht weiß wie ich es ändern soll. Geht das denn nachträglich überhaupt??

Dark Angel 19. Jul 2008 13:53

Re: DBGrid/ADODataSet sortieren. WIE?
 
ICH HABE ES GESCHAFFT.

LÖSUNG: ICH HAB EINFACH NOCHEINMAL ALLES EINGEBUNDEN UND ZUVOR WIE ZUVOR BEREITS GESAGT BEI DATATYP AUF 'ftFloat' UMGESELLT.


Vielen herzlichen Dank an alle

Jelly 19. Jul 2008 14:00

Re: DBGrid/ADODataSet sortieren. WIE?
 
Zitat:

Zitat von Dark Angel
LÖSUNG: ICH HAB EINFACH NOCHEINMAL ALLES EINGEBUNDEN UND ZUVOR WIE ZUVOR BEREITS GESAGT BEI DATATYP AUF 'ftFloat' UMGESELLT.

Das ist dennoch keine saubere Lösung. Die Daten sollen bereits in der DB sauber vorhanden sein, und nicht erst beim Client am Schluss versucht werden, konvertiert zu werden.

Dark Angel 19. Jul 2008 14:09

Re: DBGrid/ADODataSet sortieren. WIE?
 
nene ich wandle das editfeld direkt beim schreiben in die variable mit strtofloat um und dann wird das in die DB geschrieben.

Aber jetzt hab ich gemerkt dass die Vorzeichen der Zahl nicht vorne sondern hinter der Zahl stehen das sieht echt blöd aus kann ich das irgendwie ändern??

alzaimar 19. Jul 2008 15:33

Re: DBGrid/ADODataSet sortieren. WIE?
 
Zitat:

Zitat von Dark Angel
Aber jetzt hab ich gemerkt dass die Vorzeichen der Zahl nicht vorne sondern hinter der Zahl stehen das sieht echt blöd aus kann ich das irgendwie ändern??

WO steht das? Dem Float ist es nämlich egal, wie er/sie dargestellt wird, eine Zahl ist eine Zahl. Normalerweise kann man das in der 'DisplayFormat'-Eigenschaft des persistenten Datenfeldes einstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:54 Uhr.
Seite 1 von 3  1 23      

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