我将 SQL Server 2005 与 Delphi 2010 一起使用
ventas
我有一张id_venta
(PK)= id_sale, total
(of the sale), (more values), estado
=state(active/inactive) 和cumulative
.
该表记录了一个商店的所有商品的销售额,我需要逐行记录总和的累计。如果一天中有多个班次,我使用 state 字段来指定班次中的销售额。我使用这个查询:
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<=@id and estado='activo') where id_venta=@id
select @id=@id+1
end
当我在 SQL 上运行它时,这个查询完全符合我的要求,但是当我在 delphi 上执行它时,它只给了我大约 151 行 431 的累积,没有完成。
这是我的德尔福代码:
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<=@id and estado='+char(39)+'activo'+char(39)+') where id_venta=@id');
conect.Q_equivalencias.SQL.Add('select @id=@id+1 end');
conect.Q_equivalencias.ExecSQL;
我该怎么做才能完成我在 Delphi 中的查询?
编辑:
刚刚发生了奇怪的事情,我尝试了conect.Q_equivalencias.Open;
insted of conect.Q_equivalencias.ExecSQL;
,当然它抛出了我,error creating cursor handler
但它完成了查询,所有行都更新了,这是为什么呢?
尝试了很多东西,似乎我在 delphi 上的查询只更新了 152 行......