关于FILTER属性的应用和二次查询问题?(15分)

  • 主题发起人 主题发起人 liyipeng
  • 开始时间 开始时间
L

liyipeng

Unregistered / Unconfirmed
GUEST, unregistred user!
我用的是VFP5的表

我在程序的设计阶段使用FILTER可以实现过滤,为什么在运行阶段不能。
但是在运行时FILTER可以做如下的运行

比如:

1. QUERY1.FILTER:='YB=''100075''';
QUERY1.FILTERED:=TRUE;
这种的FILTER条件可以运行

2. 但是如果这么写就不能运行了.
QUERY1.FILTER:='YB=''100%(或者是这个符号*)''';
QYERY1.FILTERED:=TRUE;

2运行完了,DBGRID中什么都没有,1运行完了有东西
请问如何做才能做到模糊查询(在运行阶段).

我的初衷是对数据表进行二次查询(对查询完的的东西再查询,如果有好的
建议做法,也可以.)

查询完的结果是不是保存在QUERY中,如果是的话,在QUERY.CLOSE后还有数据
吗?如何将查询的结果进行传递.比如(在一个表单中执行SQL,在另外一个表单
中看结果)?

今天的问题比较多,希望给为大富翁鼎立相助.:)谢谢


 
1)Delphi里我一般不用filter,Sql语句多方便(偶不懂vfp的说)
2)二次查询?不是select子句?
 
1. 一般地, 在filter=... 前面要加 query1.filtered:=false;然后
query1.filter=...;query1.filtered:=true;
而且必须保证query是open状态的.
模糊查找是用*, ? 充当通配字符的

2. 可能是VFP不支持filter这种查询方式, 看看Delphi的help, 它的建议是
能不用filter的尽量不用filter, 因为filter又占资源又不能通用.
建议用select语句, filter归根到底是where 语句.

query1.close后数据就没有了, 在另一个表(应该是form或另一个form.dbgrid吧?)
中查看的话直接引用这个query1的全局名称就是了, 比如form1.query1
 
查询时用Query较好,较灵活,但在(用dbgrid)数据编辑时,虽然可将RequestLive置Ture,

但此时就不够灵活了,比如无法按要求的一个或两个字段排序,不知各位怎样解决的?
 
既用Query,何用Filter
 
接受答案了.
 
后退
顶部