Ukrywanie wierszy w komponencie DBGrid

0

Witajcie, mam mały problem.

W DBGrid1 w pierwszej kolumnie umieszczony jest Numer, chciałbym aby każda komórka w tej kolumnie została porównana np. z liczbą 5, jeśli nie będą one równe, to ukrywa cały wiersz.

tables.png

Użyte zdarzenie:

DBGrid4DrawColumnCell 

Porównanie:

if DataModule2.ADOtable4.FieldByName('Numer').Value <> 5 then ????

Oczywiście nic nie może zostać usunięte z bazy danych.
Z góry dzięki za pomoc.

2

dbgrid służy tylko do wyświetlenia zawartosci dataset'a. Tak więc jak chcesz ukryć rekordy z kolumną numer różną od 5 to np.

 DBGrid1.DataSource.DataSet.Filtered:=False;
DBGrid1.DataSource.DataSet.Filter:='numer <> 5';
DBGrid1.DataSource.DataSet.Filtered:=True;
0

Mam jeszcze jedno pytanie.
Jak wyglądałby zapis, gdyby dana do warunku byłaby pobierana z np. DBEdit1?

czyli na miejsce 5, ląduje wartość (liczba) z DBEdit1.

2
DBGrid1.DataSource.DataSet.Filtered:=False;
DBGrid1.DataSource.DataSet.Filter:='numer <> '+DBEdit1.Text;
DBGrid1.DataSource.DataSet.Filtered:=True;
0
Paweł Dmitruk napisał(a):

dbgrid służy tylko do wyświetlenia zawartosci dataset'a. Tak więc jak chcesz ukryć rekordy z kolumną numer różną od 5 to np.
I przy np. 1 000 000 rekordów też tak robisz? Nie sądzę. Filtrowanie danych nie powinno występować po stronie klienta. Takie coś powinno być wykonywane po stronie serwera. Zwłaszcza, że mamy tu jakieś ADO. Więc warto użyć ADOQuery i sobie zafiltrować dane. Inaczej może się ślamazarzyć.

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