Autor Téma: Vypsani zaznamu dle datumu  (Přečteno 415 krát)

Offline Kony

  • Hrdina
  • ****
  • Příspěvků: 322
  • Karma: 1
    • Verze Delphi: Delphi 7
Vypsani zaznamu dle datumu
« kdy: 06-12-2021, 19:15:59 »
Ahoj, mam MySQL DB kde mam zaznamy... mam u nich i polozku datum(DATE) a platba(varchar) a potreboval bych aby se mi pri zmacknuti tlacitka spocitali hodnoty z kolonky platba vzdy po mesicich... to znamena aby se mi secetli hodnoty na mesic leden, unor, brezen atd
Lze to ?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Vypsani zaznamu dle datumu
« Odpověď #1 kdy: 06-12-2021, 19:59:45 »

Ahoj, mam MySQL DB kde mam zaznamy... mam u nich i polozku datum(DATE) a platba(varchar) a potreboval bych aby se mi pri zmacknuti tlacitka spocitali hodnoty z kolonky platba vzdy po mesicich... to znamena aby se mi secetli hodnoty na mesic leden, unor, brezen atd
Lze to ?
Všetko je možné. Len si použil výraz "z kolonky platba". Čo tým chcel básnik povedať?
jedná sa o tabuľku, alebo o
DB Grid
A prečo tam máš taký nezmysel Platba(varchar)? To si zdedil, alebo si padol na hlavu?
Lebo základné SQL pre tabuľku podľa FireBird (ostatné nepoznám) je
Kód: Delphi [Vybrat]
  1. SELECT SUM(Cast(Platba AS CURRENCY(?))) AS SUMPLATBA
  2. FROM MYTABLE
  3. GROUP BY EXTRACT(YEAR FROM DATUM), EXTRACT(MONTH FROM DATUM)
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:Vypsani zaznamu dle datumu
« Odpověď #2 kdy: 06-12-2021, 20:51:41 »
vim, ze je to sptane napsany, ale prave zni otazka jestli lze vyresit

PS: uz nyni resim pocitani.. ale to jen dle filtru login...
Kód: Delphi [Vybrat]
  1.     var
  2.       i: Integer;
  3.       sum : Single;
  4.     begin
  5.       sum := 0;
  6.       for i := 0 to ZTable2.RecordCount - 1 do
  7.       begin
  8.         sum := sum + ZTable2.Fields[3].AsInteger;
  9.         ZTable2.Next;
  10.       end;
  11.       Memo1.Text := '';
  12.       Memo1.Text := 'Celková platba = ' + FloatToStr(sum);
  13.     end;

kde filtruji dle loginu, ale kchtel bych filtrovat dle datumu (mesic)

prave bych potreboval udelat filtr, ktery bude filtrovat a zobrazi rozdeleni dle mesicu, soucet bych vyresil dle prilozeneho vzorku

neco jako :
Kód: Delphi [Vybrat]
  1. DataSet1.Filter := 'Date >= ''aktualni mesic'' and Date < ''posledni den v mesici aktualniho mesice''';
  2. DataSet1.Filtered := True;
« Poslední změna: 06-12-2021, 21:01:29 od Kony »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Vypsani zaznamu dle datumu
« Odpověď #3 kdy: 06-12-2021, 21:05:24 »
Citace
prave bych potreboval udelat filtr, ktery bude filtrovat a zobrazi rozdeleni dle mesicu, soucet bych vyresil dle prilozeneho vzorku
Keď Tvoja DB pozná Extract, tak to daj aj do select. Filter už asi bude to najmenej. Potom to dokonca môžeš aj zoradiť podľa rok + mesiac.
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:Vypsani zaznamu dle datumu
« Odpověď #4 kdy: 06-12-2021, 21:10:18 »
tak presne asi nechapu co myslis
potrebuji do vypisu (memo)udelat soucty hodnot dle mesicu
Neco jako :
Kód: Delphi [Vybrat]
  1. Filtruj mesic leden a spocitej polozky v kolonce platba a vypis vysledek
  2. Filtruj mesic unor a spocitej polozky v kolonce platba a vypis vysledek
  3. atd
  4. atd
« Poslední změna: 06-12-2021, 21:13:08 od Kony »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Vypsani zaznamu dle datumu
« Odpověď #5 kdy: 06-12-2021, 21:25:17 »
Teraz ja nerozumiem Tvojmu myšlienkovému pochodu. Prečo chceš niečo počítať, keď už to máš v DataSet. Viď ten SUM().
Stačí ho len prechádzať, načítať hodnoty a vraziť ich do memo 8)
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:Vypsani zaznamu dle datumu
« Odpověď #6 kdy: 06-12-2021, 21:42:08 »
Prave me zajima jak poskladat ten filter aby filtroval po mesicich

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Vypsani zaznamu dle datumu
« Odpověď #7 kdy: 06-12-2021, 22:00:36 »
Už si skúsil spustiť dané SQL a pozrel si si výsledok? Vieš čo robí GROUP BY?  A čo EXTRACT? Podľa reakcie asi nie.
Vynachádzaš koleso :o
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline František

  • Guru
  • *****
  • Příspěvků: 708
  • Karma: 7
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity

Offline martinnr

  • Plnoletý
  • ***
  • Příspěvků: 205
  • Karma: 2
    • Verze Delphi: 7,2009,XE7
Re:Vypsani zaznamu dle datumu
« Odpověď #9 kdy: 07-12-2021, 13:41:52 »
chlapci ti radia to robit dotazom na databazu. nie spocitavanim cez filtre na prvotnej tabulke, ktoru mas otovrenu a mas v nej vsetky zaznamy.
asi je ta tabulka zobrazena na formualri v nejakom gride (a v nej nieco ) a chces potom na kliknutie dostat tie sucty a niekdy ich vypisat.
zaloz si tam druhy objekt typu ZQuery (alebo adekvatny), do ktoreho mozes zadat sql prikaz zostaveny podla svojich potrieb (napr. pomocou toho group by), z nej potom prejdes jednotlive zaznamy a vypises si ich ako potrebujes. takyto objekt samozrejme nemusis mat napojeny na grid a mozes prejist jeho zaznamy...

Kód: Delphi [Vybrat]
  1. zquery1.sql.text := 'select sum(a), count(*), atd from tableX group by c';
  2. zquery1.open;
  3. while not zquery1.eof do
  4. begin
  5.   memo1.lines.add('Sucet: ' + Zquery1.fields[0].asstring);  //sum(a)
  6.   memo1.lines.add('Pocet: ' + Zquery1.fields[1].asstring);  //count(*)
  7.   ...
  8.   Zquery1.next;
  9. end;

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6161
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Vypsani zaznamu dle datumu
« Odpověď #10 kdy: 07-12-2021, 14:02:50 »
Je dobre si uvedomiť, že "TDBTAble" sú takisto TQuery. Len majú iné vlastnosti a metódy. Ale, na čo chcem poukázať, získanie údajov z DB je vždy rovnaké.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.