2011-11-04 4 views
1

저장 프로 시저에서 데이터를 가져 오는 Access ADP에서 일부 VBA 코드를 조정하려고합니다. 저장 프로 시저는 꽤 길지만 끝에는 반환 할 정보를 결정하기 위해 if 문을 사용합니다. 아주 기본. 우리가 @Table = 2. 어떤 생각 왜이 있더라도VBA 호출 저장 프로 시저가 IF 문을 무시합니다.

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'항상 발광 : 또한

IF (@InadDrugId = 7) 
BEGIN 
    IF (@Table = 1) 
    BEGIN 
     ... some code section 1 
    END 
    IF (@Table = 2) 
    BEGIN 
     ... some code section 2 
    END 
END 

과 : 우리는 문을 두 가지 방법으로 시도 ?

내가 SSMS에서이 작업을 수행 할 수 있습니다 : VBA 그것을 수행 할 때

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 개 개의 다른 결과를 얻을 수 있지만, 항상 같은 결과를 제공하고, 나는 그것이 올바른 매개 변수를 전달하고 있는지 알고있다.

+0

이것은 Acess 2007입니다. SSMS에서 저장된 proc 파일을 실행하면 예상대로 작동합니다. –

+0

변수의 데이터 유형과 코드의 의도 된 기능에 대한 아이디어가 도움이 될 것입니다. 버전 관련 문제가있는 경우 데이터 유형이 처리되는 방식이 서로 다를 수 있습니다. –

+0

코드 섹션 1이 항상 실행되면'@ Table'이 1이어야합니다. Access 프로그램에서 버그를 찾아야합니다. '@ Table'에 잘못된 값을 전달했거나 잘못된 결과를 해석하고 있습니다. – Keith

답변

0

그런가요?

은 IF-THEN-ELSE 문에 대한 구문은 다음과 같습니다 귀하의 질문은 SP가 ADP에 사용되는 방법을 정확하게에 대한 매우 구체적인하지 않았다 때문에

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'키워드 근처의 구문이 잘못되었습니다. 메시지 156, 수준 15, 상태 1, 프로 시저 procPathINADforAnnualFDAreportTdrNdr 줄 1329 'THEN'키워드 근처의 구문이 잘못되었습니다. 메시지 156, 수준 15, 상태 1, 프로 시저 procPathINADforAnnualFDAreportTdrNdr 줄 1342 'THEN'키워드 근처의 구문이 잘못되었습니다. –

+0

Kenyon이 참조하는 코드는 VBA가 아니라 SQL입니다. –

관련 문제