sqlserver2000+pb :select Error:SQLSTATE = S1093 无效的参数号码

xueru9999 2008-01-25 01:36:21
我用pb 建立了一个比较复杂的数据窗口,传入4个参数 s_min,s_max,s_jz,s_ck
当变量改成常量没有问题,使用变量就会提示 select Error:SQLSTATE = S1093 无效的参数号码
数据库使用 sqlserver2000
sql语句如下:
select 大类编码,名称,
SUM(期初金额) AS 期初金额,
SUM(自购金额) AS 自购金额,
SUM(收入调整)AS 收入调整,
SUM(收入年累) AS 收入年累,
SUM(生产用料) AS 生产用料,
SUM(让价) AS 让价,
SUM(让价年累) AS 让价年累,
SUM(调整) AS 调整,
SUM(报损) AS 报损,
SUM(发出年累) AS 发出年累,
SUM(期末金额) AS 期末金额
from jcb_dlbm as b LEFT OUTER JOIN
(SELECT LEFT(器材编号, 2) AS 大类, SUM(期初金额) AS 期初金额, 0 AS 自购金额,
0 AS 收入调整, 0 AS 收入年累, 0 AS 生产用料, 0 AS 让价, 0 AS 让价年累, 0 AS 调整, 0 AS 报损,
0 AS 发出年累, 0 AS 期末金额
FROM dbo.Kc
WHERE (日期 = :s_min)
GROUP BY LEFT(器材编号, 2)
UNION ALL
SELECT LEFT(器材编号, 2) AS 大类, 0 AS 期初金额, SUM(计划金额) AS 自购金额,
0 AS 收入调整, 0 AS 收入年累, 0 AS 生产用料, 0 AS 让价, 0 AS 让价年累, 0 AS 调整, 0 AS 报损,
0 AS 发出年累, 0 AS 期末金额
FROM dbo.rk_d
WHERE (日期 >= :s_min) and (日期 <= :s_max) and 料单编号 in (select 料单编号 from rk_m where (日期 >= :s_min) and (日期 <= :s_max) and (cast(已登帐 as char ) like :s_jz) and (cast(已入库 as char) like :s_ck))
GROUP BY LEFT(器材编号, 2)
UNION ALL
SELECT LEFT(器材编号, 2) AS 大类, 0 AS 期初金额, 0 AS 自购金额,
0 AS 收入调整, SUM(计划金额) AS 收入年累, 0 AS 生产用料, 0 AS 让价, 0 AS 让价年累, 0 AS 调整, 0 AS 报损,
0 AS 发出年累, 0 AS 期末金额
FROM dbo.rk_d
WHERE (left(日期,2) = left(:s_min,2)) and 料单编号 in (select 料单编号 from rk_m where (left(日期,2) = left(:s_min,2))and (cast(已登帐 as char ) like :s_jz) and (cast(已入库 as char) like :s_ck))
GROUP BY LEFT(器材编号, 2)
UNION ALL
SELECT LEFT(器材编号, 2) AS 大类, 0 AS 期初金额,0 AS 自购金额,
0 AS 收入调整, 0 AS 收入年累, SUM(出库金额) AS 生产用料, 0 AS 让价, 0 AS 让价年累, 0 AS 调整, 0 AS 报损,
0 AS 发出年累, 0 AS 期末金额
FROM dbo.ck_d
WHERE (日期 >= :s_min) and (日期 <= :s_max) and 料单编号 in (select 料单编号 from ck_m where (日期 >= :s_min) and (日期 <= :s_max) and (cast(已登帐 as char ) like :s_jz) and (cast(已出库 as char) like :s_ck))
GROUP BY LEFT(器材编号, 2)
UNION ALL
SELECT LEFT(器材编号, 2) AS 大类, 0 AS 期初金额, 0 AS 自购金额,
0 AS 收入调整, 0 AS 收入年累, 0 AS 生产用料, 0 AS 让价, 0 AS 让价年累, 0 AS 调整, 0 AS 报损,
SUM(出库金额) AS 发出年累, 0 AS 期末金额
FROM dbo.ck_d
WHERE (left(日期,2) = left(:s_min,2)) and 料单编号 in (select 料单编号 from ck_m where (left(日期,2) = left(:s_min,2))and (cast(已登帐 as char ) like :s_jz) and (cast(已出库 as char) like :s_ck))
GROUP BY LEFT(器材编号, 2)
UNION ALL
SELECT LEFT(器材编号, 2) AS 大类, 0 AS 期初金额,0 AS 自购金额,
0 AS 收入调整, 0 AS 收入年累, 0 AS 生产用料, SUM(计划金额) AS 让价, 0 AS 让价年累, 0 AS 调整, 0 AS 报损,
0 AS 发出年累, 0 AS 期末金额
FROM dbo.jr_d
WHERE (日期 >= :s_min) and (日期 <= :s_max) and 料单编号 in (select 料单编号 from jr_m where ((日期 >= :s_min) and (日期 <= :s_max) and (cast(已登帐 as char ) like :s_jz) and (cast(已出库 as char) like :s_ck))
GROUP BY LEFT(器材编号, 2)
UNION ALL
SELECT LEFT(器材编号, 2) AS 大类, 0 AS 期初金额, 0 AS 自购金额,
0 AS 收入调整, 0 AS 收入年累, 0 AS 生产用料, 0 AS 让价, SUM(计划金额) AS 让价年累, 0 AS 调整, 0 AS 报损,
0 AS 发出年累, 0 AS 期末金额
FROM dbo.jr_d
WHERE (left(日期,2) = left(:s_min,2)) and 料单编号 in (select 料单编号 from jr_m where (left(日期,2) = left(:s_min,2))and (cast(已登帐 as char ) like :s_jz) and (cast(已出库 as char) like :s_ck))
GROUP BY LEFT(器材编号, 2)
union all
SELECT LEFT(器材编号, 2) AS 大类, 0 AS 期初金额, 0 AS 自购金额,
0 AS 收入调整, 0 AS 收入年累, 0 AS 生产用料, 0 AS 让价, 0 AS 让价年累, 0 AS 调整, 0 AS 报损,
0 AS 发出年累, sum(库存金额) AS 期末金额
FROM dbo.Kc
WHERE (日期 = :s_max)
GROUP BY LEFT(器材编号, 2)
) as a on b.大类编码= a.大类
group by b.大类编码,名称
order by b.大类编码
...全文
865 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
knowledge_Is_Life 2008-05-01
  • 打赏
  • 举报
回复
我也想知道,正在找這方面的資料~~~~~
qiyousyc 2008-03-06
  • 打赏
  • 举报
回复
pb中不要用日期作为参数传递变量,很难控制的。
AFIC 2008-01-29
  • 打赏
  • 举报
回复
类型不匹配吧,
日期怎可能等于string
xueru9999 2008-01-28
  • 打赏
  • 举报
回复
我就是想搞清楚为什么会有这个错误
SKY_4K_PPM 2008-01-28
  • 打赏
  • 举报
回复
很晕...............
青锋-SS 2008-01-25
  • 打赏
  • 举报
回复
楼主把这个写成存储过程吧,然后再建数据窗口.
青锋-SS 2008-01-25
  • 打赏
  • 举报
回复
看的头还晕了

609

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder DataWindow
社区管理员
  • DataWindow社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧