Delphi-PRAXiS
Seite 3 von 7     123 45     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL Custom Sort (https://www.delphipraxis.net/155005-sql-custom-sort.html)

-187- 5. Okt 2010 13:57

AW: SQL Custom Sort
 
Das hab ich versucht aber scheinbar mach ich irgendwas grundlegend falsch.

Den Table habe ich so erstellt:

Code:
...
IBTable1.TableName:='LIST';
IBTable1.FieldDefs.Add('LITEMS', ftString, 10, false);
...
Wenn ich mit folgenden Code den Zugriff versuche krieg ich immer den Fehler das dass Feld nicht gefunden wurde:

Code:
IBQuery1.SQL.Text:='SELECT LITEMS FROM LIST ORDER BY ' + SortColumn + ' ' + SortOrder;

DeddyH 5. Okt 2010 14:06

AW: SQL Custom Sort
 
Ich arbeite nie mit IBTable, aber ist das Feld denn wirklich vorhanden? Bekommst Du es mit einem
SQL-Code:
SELECT * FROM LIST
gelistet?

schlecki 5. Okt 2010 14:24

AW: SQL Custom Sort
 
also, das mit dem declare musst du einmalig pro db machen (bis firebird 2.0; ab 2.1 ist das bereits im server implementiert).

In deiner IBTable geht das geht (zumindest ohne eine View).
verwende statt der Table einfach eine Query. Dort kannst du das SQL selbst festlegen:

Code:
select field1, field2, lpad(field3, 50, ' ') as field3 from table
Wenn du wirklich viele Felder hast und die auch alle abgefragt werden müssen (nicht optimal, daher ist die obere Variante besser, weil hier nur die wirklich benötigten Daten übertragen werden), ginge auch das:

Code:
select lpad(t.field3, 50, ' ') t.field3, t.* from table t
wobei hier dann das ursprüngliche Feld auch nochmal(!) mitgeliefert wird. Allerdings ist hier der Name etwas angepasst, etwa Field3_1 oder Field31 - hängt glaube ich von der Version / den Komponenten ab.

-187- 5. Okt 2010 14:41

AW: SQL Custom Sort
 
Also der Grund warum ich alle Felder abgefragt habe ist eigentlich nur weil ich bisher dachte das man das beim sortieren muss. Aber jetzt klingt es so als müsste ich nur das zu sortierende Feld abfragen. Würde auch Sinn machen^ :D

Btw habe nochmal nachgeschaut habe doch FB2.1 also brauch ich den declare code nicht.

Edit: Nein ich muss wirklich alle Felder abrufen ...

Edit2: Okay habs getestet, im Grunde funktioniert es so.

Dankeschön!

-187- 5. Okt 2010 15:24

AW: SQL Custom Sort
 
Zitat:

Implementation limit exceeded. Block size exceeds implementation restriction
Hmm zuviele Statements, was nun ?

-187- 5. Okt 2010 17:31

AW: SQL Custom Sort
 
Sobald ich 2mal LPAD im SQL Command habe krieg ich den Fehler: Implementation limit exceeded. Block size exceeds implementation restriction

Ich habe 11 Felder. Muss ich jetzt vor dem Sortieren jedesmal abfragen welches Feld geklickt wurde und für jedes Feld einen Eignen SQL Command schreiben in welchen dann das geklickte Feld mit LPAD versehen wird :/ Irgendwie eine blöse Lösung...

DeddyH 5. Okt 2010 18:19

AW: SQL Custom Sort
 
Es wäre sicherlich sinnvoll, uns das SQL mal zu zeigen.

-187- 5. Okt 2010 18:25

AW: SQL Custom Sort
 
Hab das Problem jetzt gelöst indem ich mir für die betroffenen Felder ein eigenen SQL Command gebaut habe. Leider bin ich mit LPAD Lösung ein wenig unglücklich weil die Übersicht im DBGrid mit left padded Leerzeichen sehr merkwürdig aussieht. Kann ich die Leerzeichen irgendwie wieder entfernen bevor ich die Datenmenge im DBGrid einfüge?

Zb im OnDrawCell die Leerzeichen nicht "mit malen" :D

nachti1505 5. Okt 2010 19:06

AW: SQL Custom Sort
 
Delphi-Quellcode:
select field1, field2, field3 from table order by lpad(field3, 50, ' ')

schlecki 5. Okt 2010 20:10

AW: SQL Custom Sort
 
in der doku (links siehe in vorhergehenden Posts ;) ) kann man nachlesen, das die Funktion LPAD ein varchar(32k) zurück liefert. Bei einem geht das gut, bei mehreren hast du ein Problem.
Als Lösung wird empfohlen, noch einen Cast drumzuwickeln:

Code:
select
  cast(lpad(feld1, 50, ' ') as varchar(50)) Feld1,
  cast(lpad(feld2, 50, ' ') as varchar(50)) Feld2,
  ...
from
  Table
Dann funktioniert es auch mit mehreren Feldern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr.
Seite 3 von 7     123 45     Letzte »    

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