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
»SOS emlékeztető animáció programozás
»C# programozói főállás - WebCam Laboratory
»Projektmunkát keresek Delphi , PHP, JS, AJAX
»Delphi fejlesztőt keresek
»Programok, weboldalak, vizsgamunkák készítése!
» több téma
Tudástár
?Ragok levágása magyar szövegben
*VS Setup Project
*CxGrid csoportosított nézet
?Összesítés egy másik tábla adatai alapján
?Kéretlen felhasználó letiltása
URL átírás - CakePHP
?Menü
Mindig null értéket ad vissza, miért?
PHPMailer SMTP kapcsolódási hiba (sajna megint)
Android - 2 objektum nem frissít egyszerre
SQL Query összehozása
C# : WSDL file SOAP hogyan?
Képernyő felbontás vagy méretarány megállapítása
*SSL socket kliens szerver biztonsagos?
?MySQL group by lekérdezés optimalizálás
» több téma
Társalgó
»Mit is tanuljak először Java vs C#?
»Bevezetés a PHP 5 programozásába könyv
»Elveszve a C#-ban - avagy hova tovább?
»Eladó Asus A2500H laptop használtan
»Rails hoszting szolgáltatót keresek
»Ingyenes webáruház, amihez könnyű plugin-kat írni
»Adás feliratozó program
»PHP Melody
»Letölthető az új Rad Studio XE és Delphi XE
»Linq to SQL VS Entity framework .NET
» 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
»Micu2.280
»Interlock660
»Frostech0570
»Pitta_530
»mezofi460
»Riha340
»Varsi310
»netangel120
»n0rb1120
»szbzs.2110
Top wikieditorok
»Sting
»Doi
»FlamingClaw
»Argathron
»Csaboka2
»Vodka
»Joexy
»Ivn
»Kelemzol
»Balucinho
» ugrás a wikire
A nap kifejezései
ȃrtelmezett nyelv
»Szkriptnyelv
»Turbo Pascal
» ugrás a wikire
jobline.hu
»Operations szakértő
»MSSQL adminisztrátor
»SAP BC specialista
»Szoftvertesztelő
»Oracle DBA
» még több állás
Hírek
»Webjáték-fejlesztő versenyt indít a Mozilla
»Megnyitja a Wave forráskódját a Google
»Már SVG fájlokat is indexel a Google
» több hír
PC Fórum hírek
»Tíz kritikus biztonsági hibát javít az új Firefox
»A Pirate Bay is áldozatául esett a tegnapi torrent-razziáknak
»Kiszivárgott videón az Internet Explorer 9
»Fájlcsere-razziák zajlanak ma Európaszerte - és Magyarországon is
»Darabjaira hulló logóval ünnepli 12. születésnapját a Google
»USB 3.0-s Intel alaplapok már idén?
»Rejtélyes Internet Explorer-sebezhetőséget vizsgál a Microsoft
»Legális fájlcsere havi párszáz forintért?
Tagi blogok
»PSP
»Első Programozó
»USB
»PHP, mint sablonmotor egyszerűen