void __fastcall TFormCompany::btn_findClick(TObject *Sender)
{
AnsiString buf_f;
AnsiString buf_i;
AnsiString buf_o;
AnsiString buf_wtel;
AnsiString buf_mtel;
AnsiString buf_mail;
switch (rgfind->ItemIndex)
{
case 1:
buf_f="f_zam";
buf_i="i_zam";
buf_o="o_zam";
buf_wtel="wtel_zam";
buf_mtel="mtel_zam";
buf_mail="mail_zam";
break;
case 2:
buf_f="f_cont";
buf_i="i_cont";
buf_o="o_cont";
buf_wtel="wtel_cont";
buf_mtel="mtel_cont";
buf_mail="mail_cont";
break;
case 3:
buf_f="f_gbuh";
buf_i="i_gbuh";
buf_o="o_gbuh";
buf_wtel="wtel_gbuh";
buf_mtel="mtel_gbuh";
buf_mail="mail_gbuh";
break;
default:
buf_f="f_gdir";
buf_i="i_gdir";
buf_o="o_gdir";
buf_wtel="wtel_gdir";
buf_mtel="mtel_gdir";
buf_mail="mail_gdir";
}
DataModule2->tb_company->Filter="";
if(cb_rtype->Text.Length()>0)
{ if(DataModule2->tb_company->Filter.Length()>0)
DataModule2->tb_company->Filter += " AND ";
DataModule2->tb_company->Filter += "id_rtype="+IntToStr (cb_rtype->ItemIndex+1);;
}
if(edfind_name->Text.Length()>0)
{ if(DataModule2->tb_company->Filter.Length()>0)
DataModule2->tb_company->Filter += " AND ";
DataModule2->tb_company->Filter += "name='"+edfind_name->Text+"'";
}
if(edfind_f->Text.Length()>0)
{ if(DataModule2->tb_company->Filter.Length()>0)
DataModule2->tb_company->Filter += " AND ";
DataModule2->tb_company->Filter += buf_f+"='"+edfind_f->Text+"'";
}
if(edfind_i->Text.Length()>0)
{ if(DataModule2->tb_company->Filter.Length()>0)
DataModule2->tb_company->Filter += " AND ";
DataModule2->tb_company->Filter += buf_i+"='"+edfind_i->Text+"'";
}
if(edfind_o->Text.Length()>0)
{ if(DataModule2->tb_company->Filter.Length()>0)
DataModule2->tb_company->Filter += " AND ";
DataModule2->tb_company->Filter += buf_o+"='"+edfind_o->Text+"'";
}
if(edfind_wtel->Text.Length()>0)
{ if(DataModule2->tb_company->Filter.Length()>0)
DataModule2->tb_company->Filter += " AND ";
DataModule2->tb_company->Filter += buf_wtel+"='"+edfind_wtel->Text+"'";
}
if(edfind_mtel->Text.Length()>0)
{ if(DataModule2->tb_company->Filter.Length()>0)
DataModule2->tb_company->Filter += " AND ";
DataModule2->tb_company->Filter += buf_mtel+"='"+edfind_mtel->Text+"'";
}
if(edfind_mail->Text.Length()>0)
{ if(DataModule2->tb_company->Filter.Length()>0)
DataModule2->tb_company->Filter += " AND ";
DataModule2->tb_company->Filter += buf_mail+"='"+edfind_mail->Text+"'";
}
//ShowMessage(DataModule2->tb_company->Filter);
DataModule2->tb_company->Filtered=false;
DataModule2->tb_company->Filtered=true;
}
лишняя строка в TDBGrid при фильтрации в TADOTable
проблема такая - задаю фильтрациюв в тэйбле, если есть варианты - они отображаются в гриде, но если нет - то отображается первая запись в таблице, хотя по логике, не должно быть ни одной записи.
кто-нибуть в курсе - как исправить?:rolleyes:
С каким значением поля запись остается??
филтр фирмирую по типу поле='значение' AND поле='значение' AND и т.д. значения все текстовые.
Выводит грид мне просто первую строку (если не найдено совпадений по фильтру)
Какое именно выражение записано в фильтре??
При нормальном поведении компонента, такого происходить не должно и не может - поэтому, думаю, ты сам где-то замудрил.
2) Попробуй фильтровать только по одному полю (без операторов AND) - посмотри, что получится. Потом попробуй по другому полю - посмотри, что получится. Результаты выкладывай сюда.
мудрить там негде, все элементарно
2)пробовал - результат тот же самый
строчку для фильтра я вижу какая получается - вывожу мессагой, все корректно. если есть совпадение - выводится отфильтрованные записи, а если нет - выводится первая строка предыдущего запроса =(
настройки компонента все по умолчанию, кроме необходимых для подключения и т.п.
Кинь пример сюда!!
окей, вот метода для кнопки фильтра: