Select @SqlTxt="Select * from visiter where waiter=convert(datetime,'"+@FieldValue+"'  and meettime>=conert(datetime,'"  +@firDate+"' and meettime>=convert(datetime,'"+@secdate +"'"
不過,用第一句就可以了,何必要第二句這么繁呢。

解决方案 »

  1.   


    這也是寫動態SQL需要注意的地方.
    如果你沒有時間型的字段或者數值型的字段.
    都只有字符型的字段,而且字符型的字段=@某某變量 (@某某變量 = '13'而非@某某變量 = 'abcd')時
    你會永遠也發現不了錯誤.其實你把@SqlTxt打印出來就知道你錯在什麼地方了.
    現將你的第二句修改如下,而且保證OK:Select @SqlTxt='Select * from visiter where waiter='+QUOTENAME(@FieldValue,'''')+'  and meettime>='  +QUOTENAME(@firDate,'''')+' and meettime>='+QUOTENAME(@secdate,'''')
      

  2.   

    引号的问题
    因为经过拼串以后,waiter="+@FieldValue+"  和waiter=@FieldValue是不同的你在Exec(@SqlTxt)前加一句
    print @sqltext看看输出结果就明白了
      

  3.   

    Select @SqlTxt="Select * from visiter where waiter="+@FieldValue+"  and meettime>="  +convert(varchar,@firDate,21)+" and meettime>="+convert(varchar,@secdate,21)
      

  4.   

    Select @SqlTxt="Select * from visiter where waiter="+@FieldValue+"  and meettime>='''"  +convert(varchar(19),@firDate,21)+"''' and meettime>='''"+convert(varchar(19),@secdate,21)+"'''" 第二句我不知道你的缺省字符是‘还是“,如果出错用select @SqlText 看看结果
    换着试试
      

  5.   

    有點修改:Select @SqlTxt='Select * from visiter where waiter='+QUOTENAME(@FieldValue,'''')+'  and meettime>='  +QUOTENAME(convert(varchar(20),@firDate,120),'''')+' and meettime>='+QUOTENAME(convert(varchar(20),@secdate,120),'''')
      

  6.   

    dreamyyuan(dreamyyuan):是这样的吗?
    Select @SqlTxt="Select * from visiter where waiter="+@FieldValue+"  and meettime>='"  +convert(datetime,@firDate)+"' and meettime>='"+convert(datetime,@secdate)+"'"可还是出错啊!
    因为还有别的语句。我只列出其中的一部分。