Avatar billede disher Nybegynder
25. oktober 2002 - 14:26 Der er 6 kommentarer og
1 løsning

Sortering med DBGrid i Builder

Når jeg trykker på en titel i DBGrid2, vil jeg gerne ha' dataen til at blive sorteret efter den kollone jeg trykker på. Meget gerne skiftevis ASC/DESC hver gang jeg trykker :)

Jeg har prøvet dette, men det virker ikke optimalt...

void __fastcall TForm1::DBGrid2TitleClick(TColumn *Column)
{
if(DBGrid2->SelectedField->DisplayLabel == "vareid")
{
Query1->Close();
Query1->SQL->Clear();
Query1->SQL->Add("SELECT * FROM vare ORDER BY vareid");
Query1->Open();
}
}
Avatar billede mickni33 Nybegynder
25. oktober 2002 - 19:54 #1
Prøv dette :-)
Den sorterer efter det columnname du Klikker på


void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)
{
String NameClick=Column->FieldName;

Query1->SQL->Clear();
    Query1->SQL->Add("select "+NameClick+" from Ordretable Order by "+NameClick+" ");
    Query1->Open();
        Edit1->Text=Query1->FieldByName("Ordrenavn")->AsString;
      }
Avatar billede mickni33 Nybegynder
25. oktober 2002 - 19:54 #2
Edit1->Text=Query1->FieldByName("Ordrenavn")->AsString;

denne behøver du ikke det var en test
Avatar billede disher Nybegynder
28. oktober 2002 - 08:33 #3
Det virker næsten... SELECT * vil nok være bedre, for ellers viser den kun den kollonne man trykker på :)
Men ved du hvordan man får den skiftevis til at sortere ASC/DESC hver gang man trykker?
Avatar billede mickni33 Nybegynder
28. oktober 2002 - 09:19 #4
Du tilføjer ASC eller DESC efter den attribut du vil have sorteret

eks. select Name,Addres from Person order by Name DESC,Address ASC

Du må have en

String sortering;

som du erklærer i din klasse;
i constructoren initialiserer du den til.

sortering="ASC";


void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)
{
String NameClick=Column->FieldName;

if(sortering=="ASC"){
sqlStatement="select "+NameClick+" from Ordretable Order by "+NameClick+" "+sortering;
sortering="DESC";
}
else if(sortering=="DESC"){
sqlStatement="select "+NameClick+" from Ordretable Order by "+NameClick+" "+sortering;
sortering="ASC";
}

Query1->SQL->Clear();
    Query1->SQL->Add(sqlStatement);
    Query1->Open();
        Edit1->Text=Query1->FieldByName("Ordrenavn")->AsString;
      }






Query1->SQL->Add("select "+NameClick+" from Ordretable Order by "+NameClick+" DESC ");
Avatar billede mickni33 Nybegynder
28. oktober 2002 - 09:20 #5
JEG HADER NÅR JEG LAVER COPY PASTE.....;-)

den sidste linie skal ikke med

Query1->SQL->Add("select "+NameClick+" from Ordretable Order by "+NameClick+" DESC ");
Avatar billede disher Nybegynder
28. oktober 2002 - 09:51 #6
Det virker jo... takker mange gange!! :)
Avatar billede mickni33 Nybegynder
28. oktober 2002 - 09:54 #7
geniaaalt
så mangler du bare dit andet spørgsmål :-) så kører det

http://www.eksperten.dk/spm/275023
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester