我们正在尝试在Access ADP中调整一些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
即使我们有@Table = 2,“......某些代码部分1”部分也会触发。有什么想法?
我可以在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这样做时,它总是给出相同的结果,并且我知道它传递了正确的参数。
答案 0 :(得分:0)
你只是错过了那个吗?
IF-THEN-ELSE语句的语法是:
If condition_1 Then
result_1
ElseIf condition_2 Then
result_2
...
ElseIf condition_n Then
result_n
Else
result_else
End If
答案 1 :(得分:0)
由于您的问题并不是非常具体的说明在ADP中使用SP的确切程度,这将是一个疯狂的猜测......请看一下这个Q& A:
SQL Server 2005: “Protecting” stored procedures from FMTONLY mode used by MS Access
当Access在FMTONLY模式下呼叫您的SP时,您是否有可能出现这种情况?因为这恰恰是所有IF“神奇地”停止工作的时候,除非你明确规避FMTONLY。