2015-05-18 62 views
0

編輯以下andshrew的回答VBA語法:如何打開窗體到特定的記錄與複合主鍵

我只是在尋找我的腳在VBA腳本和我有點用這個簡單的有點難倒的代碼。我懷疑這是因爲我沒有得到Where語句的正確語法。下面的代碼應該打開一個表單,以匹配兩個過濾器表達式的一條記錄,而是打開一條空白記錄。如果我只使用一個過濾器表達式,它會按需要工作,並將表單打開到正確的記錄子集。從我在其他地方發現的情況來看,應該可以將多個篩選條件與AND結合使用,所以我不知道爲什麼這種方式不起作用。

請參閱下面的代碼以獲取更多關於我正在嘗試執行的操作的詳細描述,以防萬一這不是一個簡單的語法問題。

Private Sub lsPrevObs_DblClick(Cancel As Integer) 

    Dim Microchip As String 
    Dim ObsDate As Date 
    Microchip = Me.Text24 
    ObsDate = Me.lsPrevObs 
    DoCmd.OpenForm "frmObservationsEdit", acNormal, , "ObsMicrochip ='" & Microchip & "' AND TrappingDate = #" & ObsDate & "#", acFormEdit 
End Sub 

上下文該子:

我有一個包含關於個別動物與他們的芯片數量基本信息表(因此,儘管它確實包含字母和名稱是一個字符串,而不是一個整數)作爲主鍵。然後我有一個觀察表,它使用Microchip編號和觀察日期作爲複合主鍵。 我有一個鏈接到第一個表格。文本框(文本24)顯示當前記錄的微芯片號,列表框(lsPrevObs)顯示觀察表中已有記錄的動物的觀察日期。我想將一些VBA代碼綁定到列表框的雙擊事件,以便當用戶雙擊日期時,打開一個新窗體(frmObservationsEdit,DataEntry = No),並允許編輯該觀察記錄。

感謝您看這個。

回答

2

除非示例中的代碼不正確,否則您當前正在使用VBA'和'命令而不是發送SQL'和'作爲Where字符串的一部分。

只需更改您的代碼,以確保引號內的內容應該使其工作。

DoCmd.OpenForm "frmObservationsEdit", acNormal, , "ObsMicrochip ='" & Microchip & "' and TrappingDate = #" & ObsDate & "#", acFormEdit 
+0

感謝您的回答。使SQL的AND部分在哪裏字符串編譯,所以你是正確的,但它然後無法完成這項工作。表格以空記錄打開。當我修改我的代碼以使用兩種表達式中的任何一種進行過濾時,我的表單中都有正確的記錄子集,但只要我試圖將兩個表達式與AND結合起來,它就會變爲空而不是一個記錄匹配。看來用於過濾複合標準的VBA代碼並不像人們希望的那樣直截了當。 – bs26

相關問題