2016-11-29 49 views
0

我的目標是根據專業字段中的條目更新專業代碼字段。例如,如果他們選擇Nurse Practitioner,我希望專業代碼字段自動更新爲000用於更新訪問中的字段的VBA代碼

我用下面的代碼,但無濟於事:

Private Sub SpecialtyCode_BeforeUpdate(Cancel As Integer) 
Me.SpecialtyCode.Value = DLookup("[HSD_Code]", "Crosswalk_ProviderHSD", 
"[Specialty] = Me.Specialty.Value") 
End Sub 

HSD代碼爲專業代碼,我想拉和人行橫道是我要引用的表。

我想爲給定郵政編碼的縣和地區數據做同樣的事情。我知道我的代碼是錯誤的。什麼是適當的語法?有沒有更有效的方法來完成這個?

+0

既然你已經標記了'表格',我假設你的數據是在表單上呈現/選擇的?您的表單是否「綁定」到底層記錄集? '選擇'在哪裏?它是一個組合框嗎? –

+0

@ WayneG.Dunn - 是表單綁定到包含與提供者相關的其他數據的基礎表。是的,它是專業列表的組合框。這些專業及其相關代碼位於一個名爲Crosswalk_ProviderHSD的單獨表格中。從下拉列表中選擇專業後,我希望更新代碼字段。 – Steven

+1

通常情況下,您使用具有多個列的組合框 - 您可以選擇隱藏其中的某些列。然後,將控件綁定到組合框的某一列,以便當您選擇「護士...」時,實際數據庫值將保存爲「000」。即組合框的行源從「Crosswalk ...」表(Nurse P ...)中選擇你想要的任何字段,包括它的唯一密鑰(000)。將ControlSource設置爲綁定表中的HSD代碼;將olumn寬度設置爲0以隱藏某些列;將「綁定列」設置爲「護士」列。移動到其他記錄時立即保存或保存? –

回答

2

您無法更新自己的BeforeUpdate事件中的字段。你的DLookup語法是錯誤的。

試試這個:

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    Me.SpecialtyCode.Value = _ 
    DLookup("[HSD_Code]", "Crosswalk_ProviderHSD", "[Specialty] = '" & Me.Specialty.Value & "'") 
End Sub 

也就是說,聽關於查詢的意見。