请教TTable与TQuery的问题!!!!

时间:2021-07-26 08:05:57
假如设置了TTable的filter属性,是应用程序先把所有数据都读到本地,然后再按filter的属性去filter???还是直接生成select * from table_aaa where age=19这样的请求???
因为带宽有限,如果要把数据都读到本地,在按filter去过滤,那么速度肯定有问题。
假如设定好filter后ttable直接生成的是select * from table_aaa where age=19这样的请求,那么过滤操作就在服务器端进行了,也就不用传递所有数据了。

所以请教各位TTable的filter到底是怎样实现的???

11 个解决方案

#1


是把数据都读到本地,再按filter去过滤!有sql monitor为证。

#2


那可怎么办呀???

我用TQuery又不能edit,设置requestlive又不能支持特殊语法,请教各位有什么好的办法呀!!!

pb就不这样!

#3


用TQuery直接修改Sql属性,然后执行ExecSql函数就可以了,怎么会不行呢

#4


如果你用的是SQL Server,你可以在服务器端用SQL Trace(6.5) 或 Profiler(7.0) 来查看客户端发送给服务器的SQL   语句稍加分析一下  ,   就可以知道其运行方式了!

我记得好象是由TTable组件形成SQL语句,过滤操作是在服务器上执行的

#5


TQuery可以啊!
加TUpdatesql组件就可以对多表查询操作了!

#6


TUpdatesql的用法和TQuery一样吗???!!!!

不过我还是想搞明白TTable的filter到底是怎样运做的!!!

请各位继续讨论,明日结贴。

#7


同意WhyAndAnswer(明白) 的作法。
我都很久没有用过了,不过记得BCB的帮助中专门有教如何使用UpdateSQL。大概是这么一个过程:放一个TQuery和一个TUpdateSQL,你在TQuery中把requestlive设为true,并把其UpdateObject设为TUpdateSQL,当TQuery被更改后,TQuery会调用TUpdateSQL中的对应的语句(Insert,Delete,Update,这样语句是TUpdateSQL的属性,你自已写的)。说是这样,有一些细节是要处理的如UpdateRecord事件,细节看帮助吧。

#8


* 回复人: WhyAndAnswer(明白) (  ) 信誉:100  2002-06-19 12:54:00  *得分:0  是把数据都读到本地,再按filter去过滤!有sql monitor为证。
  
所以filter应就是自在内存中把要找的数据给找出来。

#9


使用Query,
Query1->SQL->Add("Insert into Table Values(:ID,:ImageField)");
..............
Query1->Params->ParamByName("ImageField")->SetBlobData(lpBuf,size);
Query1->ExecSQL();
lpBuf为存放数据的缓存。

#10


学习

#11


filter其实我觉得作用不是很大,多表的filter我没用过。
说一下:UpdateSQL
拉一个TUpdateSQL组件,设置Query1->UpdateObject=UpdateSQL1,打开UpdateSQL1的编辑器,应已列出了所有的字段,选择你要更新修改的字段,点击Generate SQL,就可以了!

#1


是把数据都读到本地,再按filter去过滤!有sql monitor为证。

#2


那可怎么办呀???

我用TQuery又不能edit,设置requestlive又不能支持特殊语法,请教各位有什么好的办法呀!!!

pb就不这样!

#3


用TQuery直接修改Sql属性,然后执行ExecSql函数就可以了,怎么会不行呢

#4


如果你用的是SQL Server,你可以在服务器端用SQL Trace(6.5) 或 Profiler(7.0) 来查看客户端发送给服务器的SQL   语句稍加分析一下  ,   就可以知道其运行方式了!

我记得好象是由TTable组件形成SQL语句,过滤操作是在服务器上执行的

#5


TQuery可以啊!
加TUpdatesql组件就可以对多表查询操作了!

#6


TUpdatesql的用法和TQuery一样吗???!!!!

不过我还是想搞明白TTable的filter到底是怎样运做的!!!

请各位继续讨论,明日结贴。

#7


同意WhyAndAnswer(明白) 的作法。
我都很久没有用过了,不过记得BCB的帮助中专门有教如何使用UpdateSQL。大概是这么一个过程:放一个TQuery和一个TUpdateSQL,你在TQuery中把requestlive设为true,并把其UpdateObject设为TUpdateSQL,当TQuery被更改后,TQuery会调用TUpdateSQL中的对应的语句(Insert,Delete,Update,这样语句是TUpdateSQL的属性,你自已写的)。说是这样,有一些细节是要处理的如UpdateRecord事件,细节看帮助吧。

#8


* 回复人: WhyAndAnswer(明白) (  ) 信誉:100  2002-06-19 12:54:00  *得分:0  是把数据都读到本地,再按filter去过滤!有sql monitor为证。
  
所以filter应就是自在内存中把要找的数据给找出来。

#9


使用Query,
Query1->SQL->Add("Insert into Table Values(:ID,:ImageField)");
..............
Query1->Params->ParamByName("ImageField")->SetBlobData(lpBuf,size);
Query1->ExecSQL();
lpBuf为存放数据的缓存。

#10


学习

#11


filter其实我觉得作用不是很大,多表的filter我没用过。
说一下:UpdateSQL
拉一个TUpdateSQL组件,设置Query1->UpdateObject=UpdateSQL1,打开UpdateSQL1的编辑器,应已列出了所有的字段,选择你要更新修改的字段,点击Generate SQL,就可以了!