HowTo: 조회폼에서 바로 입력하도록 하는 방법

게시일: May 24, 2011 6:23:17 AM

현재 TFaccess 조회폼은 데이터 편집을 허용하지 않고 있습니다.

반드시 입력폼으로 전환하여 데이터 편집을 해야 하는데, 간혹 열이 그리 많지 않은 테이블의 경우, 일일이 입력폼에서 수정하는 작업이 조금 불편할 수 있습니다.

다음 방법을 통해 조회폼에서 바로 입력하도록 전환할 수 있으니 참고하시기 바랍니다.

1. 조회폼 모듈 수정

조회 폼 모듈에 다음의 코드를 삽입하십시오.

소스: 조회폼 편집 가능하도록 변경하기

Private Sub Form_Load()

On Error GoTo Herror

    

   Me.subA.Form.RecordsetType = 4

    

   Exit Sub

   

Herror:

    Select Case Err.Number

        Case Else

            xsberrmsg xfnErrFormat(Err.Number, Err.Description)

    End Select

    

End Sub

'--------------------------------------

'Form_Open 이벤트 프로시저는 다음과 같이 되어야 합니다.

'--------------------------------------

Private Sub Form_Open(Cancel As Integer)

On Error GoTo Herror

'BEGINNING OF VARIABLES FOR TFaccess

'END       OF VARIABLES FOR TFaccess

'BEGINNING OF CODES FOR TFaccess

    Set mobjSearch = xfnNew_xSearchForm()

    mobjSearch.Init Me

'END       OF CODES FOR TFaccess

    

    

'바운드 컨트롤의 필수 속성 지정

    If Not mobjSearch.obj.SetBoundControls(subA.Form) Then

        xsberrmsg xstrerrdesc

        Cancel = True

    End If

    Exit Sub

    

Herror:

    Select Case Err.Number

        Case Else

            Cancel = True

            xsberrmsg xfnErrFormat(Err.Number, Err.Description)

    End Select

    

End Sub

2. 조회폼 하위폼 모듈 수정

조회폼의 하위폼에 다음과 같은 코드를 삽입하십시오.

소스: 조회폼 하위폼에 들어갈 내용

'------------------------------------------

'이 부분은 모듈의 선언부에 위치해야 합니다.

'------------------------------------------

Private mobjAutoNumProperties As xAutoNumProperties

'------------------------------------------

Private Sub Form_Delete(Cancel As Integer)

On Error GoTo Herror

    

'권한 체크

    If Not Me.Parent.SearchForm.PermDelete Then

        Cancel = True

        xsberrmsg xfnConcatNL(xfnGetSysMsg(152))

        Exit Sub

    End If

    

    Exit Sub

    

Herror:

    Select Case Err.Number

        Case Else

            Cancel = True

            xsberrmsg xfnErrFormat(Err.Number, Err.Description)

    End Select

    

End Sub

Private Sub Form_Dirty(Cancel As Integer)

On Error GoTo Herror

'권한 체크

    If Not Me.Parent.SearchForm.PermUpdate Then

        Cancel = True

        xsberrmsg xfnConcatNL(xfnGetSysMsg(150))

        Exit Sub

    End If

    Exit Sub

    

Herror:

    Select Case Err.Number

        Case Else

            Cancel = True

            xsberrmsg xfnErrFormat(Err.Number, Err.Description)

    End Select

    

End Sub

Private Sub Form_BeforeInsert(Cancel As Integer)

On Error GoTo Herror

    Dim objColumn As xObjCol

    Dim ctr As Control

    Dim strMsg As String

    

'권한 체크

    If Not Me.Parent.SearchForm.PermInsert Then

        Cancel = True

        xfnUndoForm Me

        xsberrmsg xfnConcatNL(xfnGetSysMsg(151))

        Exit Sub

    End If

    

'작성자, 작성일시 입력

    If xfnIsControlExist(Me, "CID") Then

        CID.Value = xfnGetConf("UserID")

    End If

    

    If xfnIsControlExist(Me, "CTIME") Then

        CTime.Value = xfnGetCurrentTime()

    End If

    

'기본적인 자동 채번 속성 만들기

    If Not fnIsAutoNumInited() Then

        Set mobjAutoNumProperties = xfnNew_xAutoNumProperties

    

        For Each objColumn In Me.Parent.Columns

            If Not xfnIsEmpty(objColumn.AutoNumID) Then

                mobjAutoNumProperties.Add objColumn.Name

            End If

        Next

    End If

    

'자동 채번

    For Each objColumn In Me.Parent.Columns

        'AutoNumID가 정의되어 있는 컬럼 중에서...

        If Not xfnIsEmpty(objColumn.AutoNumID) Then

        

            '폼의 모든 컨트롤 중...

            For Each ctr In Me.Controls

            

                'ControlSource 속성이 있는 컨트롤에 대해서...

                If xfnIsObjectValid(ctr, "ControlSource") Then

                

                    'Image Type의 컨트롤의 경우 채번하지 않음

                    If Not TypeOf ctr Is Image Then

                    

                        '열 이름과 ControlSource 속성이 같은 컨트롤에 대해서 새 ID 할당

                        If xfnStrComp(ctr.ControlSource, objColumn.Name) Then

                            ctr.Value = objColumn.GetNewAutoNum(mobjAutoNumProperties(objColumn.Name))

                        End If

                    

                    End If

                    

                End If

                

            Next

            

        End If

        

    Next

    

    Exit Sub

    

Herror:

    Cancel = True

    strMsg = xfnErrFormat(Err.Number, Err.Description)

    strMsg = xfnConcatNL( _

                xfnGetSysMsg(131) _

                , strMsg _

                )

    xfnUndoForm Me

    xsberrmsg strMsg

    

End Sub

Private Function fnIsAutoNumInited() As Boolean

On Error GoTo Herror

    Dim a

    

    a = mobjAutoNumProperties.Count

    fnIsAutoNumInited = True

    Exit Function

    

Herror:

    fnIsAutoNumInited = False

    

End Function

Private Sub Form_BeforeUpdate(Cancel As Integer)

On Error GoTo Herror

'수정자, 수정일시 입력

    If xfnIsControlExist(Me, "EID") Then

        EID.Value = xfnGetConf("UserID")

    End If

    

    If xfnIsControlExist(Me, "ETIME") Then

        ETime.Value = xfnGetCurrentTime()

    End If

'필수 입력 필드값 체크

    If Not xfnAllRequiredFieldFilled(Me) Then

        Cancel = True

        Exit Sub

    End If

    Exit Sub

    

Herror:

    Cancel = True

    xsberrmsg xfnConcatNL( _

                xfnGetSysMsg(132) _

                , xfnErrFormat(Err.Number, Err.Description) _

                )

    

End Sub