2 개의 필드 (txtTR1_Unit 및 cmbTR2_Unit)가 있습니다. 함께이 두 필드는 총 UNIT를 나타냅니다. cmbTR2_Unit에는 선택시 고유 한 값 목록이 있습니다. txtTR1_Unit은 관련 값을 자동으로 가져옵니다.SetFocus가 무시 당하고 있습니다 - 이유가 무엇입니까?
Tier1from2라는 함수를 만들었습니다.이 함수는 'string'을 받아들이고 관련 Tier1 값을 반환합니다.
그래서 After_Update 이벤트에서 cmbTR2_Unit을 업데이트 할 때 자동으로 다음 필드로 이동하려고합니다. - 다른 콤보 상자. 업데이트 후 다음 필드로 자동 이동하기 때문에 포커스를 설정할 필요가 없다고 생각했습니다.
txtTR1은 내 기능에서 예상대로 업데이트되지만 그 다음에는 다음 필드로 이동하지 않습니다. 그래서 나는 업데이트 후에 다음 필드로 'SetFocus'를 시도했다.
아직 시도하지 않음. 내가 놓친 게 무엇입니까?? 나는 기능 "Tier1From2 (Me.cmbTR2_UNIT.text)"을 제거 시도 테스트로
Private Sub cmbTR2_UNIT_AfterUpdate()
If Len(Me.cmbTR2_UNIT.Value) <> 0 Then
Me.txtTR1_UNIT.Value = Tier1From2(Me.cmbTR2_UNIT.Text)
'cmb_CostCenter.setfocus - 'this doesn't seem necessary - but it doesn't work anyway.
End If
End Sub
단순히 하드 txtTR1_UNIT 단어 '결과'를 코딩하고이 차질없이 작동합니다. 나는 더 간단한 함수를 작성하는 데 사용되는 알고 있지만 나는 한동안 VBA를 손도 안 -이 기능을 단순화 할 수있는 방법 :이 기능에 뭔가가 필드를 일으키는 것을
Private Function Tier1From2(strTier2 As String) As String
Dim qdf As DAO.QueryDef
Dim db As DAO.Database
Dim strQry As String
Dim rs As Recordset
Set db = CurrentDb
Set qdf = db.QueryDefs("qUNIT_HUB")
strQry = "SELECT Tier1_Unit, Tier2_Unit " & _
" FROM LTBL_Cost_Collector " & _
" GROUP BY Tier1_Unit, Tier2_Unit " & _
" HAVING (((Tier2_Unit) = '" & strTier2 & "'));"
qdf.SQL = strQry
db.QueryDefs.Refresh
Set rs = db.OpenRecordset(strQry)
Tier1From2 = rs![Tier1_Unit]
Set db = Nothing
Set qdf = Nothing
Set Recordset = Nothing
End Function
컨트롤이 계층 구조에서 서로 따르도록 탭 순서를 설정 했습니까? 그렇지 않은 경우, 기본 탭 순서는 작성 순서이며 예상 한 것이 아닐 수 있습니다. – Markus
cmb_CostCenter가 프레임 또는 다중 페이지에 있습니까? –
예, 탭 순서가 설정되었습니다. txtTR1_Unit을 "TabStop : NO"로 설정했습니다. cmb_CostCenter는 현재 같은 양식에 있습니다. 내 관심사는 cmbTR2_Unit에서 값을 선택하고 Tab 키를 누를 때 창문이 부적절 할 때 그 종소리가 들린다는 것입니다. 마치 탭을 사용할 수없는 것처럼 말입니다. 그러나 값을 선택하지 않으면 문제없이 바로 탭을 적용 할 수 있습니다. MS Access 버전은 2007입니다. – monty327