banita napisał(a):Co do ADO to kiedys pisalem taki sytem podpowiedzi (sugerowanie co uzytkownik moze wprowadzic w danym polu, mozliwe wartosci pobierane z bazy np kody pocztowe). podczas wprowadzanai danych rozwija sie lista ktora parsowala sugerowane wyniki zgodnie z tym co zostalo juz wprowadzone. parsowanie opieralo sie o filtrowanie wynikow w ADOQuery i DBGrid, calosc chodzi pieknie i nie ma problemow z oodswiezaniem.
jesli chcesz odczytac wartosci z komorek w DBGrid to musisz odwolac sie do obiektu TADOQueery ktory jest polaczony z tym gridem. bezposrednio do tego query albo za posrednictwem wlasciwosci datasource, data set ....
Dla rozwiania wątpliwości.
ADOQuery->SQL->Text -używane do połączenia kilku tabel w jedną (inner join, outer join.. itp), nie przewiduję filtrowania przez kwerendę bo program ma być jak najbardziej intuicyjny.
ADOQuery->Filter - tym filtruję wyniki zwrócone z kwerendy (filtrowanie wyników można dostrzec przez zmianę paska pionowego przewijania DBGrid1, ale nie na arkuszu DBGrid1).
- Kod: Zaznacz cały
void __fastcall TForm1::Edit1KeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key==VK_RETURN){
if (Edit1->Text!=""){
ADOQuery1->Filtered=false;
ADOQuery1->Filter=ComboBox1->Text+" Like '*"+Edit11->Text+"*'";//combobox przechowuje nazwy kolumn, edit1 to treść filtra
ADOQuery1->Filtered=true;//teraz powinno odbyć się filtrowanie i DBGrid1 powinno się odświerzyć
}else
ADOQuery1->Filtered=false;
}
}
Jeżeli zamiast ADOQuery1 wstawie ADOTable1 to wszystko działa bez zarzutu ale nie mam potrzebnych danych z innych tabel..