以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  动态sql变量写法问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=107560)

--  作者:happyft
--  发布时间:2017/9/30 11:46:00
--  动态sql变量写法问题
 DECLARE @sql NVARCHAR(MAX);
 SET @sql
    = \'INSERT INTO #temp2(tbname,tbid,dateio) se lect \'\'\' + @tbname + \'\'\' ,\' + @tbid + \',\' + @dateio + \' From \'
    + @tbname + \' where 仓库 = \' + @ck + \' and \' + @dateio + \'= \'\'2017-09-23\'\'\' -- \' \'\'+ @datepd + \'\'\'\';
    SELECT @sql;
  EXEC sp_executesql @sql;

动态变量的sql语句总是让人头晕,,上面红色部分输入常量测试没有问题,换成变量就总提示字符串转换日期出错,为什么?
\' \'\'+ @datepd + \'\'\'\'  都是单引号,写法应该没错.

谢谢!

--  作者:有点蓝
--  发布时间:2017/9/30 12:18:00
--  
SELECT @sql;之后返回的完整sql是什么内容
--  作者:HappyFt
--  发布时间:2017/9/30 12:32:00
--  
把传人参数@datepd 由datetime改为varchar就可以了

还有一个问题如下为储存过程的后面语句 :
  
    SE LECT *
    FROM #temp2;

最后一个语句是查询这个#temp2得到所有想要的数据,这个表要怎么才能返回到前台
Dim cmd As New SQLCommand
    cmd.ConnectionName = Mydata
    Dim dt As DataTable
    cmd.CommandText = "Ex ec usp_pd100 \'" & dr("仓库")  & "\', \'" & dr("盘点日期") & "\'"
    dt = cmd.ExecuteReader
    If dt.DataRows.count > 0 Then
        Forms("盘点导入检查").Open
    End If
上面执行结果窗口没打开,表示没有数据唉,实际查询临时表中是有数据的

谢谢!

--  作者:HappyFt
--  发布时间:2017/9/30 13:04:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:查询表.jpg
图片点击可在新窗口打开查看

执行储存过程是有数据的,但用msgbox(dt.datarows.count)却返回0,为什么?

--  作者:有点蓝
--  发布时间:2017/9/30 14:36:00
--  
Foxtable的oledb驱动不支持在存储过程的临时表中返回数据,可以创建一个数据表做临时存储数据的表