Keresés
Hírlevél
 
Kiemelt témák
»Hogy viszonyul ehhez a család?
»Legjobb metodika emberi relációk tárolására
»A programozó hibája, hogy törik a programját?
»Jogosultság kezelés mezőszinten
Állás/munka
»Wordpress szakértőt keresünk
»Kamu álláshirdetők listája
»Front-end fejlesztő / Sitebuilder
»DataStore Developer
»PHP programozó, webfejlesztő munkát keres
» több téma
Tudástár
?XML-ből sok szövegmező
?Oldalon keresés 8x írja ki az eredményt
?Input mezőből visszakapott adat probléma
TinyMCE és az ékezetek
?Rengeteg hasonló kép betöltése gyorsan (PHP)
Ékezetes kar. nem minden táblában jól
?Shelltreeview gond
Grafikon rajzolás probléma
?Onclick= php függvény
?Egyenes megrajzolása
?Access-ből adott xml fájl kinyerése
Listázás időpont szerint
Exportálás változó könyvtárba
*Link eredményének kiolvasása
Imagemapre képet
» több téma
Társalgó
»A programozásból jól meg lehet élni?
»MFC tanulás
»Könyvet adok-veszek
»Hogy viszonyul ehhez a család?
»Nintendo wii
»Letölthető az új Rad Studio XE és Delphi XE
»Weblap véleményezés
»Játékmotor elmélet
»Informatikai bulvárlap
»Delphi-ről C++-ra váltás
» több téma
ASP  |  C#  |  C++  |  CSS  |  Delphi  |  Flash  |  HTML  |  Java  |  JavaScript  |  Pascal  |  Perl  |  PHP  |  Python  |  Visual Basic  |  Visual C++  |    »    

Tudástár

»

Delphi order by probléma

»

Delphi order by probléma

nyitotta: Lupesz, idő: 2010.07.29., moderátor: netangel
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben Nyomtatható verzió

Kategóriák:Programozási nyelvek » Delphi
Adatbázisok » Interbase

Sorrend:
Időzóna:
Blokkméret:
Sziasztok!

A következő problémába ütköztem:
Van egy lekérdezésem:

select
mertekegysegek.rovidites as rov,
szakanyagok.ar,
szakanyagok.db_lada,
szakanyagok.hetk,
szakanyagok.id,
szakanyagok.keszlet_fajta,
szakanyagok.megnevezes,
szakanyagok.muszakira_koteles,
szakanyagok.suly_lada,
szakanyagok.szak_szam,
szakanyagok.szakanyagfajta,
szakanyagok.me as mennyi,
SZAKANYAG_FAJTAK.KOD,
KESZLET_FAJTAK.KOD
  from SZAKANYAGOK, MERTEKEGYSEGEK, KESZLET_FAJTAK, SZAKANYAG_FAJTAK
where szakanyagok.me = mertekegysegek.id and SZAKANYAGOK.KESZLET_FAJTA =  KESZLET_FAJTAK.ID and SZAKANYAGOK.SZAKANYAGFAJTA =  SZAKANYAG_FAJTAK.ID
Ennek eredményét egy dbgrid-ben megjelenítem szépen. Egy gombra kattintva viszont szeretném ha az sql kiegészülne ezzel:

order by SZAKANYAGOK.ID ASC;
Még ez is rendben van, de mikor másodjára kattintok a gombra akkor fordított sorrendet szeretnék kapni ezzel:

order by SZAKANYAGOK.ID DESC;

Eddig így próbáltam:

  case gomb.Tag of
    1: begin
        gomb.Caption := 'fel';
        gomb.Tag := 2;
        ibqSzakanyag.SQL.Text := sql + 'order by SZAKANYAGOK.ID ASC;';
        ibqSzakanyag.Open;
       end;

    2: begin
        gomb.Caption := 'fel';
        gomb.Tag := 1;
        ibqSzakanyag.SQL.Text := sql + 'order by SZAKANYAGOK.ID DESC;';
        ibqSzakanyag.Open;
       end;
  end;

A gondom az lett, hogy a második kattintásnál már mindkét order by benne van a lekérdezésben

Légyszi segítsetek!
Köszi.
Mi az sql értéke? Ha a query sql-je, akkor értelemszerűen benne van az order by, ha már egyszer beletetted. Tedd constansba a lekérdezést, vagy generáld le újra, ha nem mindig ugyanaz, és ehhez add hozzá az order by-t.
Próbáltam a konstans dolgot, de azzal az volt a baja fordítónak, hogy több mint 255 karakter volt a lekérdezés...
Újra generálás alatt mit értesz?
Te, hogy csinálnád?
Induláskor az SQL-be már belerakod az ORDER BY ... ASC szöveget.

Utána kattintáskor:

1., Vizsgálod az SQL szövegét (Pos függvény). Ha találsz benne ASC-t, akkor StringReplace funkcióval cseréled az ASC-t DESC-re (vagy fordított esetben DESC-et ASC-re), majd futtatod a frissítést.
StringReplace példa

2., Globális boolean változó (pl boolAsc), amikor induláskor true (ez jelentia az ASC-t). Kattintáskor
- boolean változó értékétől függően összerakod az SQL-t a végére ASC-t, vagy DESC-et téve.
- átbillented a boolean változót.

Így:
Query.SQL.Clear;
Query.SQL.Add('select');
Query.SQL.Add('mertekegysegek.rovidites as rov,');
Query.SQL.Add('szakanyagok.ar,');
// stb.
case gomb.Tag of
1 : begin
      Query.SQL.Add('order by SZAKANYAGOK.ID ASC;');
    end;
2 : begin
      Query.SQL.Add('order by SZAKANYAGOK.ID DESC;');
    end;
end;
Vagy használj SMDBGrid-et. Több új funkció. Képes bármely oszlopra kattintva automatikusan rendezni ASC/DESC.
ADOQuery-vel használom. A rendezéshez csak ennyi kell(OnTitleClick):

(Column.Field.DataSet as TADOQuery).Sort := Column.FieldName;
Működik az AlterEgo_2 által javasolt StringReplace verzió és működik az Itchycoo által javasolt is. A pont szívem szerint megfelezném, hisz mindketten jó tanácsot adtatok, de ha nem haragszol meg Itchycoo AlterEgo_2 megoldása valamiért szimpatikusabb.
Köszi mindkettőtöknek!
Ezt a tippet én is köszönöm! A munkahelyemen a QuantumGrid-et használjuk, de az fizetős. Megnézem ezt a SMDBGrid-et.
Nekem mindegy, nem a pontokat hajkurászom. De vigyázz arra, hogy az csak egyetlen egy mező sorba rendezésére működik. Ha két külön gombbal akarsz két külön mezőre sorba rendezni, akkor már nem jó az ASC és a DESC lecserélése, hiszen a mező nevét is le kell cserélned. Ha esetleg később bővítenéd, akkor erre figyel majd oda. De egyébként az SMDBGrid-et használd, az lesz a legegyszerűbb.
Persze, erre gondoltam már én is
Köszi a figyelmeztetést!
Belépés
E-mail cím:
Jelszó:

RSS források
-Hírek
-Cikkek
-Fórumok
-Állás/munka
Top pontgyűjtők
»Micu1.030
»Interlock230
»mezofi150
»Pitta_100
»Frostech0100
»szbzs.2100
»Riha60
»Akhiles50
»mrchandra50
»Bakter50
Top wikieditorok
»Sting
»Doi
»FlamingClaw
»Argathron
»Csaboka2
»Vodka
»Joexy
»Ivn
»Balucinho
»Kelemzol
» ugrás a wikire
A nap kifejezései
»Algoritmus
»Hogyan kezdjem el
»Perl
» ugrás a wikire
Hírek
»Megérkezett a PostgreSQL 9.0 kiadásra jelölt változata
»Letölthető az új Rad Studio XE és Delphi XE
»Function-X digitális művészeti találkozó és demoscene party
»Webfejlesztőknek szóló közösségi oldalt indított a Microsoft
»Letölthető a hardvergyorsított Chrome 7 első fejlesztői kiadása
» több hír
PC Fórum hírek
»Itt az első kép az AMD nyolcmagos processzoráról
»"Szuperdizájnos" érintő-egeret mutatott be a Microsoft
»Szabadalmaztatta a számítógép kikapcsolását a Microsoft
»Vírusriadót váltott ki a webezőknél a Google
»Ingyen iWiW-ezhetnek mobiljaikról a T-Mobile-osok
»Automatikusan kiválogatja legfontosabb leveleink a Google
»OOo4Kids - ingyenes Office csomag gyerekeknek
»Új, gyorsabb Core i3 és Pentium processzorokat jelentett be az Intel
Tagi blogok
»PSP
»Első Programozó
»USB
»PHP, mint sablonmotor egyszerűen