Autor Téma: komponenta DateTimePicker a SQL  (Přečteno 8359 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:komponenta DateTimePicker a SQL
« Odpověď #30 kdy: 21-03-2014, 14:27:51 »
Z Teba tu niekto porodí ježa  :). TLama musí počítať aspoň do 20.
Kód: Delphi [Vybrat]
  1. Edit10.Text := '0' then ZTable2.OnFilterRecord := true;
Rozlišuješ medzi udalosťou, metódou a vlastnosťou? To čo voláš je udalosť a tá si žiada parametre. Takže použiješ
Kód: Delphi [Vybrat]
  1. Edit10.Text := '0' then ZTable2.OnFilterRecord(tu dáš zoznam požadovaných parametrov);
A až samotnej udalosti budeš prideľovať Tvoju hodnotu filtra uloženú v private premennej.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 322
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:komponenta DateTimePicker a SQL
« Odpověď #31 kdy: 21-03-2014, 14:29:07 »
takze... mam tabulku...... a tu tabulku potrebuju filtrovat.....

jednou tak.. jednou tak a vzdy podle jinaciho filtru....

jednou potrebuju aby se mi zobrazili vsechny zaznamy.... jednou potrebuju aby se mi zobrazili zaznamy jen pokud maji v polozce "soukrome nulu", jednou potrebuju aby se mi filtrovali podle datumu (to uz tady bylo) podle TrackBaru, potom aby se filtrovali treba podle jmena, podle ID.. atd....
abych si vzdycky mohl po zmacknuti tlacitka urcit ktery filtr ma byt...

Button1 := Filtr jenom soukrome =0
Button2 := Filtr datumy jen 14 dni
Button3 := Filtr podle zadaneho jmena ktery bude v editu

atd

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 322
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:komponenta DateTimePicker a SQL
« Odpověď #32 kdy: 21-03-2014, 14:30:35 »
Takze bych dal pod tlacitko tohle ???

Kód: Delphi [Vybrat]
  1. Edit10.Text := '0' then ZTable2.OnFilterRecord(ZTable2.FieldByName('soukrome').AsString = Edit10.Text);
« Poslední změna: 21-03-2014, 14:32:31 od Kony »

Offline TLama

  • Guru
  • *****
  • Příspěvků: 597
  • Karma: 31
    • Verze Delphi: 7, 2009, XE3
Re:komponenta DateTimePicker a SQL
« Odpověď #33 kdy: 21-03-2014, 14:37:19 »
Takze bych dal pod tlacitko tohle ???

Kód: Delphi [Vybrat]
  1. Edit10.Text := '0' then ZTable2.OnFilterRecord(ZTable2.FieldByName('soukrome').AsString = Edit10.Text);

Tak pojďme ještě jednou, od "A"... "ÉÉÉÉÉÉÉééé" ;D

ale ano to jsem pochopil... jen nejak nechapu jak treba pod jednim tlacitkem vyvolam OnFilterRecord 1 a pod tlacitkem dve vyvolam OnFilterRecord.... potrebuju pouzivat nekolik filtru

Ty je nevyvoláváš. Za tebe je vyvolává ta datasetí komponenta. Z toho plyne, že si musíš nějakým způsobem předat informaci o typu filtru z události tlačítka
do události OnFilterRecord. Jínými slovy, po stisku tlačítka nastavíš nějaké své proměnné kterou si nadeklaruješ typ filtru a tu samou proměnnou budeš číst
i v OnFilterRecord a na základě toho se tam zachováš.

Hele, teď nemám čas, takže jen letmo třebas takto. Všimni si jak se v událostech stisku tlačítek ukládá do proměnné FFilterType typ filtru který jsem si vymyslel v enumeraci TFilterType.
Z té samé proměnné pak ten typ filtru čtu v události OnFilterRecord.

Kód: Delphi [Vybrat]
  1. type
  2.   TFilterType = (
  3.     ftByDate,
  4.     ftByName,
  5.     ftByPrivate
  6.   );
  7.  
  8. type
  9.   TForm1 = class(TForm)
  10.     ZTable1: TZTable;
  11.     FilterByDateButton: TButton;
  12.     FilterByNameButton: TButton;
  13.     FilterByPrivateButton: TButton;
  14.     procedure FilterByDateButtonClick(Sender: TObject);
  15.     procedure FilterByNameButtonClick(Sender: TObject);
  16.     procedure FilterByPrivateButtonClick(Sender: TObject);
  17.     procedure ZTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
  18.   private
  19.     FFilterType: TFilterType;
  20.     procedure RefreshTableFilter;
  21.   end;
  22.  
  23. implementation
  24.  
  25. procedure TForm1.RefreshTableFilter;
  26. begin
  27.   ZTable1.DisableControls;
  28.   try
  29.     ZTable1.Filtered := False;
  30.     ZTable1.Filtered := True;
  31.   finally
  32.     ZTable1.EnableControls;
  33.   end;
  34. end;
  35.  
  36. procedure TForm1.FilterByDateButtonClick(Sender: TObject);
  37. begin
  38.   FFilterType := ftByDate;
  39.   RefreshTableFilter;
  40. end;
  41.  
  42. procedure TForm1.FilterByNameButtonClick(Sender: TObject);
  43. begin
  44.   FFilterType := ftByName;
  45.   RefreshTableFilter;
  46. end;
  47.  
  48. procedure TForm1.FilterByPrivateButtonClick(Sender: TObject);
  49. begin
  50.   FFilterType := ftByPrivate;
  51.   RefreshTableFilter;
  52. end;
  53.  
  54. procedure TForm1.ZTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
  55. begin
  56.   Accept := True;
  57.  
  58.   case FFilterType of
  59.     ftByDate:
  60.     begin
  61.       Accept := not DayLimitEnabledCheckBox.Checked or (DayLimitEnabledCheckBox.Enabled and
  62.         (DaysBetween(Now, DataSet.FieldByName('datum').AsDateTime) <= DayLimitTrackBar.Position));
  63.     end;
  64.  
  65.     ftByName:
  66.     begin
  67.       Accept := ZTable1.FieldByName('jmeno').AsString = NameEdit.Text;
  68.     end;
  69.  
  70.     ftByPrivate:
  71.     begin
  72.       Accept := ZTable1.FieldByName('soukrome').AsString = PrivateEdit.Text;
  73.     end;
  74.   end;
  75. end;
« Poslední změna: 21-03-2014, 22:13:16 od TLama »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6163
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:komponenta DateTimePicker a SQL
« Odpověď #34 kdy: 21-03-2014, 14:50:28 »
OT
A prečo si v ukážkach udával raz Table1 a potom Table2  ;) . To veľmi mýli.
Kód: Delphi [Vybrat]
  1. 1.Edit10.Text := '0' then ZTable2.OnFilterRecord(ZTable2.FieldByName('soukrome').AsString = Edit10.Text);
a na to Ti kompilátor nereve?
Už dám pokoj.
« Poslední změna: 21-03-2014, 14:54:32 od Stanislav Hruška »
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 322
  • Karma: 1
    • Verze Delphi: Delphi 7
Re:komponenta DateTimePicker a SQL
« Odpověď #35 kdy: 21-03-2014, 14:55:38 »
pouzival jsem kod z toho testu co jsem daval semka a potom jsem pouzil primo kod co mam v origo programu

Uz to chapu.. dekuji mockrat a vysvetleni.. zaciname to fungovat jak potrebuju... Jeste jednou dekuji posledni rada byla presne ona co jsem potreboval
« Poslední změna: 21-03-2014, 15:03:19 od Kony »