2012-12-07 105 views
1

在Access 2007中下面的代碼給出錯誤2434:您輸入的表達式包含無效的語法。MS Access無效語法

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

在​​中給出的字符串表達式內適當的引用可能會非常具有挑戰性。這裏是​​你的代碼中實際看到:

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) ... 

然而,這東西看起來太複雜我,所以我懷疑應該有一個簡單的解決方案,它甚至不需要​​。不幸的是你的DLookup條件爭論是如此混亂我迷路了。但我懷疑IsNull()功能可以給你想要的東西,而無需​​:

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

感謝。至少你已經將問題縮小到標準字符串。我知道它要做什麼,但我對Access SQL語法知之甚少,不知道如何重寫它。幸運的是,事實證明,如果客戶設定利率(他總是這樣做),那麼刪除代碼就可以很好地工作,因此驗證可以在沒有世界爆炸的情況下繞過。 – SpliFF