我是delphi新手,在作个实验室信息管理系统,有个问题请大家帮帮忙啊 !tbl_sjhctk
入库日期 入库单号 品名代码 单价 数量 金额 有效期 操作者 供应商 发票号 批号 tbl_pmcx
品名代码(主键) 拼音码 品名 规格 组别 单位 厂商 批准文号我想生成一个汇总报表,生成的字段是:
品名 规格 单位 厂商 均价 汇总数量 汇总金额我是这样些代码的(delphi7.0 SQL 2005)
先定义一个常量字符串
constSelect_hzbb ='select tbl_pmcx.品名,tbl_pmcx.规格,tbl_pmcx.单位,tbl_pmcx.厂商,tbl_sjhcrk.汇总数量,tbl_sjhcrk.汇总金额,tbl_sjhcrk.均价'
+' FROM dbo.tbl_pmcx RIGHT JOIN'
+'( SELECT tbl_sjhcrk.品名代码, SUM(tbl_sjhcrk.数量) AS 汇总数量, SUM(tbl_sjhcrk.数量) / COUN(tbl_sjhcrk.数量) AS 均价, SUM(tbl_sjhcrk.数量) * (SUM(tbl_sjhcrk.数量) / COUNT(tbl_sjhcrk.数量)) AS 汇总金额 FROM tbl_sjhcrk GROUP BY tbl_sjhcrk.品名代码)'
+' ON tbl_pmcx.品名代码 = tbl_sjhcrk.品名代码';
constOrder=' ORDER BY dbo.tbl_sjhcrk.入库日期, dbo.tbl_sjhcrk.入库单号, dbo.tbl_pmcx.品名';后面的SQL执行代码是 //strWh是由自己写的一个函数生成的查询条件
函数为:(function TFm_rkcx.GetStrH(FldName:string;cboText:TComboBox):WideString;)
SQL.Add(constSelect +' where 入库日期 between :p0 and :p1' + strWh+ constOrder);
parameters[0].Value:=DTP_qsrq.date;//起始日期
parameters[1].Value:=DTP_jsrq.date;//结束日期执行时提示——关键字'ON'附近有语法错误
入库日期 入库单号 品名代码 单价 数量 金额 有效期 操作者 供应商 发票号 批号 tbl_pmcx
品名代码(主键) 拼音码 品名 规格 组别 单位 厂商 批准文号我想生成一个汇总报表,生成的字段是:
品名 规格 单位 厂商 均价 汇总数量 汇总金额我是这样些代码的(delphi7.0 SQL 2005)
先定义一个常量字符串
constSelect_hzbb ='select tbl_pmcx.品名,tbl_pmcx.规格,tbl_pmcx.单位,tbl_pmcx.厂商,tbl_sjhcrk.汇总数量,tbl_sjhcrk.汇总金额,tbl_sjhcrk.均价'
+' FROM dbo.tbl_pmcx RIGHT JOIN'
+'( SELECT tbl_sjhcrk.品名代码, SUM(tbl_sjhcrk.数量) AS 汇总数量, SUM(tbl_sjhcrk.数量) / COUN(tbl_sjhcrk.数量) AS 均价, SUM(tbl_sjhcrk.数量) * (SUM(tbl_sjhcrk.数量) / COUNT(tbl_sjhcrk.数量)) AS 汇总金额 FROM tbl_sjhcrk GROUP BY tbl_sjhcrk.品名代码)'
+' ON tbl_pmcx.品名代码 = tbl_sjhcrk.品名代码';
constOrder=' ORDER BY dbo.tbl_sjhcrk.入库日期, dbo.tbl_sjhcrk.入库单号, dbo.tbl_pmcx.品名';后面的SQL执行代码是 //strWh是由自己写的一个函数生成的查询条件
函数为:(function TFm_rkcx.GetStrH(FldName:string;cboText:TComboBox):WideString;)
SQL.Add(constSelect +' where 入库日期 between :p0 and :p1' + strWh+ constOrder);
parameters[0].Value:=DTP_qsrq.date;//起始日期
parameters[1].Value:=DTP_jsrq.date;//结束日期执行时提示——关键字'ON'附近有语法错误
我按您的提示加了别名
但有提示错误——无法绑定由多个部分组成的标识符 'tbl_sjhcrk.品名代码'
这是什么意思,该怎么办呢
谢谢!
' tbl_pmcx.规格,'#13#10 +
' tbl_pmcx.单位,'#13#10 +
' tbl_pmcx.厂商,'#13#10 +
' tbl_sjhcrk.汇总数量,'#13#10 +
' tbl_sjhcrk.汇总金额,'#13#10 +
' tbl_sjhcrk.均价'#13#10 +
' FROM dbo.tbl_pmcx '#13#10 +
' RIGHT JOIN' +
' ( SELECT tbl_sjhcrk.品名代码,'#13#10 +
' SUM(tbl_sjhcrk.数量) AS 汇总数量,'#13#10 +
' SUM(tbl_sjhcrk.数量) / COUN(tbl_sjhcrk.数量) AS 均价,'#13#10 +
' SUM(tbl_sjhcrk.数量) * (SUM(tbl_sjhcrk.数量) / COUNT(tbl_sjhcrk.数量)) AS 汇总金额'#13#10 +
' FROM tbl_sjhcrk '#13#10 +
' GROUP BY tbl_sjhcrk.品名代码'#13#10 +
' ) AS tbl_sjhcrk '#13#10 +
' ON tbl_pmcx.品名代码 = tbl_sjhcrk.品名代码';
const Order=' ORDER BY '#13#10 +
' tbl_sjhcrk.入库日期,'#13#10 + //无效,group by之后没有出现'入库日期',需要去掉
' tbl_sjhcrk.入库单号,'#13#10 + //无效,group by之后没有出现'入库单号',需要去掉
' tbl_pmcx.品名';
我想实现报表打印,使用delphi7,已经安装了QReport组件,但点击打印按钮时报错
代码如下:
procedure TFm_rkcx.BitBtn_dyClick(Sender: TObject);
begin
if DBG_rkcx.DataSource=DaSo_rkcxll then
begin
With Fm_rkcx_dy.ADOQry_mxbbdy do
begin
close;
SQL.Clear;
SQL.Add(constSelect_mxdy +' where 入库日期 between :p0 and :p1' + strWh + constOrder);
parameters[0].Value:=DTP_qsrq.date;
parameters[1].Value:=DTP_jsrq.date;
Active:=true;
ExecSQL;
end;
Fm_rkcx_dy.QReport.Print;
end;
end;
执行时报错——Access violation at address 00513BF3 in module 'Psjhcgl.exe'.Read of address 000002FC