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 ?
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 :)
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
[???]
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.
:)
filtrowanie daty juz mi pieknie dziala, mam jeszcze tylko maly problem. mam pole kwota w ktorym sa wpisywane ceny, jak zsumowac wszystkie
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.
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
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.