请问: 如何实现象ACCESS那样的查找功能和筛选功能!

longwycn 2004-08-30 04:10:11
如: ACCESS中可以 FindFirst 和FindNext,可以接着查询,用什么函数!
筛选后去除筛选用什么代码,是重新Close 和OPEN 查询吗<

谢谢!
想了半天,实在不懂!
...全文
164 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
longwycn 2004-08-31
  • 打赏
  • 举报
回复
谢谢 tiegerium(/*熊猫*/

仔细看了你的代码,终于明白!
那是触发方式不同而已,我可以自己控制代码,然后实现

也同意lvjacK的说法,感觉filter不是加入条件的sql重新查询
filter比重新查询快.
因为重新查询如果数据量大,或者如果做成三层模式时,重新查询的代价比较大!
使用clientDataSet时,filter应该不慢才对!
真如实观 2004-08-31
  • 打赏
  • 举报
回复
我不知道你的需求,“使用Locate可以查找,但做不到按回车可以继续查找下一条记录!”,那是触发方式不同而已,但是使用Locate可以查找也是需要条件的,你具体想怎样?
真如实观 2004-08-31
  • 打赏
  • 举报
回复
1、查找:
TLocateOptions Opts;
Opts.Clear();
Opts << loPartialKey;//部分匹配
Variant fieldValue;
fieldValue=Edit1->Text;
ADODataSet1->Locate("DeptName",fieldValue,Opts);
2、过滤:
ADODataSet1->Filter="你的字段='"+Edit1->Text+"'";
ADODataSet1->Filtered=true;
3、取消过滤:
if(ADODataSet1->Filtered==true)
{
ADODataSet1->Filtered=false;
ADODataSet1->Filter="";//取消过滤
CancelFilter->Enabled=false;
}
4、如果通过克隆数据集查找和过滤数据更快,在这里我就不多说了。
lvjack 2004-08-30
  • 打赏
  • 举报
回复
感觉filter不是加入条件的sql重新查询
filter比重新查询快
constantine 2004-08-30
  • 打赏
  • 举报
回复
如果却是没有办法你就把结果存到一个临时表里面去,再在里面搜索了
longwycn 2004-08-30
  • 打赏
  • 举报
回复
同意安吉儿的说法,但并没有提供可参考的方法!
使用Locate可以查找,但做不到按回车可以继续查找下一条记录!
可以连续查找想要的数据!
其实关键是这里我不理解!

至于 子寒
并没有提供可参考的,或者可以使用的方法!
zihan 2004-08-30
  • 打赏
  • 举报
回复
////首先: 你有没有操作过ACCESS.
2. 请看一看ACCESS 的查找功能和Filter功能!
你说的那些我都懂,明白吗?
我问的是他这种功能是如何实现的?


第一. 这个应该还是可以回答操作过的吧.

第二. Filter正如安吉儿说的那样,也是解析成一个sql而已.

第三. 如果你真的都懂了,那么应该不会有这样的问题.数据库的东西又岂是一个findfirst之类的能够实现的.
constantine 2004-08-30
  • 打赏
  • 举报
回复
不是你说的那样的,用ACCESS查找时应该不用SQL语言的,因为DBGRID的数据并没有变化的!
那是你的问题如果你都懂了就不会有这样的问题了,
Filter,控件的属性吗?
这个最终也要解析成sql吧,效率低的东西

GRID的资料应该就是select * from a where name = "a" 的数据了!
这个是肯定的,如果你的代码对的话!
longwycn 2004-08-30
  • 打赏
  • 举报
回复
首先: 你有没有操作过ACCESS.
2. 请看一看ACCESS 的查找功能和Filter功能!
你说的那些我都懂,明白吗?
我问的是他这种功能是如何实现的?
zihan 2004-08-30
  • 打赏
  • 举报
回复
不懂你的意思了,

我还是第一次听说access不是用sql的.主要是不明白你的意思.

什么grid什么数据都把我搞糊涂了.
longwycn 2004-08-30
  • 打赏
  • 举报
回复
不是你说的那样的,用ACCESS查找时应该不用SQL语言的,因为DBGRID的数据并没有变化的!
而如果象你说的那样,GRID的资料应该就是select * from a where name = "a" 的数据了!
wg961423 2004-08-30
  • 打赏
  • 举报
回复
1、查询:去看看TTable的帮助!
2、筛选:是用的TTable->Filtered和TTable->Filter完成!
zihan 2004-08-30
  • 打赏
  • 举报
回复
查询结果就是被筛选出来的一个数据集,你可以直接使用,所以不用什么findfirst那么麻烦了,也不用筛选.直接读取,要读取下一条,一个next就可以了.

比如说select * from a where name = "a"
就表示在a表中查询名字为a的数据集,结果就是你要的东西.就这么简单了.

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧