Delphi 2010でSQL Server 2005を使用しています
(PK)= id_sale、(ventas
販売の)、(その他の値)、=state(active/inactive) および.id_venta
total
estado
cumulative
テーブルには店舗の商品のすべての売上が登録されており、行ごとに合計の累積合計を登録する必要があります。1 日に複数のシフトがあった場合、状態フィールドを使用してそのシフトで行われた売上を指定します。このクエリを使用しています:
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 で実行すると正確に実行されますが、デルファイで実行すると、約 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 ofconect.Q_equivalencias.ExecSQL;
を試してみましたが、もちろんそれは私をスローしましたerror creating cursor handler
が、クエリを終了し、すべての行が更新されました。なぜですか?
多くのことを試しましたが、デルファイでの私のクエリは152行しか更新しないようです...