2014-01-27 1 views
1

oracle에 테이블이 있습니다. 테이블에는 가능한 값이 2 개있는 정수 필드가 있습니다. null 또는 1입니다. 응용 프로그램의 경우 null은 false를 의미하고 1은 true를 의미합니다.액세스 양식 : 확인란에 값을 매핑하는 방법

해당 테이블의 액세스 2010에 양식을 만듭니다. 필드를 체크 박스 (1에 대해 사용 가능, 널에 대해 사용 불가능)로 표시하려고합니다.

필드에서 직접 확인란을 만들면 Null 값이 사각형으로 표시되고 1이 올바르게 표시됩니다 (선택한대로). 그러나 확인란의 값을 변경 (사각형 -> 선택 또는 선택 -> 선택 취소)하고 데이터베이스에 데이터를 저장하면 확인 값은 -1 대신 저장되고 비 고정 값은 null 대신에 0으로 저장됩니다.

I 수식에서 체크 박스를 생성하는 경우 :

Switch(my_field='1','-1',my_field Is Null,'0') 

다음 값을 정확하게 나타내지 만, I는 체크 박스 상태를 변경할 수 (그것을 확인하거나 unckeck).

매핑을 수행하는 쉬운 방법이 있어야한다고 생각합니다. 빈번한 경우이지만 매핑 방법을 찾을 수 없습니다.

답변

1

양식에서 숨겨진 TextBox 컨트롤 (.Visible = No)을 만드는 것이 한 가지 방법입니다. 이 예제에서는 txtMyIntAsBoolean이라고 부를 것입니다. 테이블에있는 Null/1 값을 포함 할 수있는 필드에 바인딩됩니다.

사용자의 (보이는) 확인란 컨트롤이 언 바운드되어야합니다. .Value은 확인 여부에 따라 True 또는 False (true 부울)입니다.

이제 양식 뒤에 두 줄의 VBA 코드 만 있으면됩니다. 새 레코드로 이동할 때

Option Compare Database 
Option Explicit 

Private Sub chkMyCheckbox_AfterUpdate() 
    Me.txtMyIntAsBoolean.Value = IIf(Me.chkMyCheckbox.Value, 1, Null) 
End Sub 

Private Sub Form_Current() 
    Me.chkMyCheckbox.Value = (Not IsNull(Me.txtMyIntAsBoolean)) 
End Sub 

On Current 이벤트는 체크 박스의 값을 업데이트하고, After Update : 양식에 대한 On Current 이벤트 핸들러 및 이와 유사한 코드를 사용하여 체크 박스에 대한 After Update 이벤트 핸들러 만들기 이벤트는 숨겨진 텍스트 상자의 값을 확인란의 상태에 따라 적절한 값으로 설정합니다.

+0

완벽하게 작동합니다. 감사합니다. 나는 MS가 (미래 버전에서) 코드/프로 시저를 추가 할 필요없이 그래픽으로 매핑을 할 수있는 방법을 추가해야한다고 생각한다. 콤보 박스의 매핑과 비슷한 (또는 더 쉽게, 콤보 박스의 매핑이 조금 까다 롭습니다). – freesoft

0

checkboxtrue 또는 false만을 나타낼 수 있습니다.

확인란을 사용해야하는 경우 바인딩을 해제해야하며 Default ViewSingle Form으로 설정된 경우에만 작동합니다. 그렇지 않으면 콤보 박스를 사용하는 것이 좋습니다.

다음과 같이 양식의 On_Current 이벤트에서 컨트롤의 값을 업데이트하고 체크 박스의 After_Update 경우에 테이블에있는 필드의 값을 업데이트합니다

:

Private Sub Form_Current() 
    Select Case MyField 
    Case 1 
     MyCheckbox = True 
    Case Null 
     MyCheckbox = False 
    End Select 
End Sub 

Private Sub MyCheckbox_AfterUpdate() 
    Select Case MyCheckbox 
    Case True 
     MyField = 1 
    Case False 
     MyField = Null 
    End Select 
End Sub 
0

그것은 쉬운 일이 아닙니다을 체크 박스에서 반환 된 저장된 값을 변경합니다.

양식을 사용하는 경우 언 바운드 확인란을 만들고 AfterUpdate 이벤트를 처리해야합니다. 그 경우 숨겨진 바운드 컨트롤을 올바른 값으로 업데이트 할 수 있습니다. form_Current 이벤트에서 숨겨진 컨트롤에서 확인란을 업데이트 할 수 있습니다.

관련 문제