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