Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Sortieren von Datensätzen im DBGrid (https://www.delphipraxis.net/13243-sortieren-von-datensaetzen-im-dbgrid.html)

Emilio 14. Dez 2003 17:20


Sortieren von Datensätzen im DBGrid
 
Hallo alle Zusammen,

a. bin neu hier;
b. bin ehemaliger ACCESS-Datenbänker;
c. bin Anfänger in DELPHI (7p);

vor mir stehen viele Kartons mit lauter Schallplatten drin; außerdem gibt es ein Regal mit unglaublich vielen CDs, ganz abgesehen von den unzähligen Videos meines Sohns ...
kurzum, ich würde gerne eine Datenbank entwickeln, um das Medienvermögen zu katalogisieren.

Für die Schallplatten habe ich dazu ein DBISAMtable mit folgenden Feldern:

PlattenID (autoIncr)
Name/Titel (string)
Interpret/Gruppe (string)
Vorname (String)
Zustand Cover (Memo)
Musikrichtung (Integer) !
Plattenart (Integer) !
etc...

Dazu eine Detailtabelle mit den Titeln je Schallplatte; und die "Nachschlage"tabellen für die Werte aus 'Musikrichtung' und 'Plattenart'.

Dargestellt werden die Daten über eine DBISAMQuery in einem DBISAMDBGrid.

Soweit so gut - bis auf das sortieren der Daten durch klick auf die Spaltentitel des DBGrids. Alles was ich bisher gelesen, gehört und ausprobiert habe führte nicht nur zu unverständlichen Fehlermeldungen (Z.B. "...expected: end of SQL-statement, found: 'name'...) sondern mich auch langsam in den Wahnsinn.
Kapiert habe ich, dass ich das Ereignis "ontitleclick" verwenden sollte, aber dann:

Entweder ich seh den Wald vor Bäumen nicht oder ich bin auf dem Holzweg
:wall:


Hat mir jemand einen Tipp, wo ich einen einfachen beispielcode finde oder konkret einen Lösungsvorschlag?

Freue mich auf Antworten

Viele Grüße
Emilio

Robert_G 14. Dez 2003 17:25

Re: Sortieren von Datensätzen im DBGrid
 
Zitat:

Zitat von Emilio
Alles was ich bisher gelesen, gehört und ausprobiert habe führte nicht nur zu unverständlichen Fehlermeldungen (Z.B. "...expected: end of SQL-statement, found: 'name'...) sondern mich auch langsam in den Wahnsinn.

DAs kling für mich wie ein Komma/Apostroph/Anführungszeichen zuviel oder zuwenig im SQL-Statement.
Zeige mal einfach deinen SQL-Code.
Wahrscheinlich findet sich dann auch eine Lösung.

r_kerber 14. Dez 2003 17:26

Re: Sortieren von Datensätzen im DBGrid
 
Hallo Emilio,

zunächst erst mal herzlich willkommen in der Delphi-Praxis.
Dieses Thema haten wir hier schn desöfteren. Verwende doch mal die Suchfunktion. Hier im Forum suchensortieren dbgrid. Du findest dann unter anderem folgenden Thread: DBGrid nach alphabet sortieren?.

Nachtrag: Ich hätte wohl besser hinsehen sollen. Versuche doch mal herauszubekommen, welches SELECT-Statement an die DB geschickt wird.
*NachdemStrohhalmgreif*: Ich könnte mir das es Probleme gibt mit einem Spaltentitel Name/Titel. Ein derartiger Feldname sollte zumindest von "" umschlossen werden.

Emilio 14. Dez 2003 17:50

Re: Sortieren von Datensätzen im DBGrid
 
Hi,

das ging ja schnell - bin ja noch gar nicht richtig vorbereitet ...

der zuletzt ausprobierte code lautet:

Delphi-Quellcode:
precedure TForm1.DBISAMDBGrid1titelClick(Cloumn: TColumn);

var sort : string;

begin
sort := 'select * from schallplatten';
sort := sort + 'order by' + Column.Field.FielName; ---->

DBISAMQuery1.Close;
DBISAMQuery1. SQL.Text := sort;
DBISAMQuery1.Open;

Die passende Fehlermeldung dazu:
... DBISAM Engine Error #11010 Table ...\Schallplattenorder.DAT does not exist. ...

----> Alternativ:
sort := sort + 'order by' + 'Column.Field.FieldName';

erzeugt die Fehlermeldung:
... EDBISAM Engine error # 11949 SQL error - End of SELECT statement expected, instead found ',", Prozess wurde ...

Bin gespannt auch Eure Kommentare

Bis dahin

Emilio

[edit=Sharky]Doppelposting gelöscht und Delphi-Tags eingefügt. Mfg, Sharky[/edit]

woki 14. Dez 2003 18:00

Re: Sortieren von Datensätzen im DBGrid
 
Hi,

mir schwant, Du solltest Deinem SQL-string ein paar Leerzeichen gönnen.

Zwei generelle Tipps: Sollte ich recht haben, hätte der Debugger Dir das recht schnell gezeigt.

Schau dir für den zusammenbau von SQL-Strings mal die Format funktion an, damit wird das meiner Meinung nach bei komplexeren Strings einfacher zu handeln.

Ach so, das erste Statement sollte gar nicht kompilieren.
Grüsse
Woki

Sharky 14. Dez 2003 18:06

Re: Sortieren von Datensätzen im DBGrid
 
Hai Emilio,

ich baue meine SQL-Abfragen meisst so auf:

Delphi-Quellcode:
precedure TForm1.DBISAMDBGrid1titelClick(Cloumn: TColumn);
begin
  DBISAMQuery1.Close;
  DBISAMQuery1.SQL.Clear;
  DBISAMQuery1.SQL.Add ('SELECT * FROM schallplatten ORDER BY');
  DBISAMQuery1.SQL.Add (Column.Field.FielName);
  DBISAMQuery1.Open;
end;

Dann passieren mir nicht so schnell Fehler beim aufbau der SQL-Anweisung.

Emilio 14. Dez 2003 18:18

Re: Sortieren von Datensätzen im DBGrid
 
Hi again,

vielen Dank an Woki und Sharkey.

Woki, was meinst Du mit mehr Leerzeichen im SQL-String gönnen? Kannst du das bitte konkretisieren?

Sharkey,
hab Deinen Tipp gleich ausprobiert.
Fehlermeldung: ...EAccessViolation ... Zugriffsverletzung bei Adresse ... ?

Muß ich irgendwo noch einen Eintrag setzen?

Emilio

Sharky 14. Dez 2003 18:27

Re: Sortieren von Datensätzen im DBGrid
 
Versuche es mal so:


Delphi-Quellcode:
precedure TForm1.DBISAMDBGrid1titelClick(Cloumn: TColumn);
var
 sort_field : String;
begin
  sort_field := Column.Field.FielName
  DBISAMQuery1.Close;
  DBISAMQuery1.SQL.Clear;
  DBISAMQuery1.SQL.Add ('SELECT * FROM schallplatten ORDER BY');
  DBISAMQuery1.SQL.Add (sort_field);
  DBISAMQuery1.Open;
end;

r_kerber 14. Dez 2003 18:33

Re: Sortieren von Datensätzen im DBGrid
 
Hallo Emilio,

Zitat:

Zitat von Emilio
Woki, was meinst Du mit mehr Leerzeichen im SQL-String gönnen? Kannst du das bitte konkretisieren?

der Code
Delphi-Quellcode:
sort := 'select * from schallplatten';
sort := sort + 'order by' + Column.Field.FielName;
liefert im String sort folgendes: select * from schallplattenorder byfeldname. Wie Du siehst fehlen vor und nach order by Leerzeichen. Ich denke aber, das ist nicht die Ursache für die Fehlermeldung. Ich vermute eher, dass die Tabelle schallplatten tatsächlich nicht gefunden wird. Wie teilst Du der DBISAMQuery (die ich übrigens nicht kenne) mit, in welchem Verzeichnis sich die Tabellen befinden? Gibt es so etwas wie eine DBISAMDatabase oder DBISAMConnection?

Emilio 14. Dez 2003 18:39

Re: Sortieren von Datensätzen im DBGrid
 
Hi Sharky,

bin geplättet ! - s'duut.

:bouncing4:
Allerdings bei Klick auf die Spaltentitel Name/Titel oder Interpret/Gruppe kommt wieder die Fehlermeldung mit dem erwartetenden Ende des SQL-Statements - das sollte aber wohl eher an den Feldbezeichnungen liegen, die ich vergeben habe, bzw. SELECT * geht dann wohl nicht ...

Gerne hätte ich noch eien Tipp, warum die anderen Lösung nicht "funktioniert" haben.

Viele Grüße

Emilio


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr.
Seite 1 von 2  1 2      

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