Sortowanie tabeli mysql

Problemy związane z tworzeniem i zarządzaniem programami bazo-danowymi.
Regulamin działu


Zadając pytania dotyczące baz danych należy podawać szczegółowe informacje o bazie danych nad którą się pracuje, czyli:

  • Rodzaj serwera bazodanowego: MySql, MSSQL, Oracle itp.
  • Wersja bazy danych
  • Technologia bazodanowa używana w programie: ADO, DbExpress, InterBase
  • Komponenty użyte do zestawienia połączenia: ADOConnection, SqlConnection
  • Sposób zestawienia komponentów bazodanowych np. DataSet - DataSource - DbGrid lub DataSet - DataSetProvider - ClientDataSet - DataSource - DbGrid
  • Jeżeli używane były biblioteki innych firm niż Borland, CodeGeer i Embarcadero proszę podać ich nazwy, numer wersji i adres źródła.

Sortowanie tabeli mysql

Nowy postprzez mate006 » środa, 28 lipca 2010, 11:41

Witam,

Moja aplikacja działa już na pełnych obrotach teraz dopieszczam ją funkcjami aby móc swobodnie sie w niej poruszać, i mój problem napotkałem podczas sortowania tabeli

mam w zdarzeniu OnTitleClick komponentu DBGRID kod

Kod: Zaznacz cały
DM->ClientDataSet->IndexFieldNames = Column->FieldName;


jednak on sortuje mi tylko rosnąco, a ja chciałbym aby po ponownym kliknięciu sortowało malejąco, zna ktoś na to sposób
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 146
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox

Re: Sortowanie tabeli mysql

Nowy postprzez Corvis » czwartek, 5 sierpnia 2010, 10:43

"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    Windows VistaOpera

Re: Sortowanie tabeli mysql

Nowy postprzez mate006 » poniedziałek, 3 stycznia 2011, 22:14

Witam

Chciałem przedstawić mój sposób na rozwiązanie sortowania rosnąco i malejąco może komuś się przyda:

Na początek tworzymy dwie zmienne które będą pamiętać która kolumna będzie sortowana (int col), oraz zmienna odpowiedzialna za sortowanie rosnąco czy majeląco (bool desc)

Plik źródłowy np. Unit1.h
Kod: Zaznacz cały
public:
        int col;
        bool desc;


Następnie w pliku datamodule.cpp tworzymy funkcję która będzie sortowała

Plik datamodule.cpp
Kod: Zaznacz cały
void __fastcall TDataModule::Sort(TClientDataSet *DataSet,String FieldName, bool desc, int col)
{
  String IndexName;
  TIndexOptions IndexOptions;

  if (desc)
  {
    IndexOptions << ixDescending;
    IndexName = IntToStr(col)+"ix_d";
  }
  else
  {
    IndexOptions >> ixDescending;
    IndexName = IntToStr(col)+"ix_a";
  }

  DataSet->AddIndex(IndexName, FieldName, IndexOptions);
  DataSet->IndexDefs->Update();
  DataSet->IndexName = IndexName;
  DataSet->First();
}


Następnie przypisujemy zmiennym wcześniej utworzonym wartości

Plik unit1.cpp
Kod: Zaznacz cały
__fastcall TForm::TForm(TComponent* Owner)
        : TForm(Owner)
{
  desc = true;
  col = 1;
}
//---------------------------------------------------------------------------


oraz w zdarzeniu OnTitleClick

Plik unit1.cpp
Kod: Zaznacz cały
void __fastcall TForm::DBTitleClick(TColumn *Column)
{
String file;

  DataModule->ClientDataSet->IndexFieldNames = Column->FieldName;
  file = Column->FieldName;

  if (Column->ID == col)
  desc = !desc;

  col = Column->ID;
  DataModule->Sort(DM->ClientDataSet ,file+"; data",desc,col);

}


Po utworzeniu tych zapisów będziemy mogli dynamicznie sortować wszystkie tabele DBGrid
Avatar użytkownika
mate006
Intelektryk
Intelektryk
 
Posty: 146
Dołączył(a): wtorek, 2 marca 2010, 14:12
Podziękował : 7
Otrzymał podziękowań: 0
System operacyjny: Windows 7 Premium 64
Kompilator: Embarcadero® C++Builder® XE
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Bazy danych

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 1 gość

cron