我正在尝试VB6
在我的工作中调试一个旧程序。它充满了错误和硬编码的东西。
该程序正在连接 SQL Server 2005 数据库以使用存储过程读取和写入信息。
由于该程序在我工作时仍在使用,因此我备份了数据库以测试一些东西并在我的 SQL Server 2008 版本中恢复它。一切正常。
当我第二天早上进来时,我得到了一个错误,我没有在晚上使用该程序。
问题 :
"exec dbo.sp_Get_Wait_Data '" & DateEx & "'"
DateEx
是一个字符串,包含"2012/06/14"
存储过程:
[sp_Get_Wait_Data] @Datest as char(10)
AS
SELECT
(A lot of column names here)
FROM
Fiche
LEFT JOIN
voyage ON fcid = vofiche
LEFT JOIN
client on fcaccount = cusnov
WHERE
fcdate = @Datest
AND (void is null or (void > 0 and (void <> 999 and void <> 1000 and void <> 998)))
AND ((fcremarques NOT LIKE '%SYSANNULATION%' OR
fcremarques IS NULL)
AND fcrettime IS NOT NULL)
ORDER BY
FcTime, FcOrgSite, fcdessite
错误信息:
将 varchar 数据类型转换为 smalldatetime 数据类型导致值超出范围
所以错误出现fcdate=@Datest
在存储过程中。我尝试在存储过程中添加这一行
SELECT convert(datetime, @Datest, 120)
这对于查询中的转换来说就像一个魅力,但是当其他查询试图访问这个变量时,它会在程序中导致数百个其他错误,所以它不是一个选项。
知道为什么这个查询昨天工作得很好,现在它给了我这个错误吗?提前致谢。