我有一段代码
OleDbDataReader P_dr = G_SqlExecute.GetReader("SELECT TOP 1 结余日期 FROM 成品库存结余表 ORDER BY 结余日期 DESC");
P_dr.Read();
string dt = Convert.ToString(P_dr["结余日期"].ToString());P_Str_cmdtxt = "SELECT m.*,IIF(ISNULL(p.结余数量),0,p.结余数量)+IIF(ISNULL(I.入库数量),0,I.入库数量)-IIF(ISNULL(O.出库数量),0,O.出库数量) AS 库存数量,IIF(ISNULL(p.结余重量(吨)),0,p.结余重量(吨))+IIF(ISNULL(I.入库重量),0,I.入库重量)-IIF(ISNULL(O.出库重量),0,O.出库重量) AS 库存重量(吨) FROM (((";
P_Str_cmdtxt += "SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品库存结余表 UNION SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品入库表 UNION SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品出库表) m ";
P_Str_cmdtxt += " LEFT JOIN (SELECT 产品名称,包装规格,产品批号,仓库,结余数量,结余重量(吨) FROM 成品库存结余表) p ON m.产品名称=p.产品名称 AND m.包装规格=p.包装规格 AND m.产品批号=p.产品批号 AND m.仓库=p.仓库)";
P_Str_cmdtxt += " LEFT JOIN (SELECT 产品名称,包装规格,产品批号,仓库,SUM(件数) AS 入库数量,SUM(总重量(吨)) AS 入库重量 FROM 成品入库表 WHERE 入库日期>#" + dt + "# GROUP BY 产品名称,包装规格,产品批号,仓库) I ON m.产品名称=I.产品名称 AND m.包装规格=I.包装规格 AND m.产品批号=I.产品批号 AND m.仓库=I.仓库)";
老是报错说当前上下文找不到dt,也不知道是为什么?
请大家给点意见,我的这个时间是没有控件显示的.
谢谢!
OleDbDataReader P_dr = G_SqlExecute.GetReader("SELECT TOP 1 结余日期 FROM 成品库存结余表 ORDER BY 结余日期 DESC");
P_dr.Read();
string dt = Convert.ToString(P_dr["结余日期"].ToString());P_Str_cmdtxt = "SELECT m.*,IIF(ISNULL(p.结余数量),0,p.结余数量)+IIF(ISNULL(I.入库数量),0,I.入库数量)-IIF(ISNULL(O.出库数量),0,O.出库数量) AS 库存数量,IIF(ISNULL(p.结余重量(吨)),0,p.结余重量(吨))+IIF(ISNULL(I.入库重量),0,I.入库重量)-IIF(ISNULL(O.出库重量),0,O.出库重量) AS 库存重量(吨) FROM (((";
P_Str_cmdtxt += "SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品库存结余表 UNION SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品入库表 UNION SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品出库表) m ";
P_Str_cmdtxt += " LEFT JOIN (SELECT 产品名称,包装规格,产品批号,仓库,结余数量,结余重量(吨) FROM 成品库存结余表) p ON m.产品名称=p.产品名称 AND m.包装规格=p.包装规格 AND m.产品批号=p.产品批号 AND m.仓库=p.仓库)";
P_Str_cmdtxt += " LEFT JOIN (SELECT 产品名称,包装规格,产品批号,仓库,SUM(件数) AS 入库数量,SUM(总重量(吨)) AS 入库重量 FROM 成品入库表 WHERE 入库日期>#" + dt + "# GROUP BY 产品名称,包装规格,产品批号,仓库) I ON m.产品名称=I.产品名称 AND m.包装规格=I.包装规格 AND m.产品批号=I.产品批号 AND m.仓库=I.仓库)";
老是报错说当前上下文找不到dt,也不知道是为什么?
请大家给点意见,我的这个时间是没有控件显示的.
谢谢!
P_Str_cmdtxt += " LEFT JOIN (SELECT 产品名称,包装规格,产品批号,仓库,SUM(件数) AS 入库数量,SUM(总重量(吨)) AS 入库重量 FROM 成品入库表 WHERE 入库日期>#" + P_dr["结余日期"] + "# GROUP BY 产品名称,包装规格,产品批号,仓库) I ON m.产品名称=I.产品名称 AND m.包装规格=I.包装规格 AND m.产品批号=I.产品批号 AND m.仓库=I.仓库)";
这么多tostring做什么呢
OleDbDataReader P_dr = G_SqlExecute.GetReader("SELECT TOP 1 结余日期 FROM 成品库存结余表 ORDER BY 结余日期 DESC");
P_dr.Read();说明这段代码和你的 P_Str_cmdtxt = ... 没有放在一块。
有一个ToString就已经变成字符串了,多了一个只会影响效率,没意义。。
P_dr.Read();上面和下面这两段代码要紧挨着,中间不要有其他代码试试:P_Str_cmdtxt = ...;
P_Str_cmdtxt += ...;
P_Str_cmdtxt += ... + P_dr["结余日期"] + ...;
然后你在大括号外边用了
你应该这样
string dt;
{
OleDbDataReader P_dr = G_SqlExecute.GetReader("SELECT TOP 1 结余日期 FROM 成品库存结余表 ORDER BY 结余日期 DESC");
P_dr.Read();
dt = P_dr["结余日期"].ToString();}
P_Str_cmdtxt = "SELECT m.*,IIF(ISNULL(p.结余数量),0,p.结余数量)+IIF(ISNULL(I.入库数量),0,I.入库数量)-IIF(ISNULL(O.出库数量),0,O.出库数量) AS 库存数量,IIF(ISNULL(p.结余重量(吨)),0,p.结余重量(吨))+IIF(ISNULL(I.入库重量),0,I.入库重量)-IIF(ISNULL(O.出库重量),0,O.出库重量) AS 库存重量(吨) FROM (((";
P_Str_cmdtxt += "SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品库存结余表 UNION SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品入库表 UNION SELECT 产品名称,包装规格,产品批号,仓库 FROM 成品出库表) m ";
P_Str_cmdtxt += " LEFT JOIN (SELECT 产品名称,包装规格,产品批号,仓库,结余数量,结余重量(吨) FROM 成品库存结余表) p ON m.产品名称=p.产品名称 AND m.包装规格=p.包装规格 AND m.产品批号=p.产品批号 AND m.仓库=p.仓库)";
P_Str_cmdtxt += " LEFT JOIN (SELECT 产品名称,包装规格,产品批号,仓库,SUM(件数) AS 入库数量,SUM(总重量(吨)) AS 入库重量 FROM 成品入库表 WHERE 入库日期>#" + dt + "# GROUP BY 产品名称,包装规格,产品批号,仓库) I ON m.产品名称=I.产品名称 AND m.包装规格=I.包装规格 AND m.产品批号=I.产品批号 AND m.仓库=I.仓库)";
吧dt定义在外边
OleDbDataReader P_dr = G_SqlExecute.GetReader(...);
if (P_dr.Read())
{
P_Str_cmdtxt = ...;
P_Str_cmdtxt += ...;
P_Str_cmdtxt += ... + P_dr["结余日期"] + ...;
}