2012-12-07 2 views
1

Access 2007 아래 코드는 오류 2434입니다. 입력 한 식에 잘못된 구문이 들어 있습니다.MS 액세스가 잘못되었습니다.

If (Eval("DLookUp(""[BaseRate]"",""RATELOOKUP"",""|DatePart(""yyyy"",[TxDate])| & |DatePart(""m"",[TxDate])| = [RATELOOKUP].[PERIOD]"") Is Null")) Then 
     ' Checks for Current Base Rate 
     Beep 
     MsgBox "Interest Rate required for this month", vbExclamation, "" 
    End If 

오류는 첫 번째 줄에있는 것으로 보입니다.

답변

2

Eval()에 제공하는 문자열 식 내에서 적절한 인용은 매우 어려울 수 있습니다. 여기 Eval() 실제로 코드 내 보는 것입니다 : Eval(), 당신은 당신이 평가하는 Eval()을 요구하는지 정확히 볼 수 있습니다 하나를 사용하는 경우

DLookUp("[BaseRate]","RATELOOKUP","|DatePart("yyyy",[TxDate])| & |DatePart("m",[TxDate])| = [RATELOOKUP].[PERIOD]") Is Null 

는 다른 접근 방법을 고려한다.

Dim strEval As String 
strEval = "your expression here" 
Debug.Print strEval ' <- examine the string Eval() receives 
' finally ... 
If Eval(strEval) ... 

그러나이 일이 나에게 너무 복잡하게 보이는, 그래서 난 Eval()을 필요로하지 않는 간단한 해결책이 있어야한다 생각한다. 불행히도 귀하의 DLookup기준은입니다. 너무 혼란 스럽습니다. 나는 길을 잃었습니다. 하지만 난 IsNull() 기능 Eval()를 필요로하지 않고 당신이 원하는 걸 줄 수 의심 :

If IsNull(DLookup("BaseRate","RATELOOKUP", "your Criteria here")) = True Then 
+0

감사합니다. 최소한 문제를 기준 문자열로 좁혔습니다. 내가 뭘하려고하는지 알지만, Access SQL 문을 다시 작성하는 방법을 알기에는 충분하지 않습니다. 다행스럽게도 클라이언트가 금리를 설정하면 코드 제거가 충분하게 작동한다는 사실이 드러났습니다 (그는 항상 그렇습니다). 그래서 세계가 폭발하지 않고 유효성 검사를 우회 할 수 있습니다. – SpliFF

관련 문제