关于TQuery的问题(50分)

  • 主题发起人 主题发起人 delphi_jzy
  • 开始时间 开始时间
D

delphi_jzy

Unregistered / Unconfirmed
GUEST, unregistred user!
1.假设有一个animal.db的表,如果按照某种条件查询生成一个结果表后,如何对查询的结果表进行 某种条件的进一步查询,
如:select * from animal where name=horse;
进行完这个查询后,想进一步对结果表查询color=white在程序中应怎样实现?
2.在一个数据库中,如何象在数组中一样准确的定位每一条纪录,如:修改完第一条记录后,如何能按step=i(i为一个变量)的规律一次定位以下纪录,并能对每条纪录进行修改.
 
1. select * from animal
where name=horse and color=white
2.一个笨办法:
for i:=1 to step do
begin
adoquery.next;
end;
如果想修改记录,则加上adoquery.edit;修改后保存则用adoquery.updatebatch(前提是将
它的locktype属性设置为ltBatchOptimistic)
 
对第1个问题有两种办法:
1)用filter, 即用如下代码:
filter :='color=''white''';
filtered :=true;
2)重写SQL语句 Where语句中多一个条件
对第个问题:
设置Request Live属性为True,这样就可以将TQuery如同TTable一样处理,
你可以在帮助中看到TTable有的功能,TQuery都有!
 
我可能没说明白我的意思,我想知道,怎样把查询结果生成的表作为一个新表进行处理;
如何在程序中动态的处理新生成的表.用TQuery控件.
 
比如:
Query1的查询条件为: select * from animal where name=horse;
Datasource1的DataSet = Query1
则,
可以设Query2的DataSource属性为Datasource1,再对
Query2的查询条件设为: select * from animal where color=white即可。

 
to huiber:如果查询递增这种方法就不实用了,比如说他还要在color=white这个条件下
再进行刷选。我想最好就是在内存里建个虚拟表,这以前讨论过,我的处理办法一般都是建
立临时表
 
jobsxy,怎样在内存里建个虚拟表,能告诉我吗
 
你的问题自相矛盾,条件本身是并列的,不存在再筛选,and就够了!
 
Huiber说的行不通,我试了多次,根本无效。
 
最好的办法是用batchmove控件,将query1的查询结果存为一个临时表,然后在
query2中再对这个临时表进行查询。
batchmove控件的用法,论坛上以前已经有了详细的介绍。
其他什么select into 和insert to 等等我都试过了好象不行。
 
select * from tablename where name=:horse and color=:white
 
多人接受答案了。
 
后退
顶部