2014-01-23 1 views
2

직원 목록이있는 콤보 상자가 포함 된 양식이 있습니다. 다음 번에 열 때이 콤보 박스의 기본값을 마지막으로 설정하려고합니다. 아래 코드는 작동하지 않습니다.Combobox 집합 기본값

Private Sub combobox_AfterUpdate() 
    newDefault = Form_Calc.combobox.Text 
    Form_Calc.combobox.DefaultValue = newDefault 
    End Sub 

목록은 완전한 이름, 같은 포함 :; "메리 제인 존슨"; "존 스노을", "등"

누구를?

+0

는 다음을 시도해보십시오! Form_Calc combobox.DefaultValue 나를 = Product.ItemData (0) – Zzyrk

+0

이 이미이 시도 – luckasx

답변

3

.Text 속성은 콤보에 포커스가있는 동안에 만 사용할 수 있습니다. 다른 시간에는 .Value 속성을 사용해야합니다.

내 콤보 상자에서 작동하며 사용자가 요청한 것입니다.

Private Sub cboAccountID_AfterUpdate() 
    Me.cboAccountID.DefaultValue = Me.cboAccountID.Value 
    MsgBox "DefaultValue: " & Me.cboAccountID.DefaultValue 
End Sub 

이렇게하면 양식을 닫을 때까지 원하는대로 DefaultValue가 유지됩니다. 그러나 다음에 양식을 열 때 마지막 값을 다시 사용하려고합니다.

이 경우 값을 Form_Close에 저장하고 다음 번에 으로 복원 할 수 있습니다.

테이블을 사용하여 사용자 옵션 값을 저장합니다. 그리고이 쿼리 (qryUpdateOption)를 사용하여 저장된 값을 업데이트합니다.

PARAMETERS pKey Text (255), pValue Text (255); 
UPDATE tblOptions AS o 
SET o.option_value = [pValue] 
WHERE o.option_key=[pKey]; 

그래서 Form_Close에서, 나는 cboAccountID.DefaultValue의 현재 값을 저장할 수 있습니다.
Dim db As DAO.Database 
Dim qdf As DAO.QueryDef 
Set db = currentd 
Set qdf = db.QueryDefs("qryUpdateOption") 
qdf.Parameters("pValue").value = Me.cboAccountID.DefaultValue 
qdf.Parameters("pKey").value = "cboAccountID.DefaultValue" 
qdf.Execute dbFailOnError 

그리고 Form_Load에서

는, 그 값을 검색하고 cboAccountID.DefaultValue에 할당 할 수 있습니다.

Me.cboAccountID.DefaultValue = DLookup("option_value", _ 
    "tblOptions", "option_key='cboAccountID.DefaultValue'") 

참고이 제안은 행이 tblOptions "cboAccountID.DefaultValue"에 존재하는 가정합니다. 이 제안 된 제안을 구체화 할 수 있습니다.

그리고 각각의 사용자가 양식과 데이터가 모두 포함 된 고유 한 db 파일을 가지고 있기 때문에 효과가 있다고 생각합니다. 한 사용자가 다른 사용자의 저장된 환경 설정을 덮어 쓸 것을 염려 할 필요가 없습니다. .

+0

작동하지 않습니다!. 양식이 열려있는 동안 기본값이 선택되어 있지만 닫히고 다시 열면 기본값이 없습니다. – luckasx

+0

'DefaultValue' 변경 사항을 유지하려면 양식 디자인에 저장해야합니다. – HansUp

+0

이 작업을 어떻게 동적으로 수행합니까? 이념은 최종 사용자가 선택한 값을 변경할 때마다 이것이 기본값이된다는 것입니다. – luckasx