如何用TTable 组件实现非主键的模糊查询
Table1->Filter="PYM='Y*'";
Table1->Filtered=true;
这样只能查到以Y开头的所有记录,但是我想查找带Y的所有记录,请问用Table 组件如何实现?
就像Query 的select * from biao1 where pym like '%Y%' 一样
我想这样,但是不行
Table1->Filter="PYM='*Y*'";
Table1->Filtered=true;
用%还是不行
问题点数:50、回复次数:7Top
1 楼kmfangxun()回复于 2004-09-04 17:01:22 得分 5
用TTable实现模糊查询,成本太高,不划算啊,还是用TQuery算了。Top
2 楼Libran()回复于 2004-09-04 19:18:08 得分 0
先把Table1->Filtered置为true,Table1->Filter留为空;
再在Table1的OnFilterRecord事件里写代码:
Accept = DataSet->FieldByName("FilterRecord")->AsString.Pos("Y") > 0;
运行后就能显示带Y的所有记录Top
3 楼Libran()回复于 2004-09-04 19:19:11 得分 25
更正一下:
Accept = DataSet->FieldByName("PYM")->AsString.Pos("Y") > 0;
运行后就能显示PYM字段带"Y"的所有记录
Top
4 楼binbin(破坏分子)回复于 2004-09-04 19:22:12 得分 0
用TQuery不好吗.Top
5 楼wakala(*白木)回复于 2004-09-05 16:58:17 得分 10
Table1->DatabaseName = "DBDemos";
Table1->TableName = "Customer.db";
Table1->Active = true;
Table1->IndexName = "ByCompany";// 换成数值字段名
Table1->FindNearest(ARRAYOFCONST((Edit1->Text /* 要查询的字段 */)));
Top
6 楼CB1013()回复于 2004-09-06 08:53:00 得分 5
void __fastcall TForm1::Button1Click(TObject *Sender)
{
bool LocateSuccess;
TLocateOptions SearchOptions;
SearchOptions<<loPartialkey;
LocateSuccess=CustTable->Locate("要搜索的字段名称","搜索条件",SearchOption);
}
SearchOption:为搜索旗标,两种情况:分别是loCaseInsensitive(寻找时不分大小写)、loPartialKey(寻找的资料只要部分符合)
Top
7 楼heguxun(低级程序员)回复于 2004-09-06 16:21:08 得分 5
用TTabel的Filter效率很低的,建议用TQueryTop




