从多重条件查询的结果中统计记录数(30分)

  • 主题发起人 主题发起人 ntjrr
  • 开始时间 开始时间
N

ntjrr

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个查询是这样的:<br>adoquery1.sql.add('select * from 表 where 1=1')<br>if CheckBox1.Checked then<br>adoquery1.sql.add('and .....')<br>if CheckBox2.Checked then<br>adoquery1.sql.add('and .....')<br>.....<br>一共有好多个可能附加的条件,在上述查询出来的结果中再查询,如果是ACCESS数据就相当简单可以这样做到:<br>adoquery2.SQL.Text := 'Select 姓名 From (' + adoquery1.SQL.Text + ') group by 姓名'<br>但在sql2000数据库中是不能运行这种句式的,不知道有什么方法统计出上面结果中的不同姓名的记录数量?
 
你说的查不到数据是指找到记录数为0还是找不到表?
 
查询记录不用 try except 吧!<br>if adoquery.recordcount&lt;1 then <br>&nbsp;{todo}<br>else<br>{todo}
 
select又不修改或删除数据。用个鬼事物。
 
try<br>adoquery.sql.add('select * from 表')<br>adoquery.open<br>except<br>showmessage('查询失败!');<br>end
 
查询语句使用事物?呵呵!
 
可以在某个位置用 raise exception.create 来触发异常,这样就会跳转到EXCEPT<br>不过如上几位所说,你些的这段代码实在异类。
 
先感谢大家的回答,可能是我的问题写少了,我再说具体一点吧:<br>try<br>ADOConnection1.BeginTrans<br>新增表A中的记录到表B,反正有一大串代码呢<br>adoquery.sql.add('select * from 表A');//再次检查一下表A中的内容,因为有可能随时被删除掉,如表A删除掉后那上面的新增到表B的代码也就不能让它完成,因为两表要保持同步。我说的不是查不到表A,而是查到的记录为空或为0后就要执行EXCEPT后的语句,后来我自己这样做的:如果查询表A内容为空则执行 strtofloat('abc'),一出错就自然要跳到后面去了,不知是否还有其它好方法?<br>ADOConnection1.CommitTrans;<br>except<br>ADOConnection1.RollBackTrans;<br>end
 
多人接受答案了。
 
后退
顶部