none
类型化DataAdpter中的参数问题 ,应该算个BUG吧 RRS feed

  • 问题

  • SELECT    g.gdsid, g.gdsdes, s.qty
    FROM        { oj
                              (SELECT    gdsid, gdsdes
                                FROM          gds
                                WHERE      (dptid = '12')) g LEFT OUTER JOIN
                              (SELECT    gdsid, SUM(qty) AS qty
                                FROM          dbo.scst
                                WHERE      (actdat >= '20090101') AND (actdat <= '20090102') AND (depid LIKE '02112%') AND (bllid = '508')
                                GROUP BY gdsid) s ON g.gdsid = s.gdsid }
    在DataAdpter的查询生成器里,这个语句没有问题,可以得到我要的结果.为给他设置5个参数改为下面的
    SELECT    g.gdsid, g.gdsdes, s.qty
    FROM        { oj
                              (SELECT    gdsid, gdsdes
                                FROM          gds
                                WHERE      (dptid = ?)) g LEFT OUTER JOIN
                              (SELECT    gdsid, SUM(qty) AS qty
                                FROM          dbo.scst
                                WHERE      (actdat >= ?) AND (actdat <= ?) AND (depid LIKE ?) AND (bllid = ?)
                                GROUP BY gdsid) s ON g.gdsid = s.gdsid
    点执行查询,在参数输入的窗口里,只能输入4个参数,如果忽略点确定,会提示第5个参数有问题,在自动生成的DataSet1.Designer.cs文件里,可以很明显看到,自动生成的代码,在参数的自动生成哪里有问题
    但DataSet1.Designer.cs这个文件是自动生成的,不能手动修改,就算改了,重新生成后修改也会丢失
    请教下怎么弄!
    2009年4月26日 9:19

答案

  • VS的SQL分析器不支持所有SQL语法。在数据库里面创建这样的函数或者存储过程,然后在VS中使用。

    MSMVP VC++
    2009年4月26日 15:55
    版主

全部回复

  • 你好,把 ? 替换成 @ +  参数名试试 如 dptid = ? 找成 dptid = @dptid
    知识改变命运,奋斗成就人生!
    2009年4月26日 11:15
    版主
  • VS的SQL分析器不支持所有SQL语法。在数据库里面创建这样的函数或者存储过程,然后在VS中使用。

    MSMVP VC++
    2009年4月26日 15:55
    版主