进出口使用SQL Server 2005中使用Delphi 2010SQL查询犯规完成
我有一个表ventas
与id_venta
(PK)= id_sale,total
(的销售),(以上数值),estado
=状态(有效/无效)和cumulative
。
该表注册商店的所有物品的销售,我需要注册总行逐行的累计总和。如果一天中有多个班次,则使用状态字段指定班次中的销售额。即时通讯使用此查询:
Declare @id integer;
set @id=(Select min(id_venta) from ventas where estado='activo');
while(select @id)<=(Select max(id_venta) from ventas)
begin
update ventas set acumulado=(select sum(total) from ventas
where id_venta<[email protected] and estado='activo') where [email protected]
select @[email protected]+1
end
此查询确实exacly我想要的东西,当我在SQL运行,但是当我做它在德尔福它只是给了我大约151行的431,不整理COMULATIVE。
这是我的Delphi代码:
conect.Q_equivalencias.Active:=false;
conect.Q_equivalencias.SQL.Clear;
conect.Q_equivalencias.SQL.Add('Declare @id integer; set @id=(Select min(id_venta) from ventas where estado='+char(39)+'activo'+char(39)+');');
conect.Q_equivalencias.SQL.Add('while(select @id)<=(Select max(id_venta) from ventas) begin');
conect.Q_equivalencias.SQL.Add('update ventas set acumulado=(select sum(total) from ventas ');
conect.Q_equivalencias.SQL.Add('where id_venta<[email protected] and estado='+char(39)+'activo'+char(39)+') where [email protected]');
conect.Q_equivalencias.SQL.Add('select @[email protected]+1 end');
conect.Q_equivalencias.ExecSQL;
我有什么做的,所以我在Delphi查询完成?
编辑:
奇怪的事情发生了,我试着用conect.Q_equivalencias.Open;
insted的的conect.Q_equivalencias.ExecSQL;
和ofcourse它扔我一个error creating cursor handler
但它完成了查询,所有行进行了更新,这是为什么?
试了很多东西,看来我的德尔福查询只更新152行...
您正在使用哪个数据库组件? – RRUZ
TQuery,TDataSource,通过ODBC连接,我有更多的插入,更新,选择查询,但这是唯一一个给我一个问题,查询本身做什么必须在SQL管理Studio Express中做但在Delphi 2010中不完。 –
我见过一个类似的问题,那就是查询花费的时间长度,如果它占用了一定的数量,它将只是无限期地挂起。这是几年前,我不记得我们如何解决它。 –