DELPHI中调用带有日期型参数的存储过程
CREATE PROCEDURE 合计
@date1 datetime,@date2 datetime
AS select top 20 a.物料代码,sum(a.总数量)as 数量合计,sum(a.总金额)as 金额合计,a.物料名称,a.型号 from
(SELECT dbo.sbilldet.itemno AS 物料代码, SUM(dbo.sbilldet.qty) AS 总数量 ,
SUM(dbo.sbilldet.sellsum) AS 总金额, dbo.itemdata.itemname AS 物料名称,
dbo.itemdata.descript AS 型号,dbo.sbillmst.carddt as 日期
FROM dbo.sbilldet INNER JOIN
dbo.sbillmst ON dbo.sbilldet.sysno = dbo.sbillmst.sysno INNER JOIN
dbo.enterprise ON dbo.sbillmst.compno = dbo.enterprise.compno INNER JOIN
dbo.itemdata ON dbo.sbilldet.itemno = dbo.itemdata.itemno
GROUP BY dbo.sbilldet.itemno, dbo.itemdata.itemname, dbo.itemdata.descript,
dbo.sbillmst.carddt, dbo.sbillmst.ischeck
HAVING (SUM(dbo.sbilldet.qty) >= 0) AND (dbo.sbillmst.ischeck = 1) AND
(dbo.sbillmst.carddt >=@date1 AND
dbo.sbillmst.carddt <= @date2)) a
group by a.物料代码,a.物料名称,a.型号
order by 数量合计 desc
GO
procedure TForm1.Button1Click(Sender: TObject);
begin
if datetimepicker1.Date >datetimepicker2.Date then
begin
showmessage('开始日期大于终止日期');
datetimepicker1.SetFocus ;
exit;
end;
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.SQL.text:='execute 合计 (:date1,:date2)';
adoquery1.Parameters.ParamByName('@date1').value:=DateTimePicker1.DateTime;
adoquery1.Parameters.ParamByName('@Date2').Value:=DateTimePicker2.DateTime;
adoquery1.ExecSQL;
adoquery1.refresh;
end;