2011-11-04 142 views
1

我们试图调整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做它,它总是给了相同的结果,而且我知道它是传递正确的参数。

+0

这是Acess 2007.当我们在SSMS中启动存储过程时,它按预期工作。 –

+0

有关变量的数据类型和代码的预期功能的一些想法会很有帮助。如果您有特定于版本的问题,那么处理数据类型的方式可能不一致。 –

+0

如果代码段1始终触发,那么'@ Table'必须为1.您应该在Access程序中查找错误。它必须为'@ Table'传递错误的值,否则你会错误地解释结果。 – Keith

回答

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 
+0

消息156,级别15,状态1,过程procPathINADforAnnualFDAreportTdrNdr,行1325关键字'THEN'附近的语法错误。 Msg 156,Level 15,State 1,Procedure procPathINADforAnnualFDAreportTdrNdr,Line 1329关键字'THEN'附近的语法错误。 Msg 156,Level 15,State 1,Procedure procPathINADforAnnualFDAreportTdrNdr,Line 1342关键字'THEN'附近的语法错误。 –

+0

Kenyon所引用的代码是SQL,而不是VBA。 –