[DELPHI] Filtr daty

0

Witam
jak wyświetlić rekordy z dbgrida dla konkretnej daty, chodzi mi o wyświetlenie rekordow z danego miesiąca oraz jak wyświetlic rekordy dla wybranej daty np od 12-09-05 do 20-09-05 ?

0

Przeczytaj o funkcji Range >>

(SetRange([12-09-05],[20-09-05])

<< w bazach danych. Tu masz właśnie pokazane wyświetlanie zasięgu dat Od..Do.

Jeśli chodzi o miesiące, ja zrobiłem to tak, że dorobiłem dodatkową kolumnę, która potem będzie ukryta i nazwałem ją 'Miesiace', i te miesiące wyświetla mi np. w formacie: 'wrzesień 2005'. >>

FormatDateTime('mmmm yyyy',Now)

<<

No i potem filtruj wg tej kolumny wpisując np. w Edit 'wrzesień 2005'. Ja mam zrobione w Combobox, w którym miesiące są dopisywane automatycznie i tylko sobie wybieram.

Poczytaj o filtrowaniu rekordów w zdarzeniu OnFilterRecord w komponencie Table.
A filtr wywołujesz np. w Buttonie poprzez Table1.Filtered:=true; a kasujesz filtr
Table1.Filtered:=false;

Brdzo ważne: poczytaj o indexowaniu kolumn, bo to będzie potrzebne do filtrowania i Range (zasięgu).

Indexy dla kolumn tworzysz w Database Desktop wybierając w "Table properties" opcję "Secondary Indexes" i nazywasz kolumny np. ixKolumna1 lub ixMiesiace.
Najpierw odczytaj tabelę z pliku i daj na Restructure :)

Pozdrawiam :)

0

Hallo Robetr_net!

Nie latwiej zastowowac query i sql?

Np:

select * from my_table
where my_date between from_date to_date

A nastenie w ten sposob uzyskane dane pokazac w dbgrid?

Pozdrawiam
Markus
[???]

0

Moim zdaniem to nie jest łatwiej. A dlaczego?
Dla ciebie Markus może być łatwiej, ale dla niego nie, bo przypuszczam, że on nie umie SQL'a. Ja mu napisałem absolutne podstawy programowania w bazach i on by nie zadawał tych pytań gdyby umiał SQL. A gdyby umiał to wiedziałby jak filtrować.
Zatem mój sposób dla niego jak na sam początek bedzie najłatwiejszy.

A żeby przefiltrować miesiąc jakiś to w OnFilterRecord komponentu Table1 wklej to:
Accept:=Table1['Nazwa_kolumny'] = Edit1.Text;

gdzie:

Nazwa_kolumny to nazwa kolumna gdzie wyświetlasz miesiące,
Edit1.Text ma wyświetlony miesiąc do przefiltrowania.
:)

0

filtrowanie daty juz mi pieknie dziala, mam jeszcze tylko maly problem. mam pole kwota w ktorym sa wpisywane ceny, jak zsumowac wszystkie

0

Sumowanie komórek w kolumnie było już tu na forum i nawet ja się o to pytałem tutaj, więc poszukaj :)

Musisz zastosować pętlę while not.

0

Nie róbmy z siebie błaznów, jeśli ktoś nie zna SQLa to może go poznać w 15 minut. Nie musi używać skomplikowanej składni zawsze zadziała w SQL:
where pole_data>=data1 and pole_data<=data2
A co do sumowania najprościej w SQlu:
select sum(wybrane_pole) nazwa from wybrana_tabela

potem czytasz po nazwie pole "nazwa" i po kłopocie

0
Stealth napisał(a)

Moim zdaniem to nie jest łatwiej. A dlaczego?
Dla ciebie Markus może być łatwiej, ale dla niego nie, bo przypuszczam, że on nie umie SQL'a. Ja mu napisałem absolutne podstawy programowania w bazach i on by nie zadawał tych pytań gdyby umiał SQL. A gdyby umiał to wiedziałby jak filtrować.
Zatem mój sposób dla niego jak na sam początek bedzie najłatwiejszy.

A żeby przefiltrować miesiąc jakiś to w OnFilterRecord komponentu Table1 wklej to:
Accept:=Table1['Nazwa_kolumny'] = Edit1.Text;

gdzie:

Nazwa_kolumny to nazwa kolumna gdzie wyświetlasz miesiące,
Edit1.Text ma wyświetlony miesiąc do przefiltrowania.
:)

gratuluje podejścia. Powiedz mi a po co ma się on uczyć operowania na TTable w erze baz CS? I potem w firmie napisze program, który będzie ciągnął z odległego serwera całą tabelę przez net żeby potem ją odfiltrować do dwóch rekordów, świetna sprawa. Nie zna SQLa to jak chce się uczyć programowania BD to teoria BD i SQL to podstawa zanim w ogóle włączy delphi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1