我们试图调整Access ADP中的某些VBA代码,该代码从存储过程中提取数据。存储过程很长,但最后使用一些if语句来确定要返回的信息。很基本。我们曾尝试声明两种方式:调用存储过程的VBA忽略IF语句
IF (@InadDrugId = 7)
BEGIN
IF (@Table = 1)
BEGIN
... some code section 1
END
IF (@Table = 2)
BEGIN
... some code section 2
END
END
也:
IF (@InadDrugId = 7 AND @Table = 1)
BEGIN
... some code section 1
END
IF (@InadDrugId = 7 AND @Table = 2)
BEGIN
... some code section 2
END
的部分” ......一些代码段1' 始终闪光,即使我们有@Table = 2。任何想法,为什么?
我可以在SSMS做到这一点:
EXEC dbo.procPathINADforAnnualFDAreportTdrNdr '1/1/2011','12/31/2011',2011,2,1
EXEC dbo.procPathINADforAnnualFDAreportTdrNdr '1/1/2011','12/31/2011',2011,7,2
EXEC dbo.procPathINADforAnnualFDAreportTdrNdr '1/1/2011','12/31/2011',2011,26,1
并获得3个不同的结果,但是,当VBA做它,它总是给了相同的结果,而且我知道它是传递正确的参数。
这是Acess 2007.当我们在SSMS中启动存储过程时,它按预期工作。 –
有关变量的数据类型和代码的预期功能的一些想法会很有帮助。如果您有特定于版本的问题,那么处理数据类型的方式可能不一致。 –
如果代码段1始终触发,那么'@ Table'必须为1.您应该在Access程序中查找错误。它必须为'@ Table'传递错误的值,否则你会错误地解释结果。 – Keith