0
 35   4   1
  View Articles

Name  
   손병목  (2002-07-29 00:55:53, Hit : 21185, Vote : 1732)
Homepage  
   http://www.itmembers.net
Subject  
   DB연동프로그램 실습(5/7) - 코딩(1)
지난 시간까지 프로그램에 필요한 껍데기(폼)는 모두 만들었으니 이제 본격적인 프로그래밍에 돌입하겠습니다.
먼저 첫 번째 폼인 frmDb1 폼을 열고 코드 창에서 아래와 같은 코드를 입력하면 됩니다.
아래는 코드를 부분별로 설명하고 있으니 전체적인 코드를 확인하시려면 자료실의 소스 파일을 참조하시기 바랍니다.

조금 어려울 수도 있습니다. 그리고 설명이 많이 부족할 수도 있습니다.
그러나 비주얼베이직을 제대로 공부하려는 분이라면 지금쯤 약간은 도톰한 비베 책 한권씩은 사 두셨겠죠?

[1]
Private Sub Form_Load()
    datDb1.DatabaseName = App.Path + "\db1.mdb"
    datDb1.RecordSource = "employee"
    datDb1.Refresh
    
    If datDb1.Recordset.RecordCount = 0 Then
        Call TextUnabled
    End If
End Sub

Form 개체의 Load 이벤트에 위와 같은 코드를 추가합니다. 한줄한줄 설명드리자면,
  • 데이터 컨트롤(datDb1)의 DatabaseName 속성값을 현재 프로그램이 실행되고있는 경로(App.Path)의 db1.mdb 파일로 지정하고
  • 데이터 컨트롤(datDb1)의 RecordSource 속성값을 "employee"로 지정한 다음
  • 데이터 컨트롤(datDb1)을 새로고침(Refresh)합니다.
  • 레코드셋의 레코드가 없으면 TextUnabled 함수를 실행합니다.

이 프로그램에서는 TextUnabled(), TextEnabled() 와 같은 사용자가 직접 만든 함수를 사용합니다.
TextEnabled()는 텍스트 박스를 모두 입력할 수 있는 상태로 만들고, TextUnabled()는 텍스트 박스에 입력할 수 없도록 만드는 함수입니다.(아래 [2]와 [3]의 함수입니다.) 따라서 위의 If~End If는 데이터가 하나도 없으면 [추가] 단추를 누르기 전까지 데이터를 입력할 수 없도록 만드는 기능입니다.

[2]
Private Sub TextEnabled()
        txtNumber.Enabled = True
        txtName.Enabled = True
        txtClass.Enabled = True
        txtPosition.Enabled = True
        txtToeic.Enabled = True
End Sub

사용자 정의 함수입니다. 코드 창에서 함수 이름부터 모두 직접 입력해야 됩니다.
텍스트 박스 5개를 모두 입력할 수 있는 상태로 만들어 주는 기능을 합니다.

[3]
Private Sub TextUnabled()
        txtNumber.Enabled = False
        txtName.Enabled = False
        txtClass.Enabled = False
        txtPosition.Enabled = False
        txtToeic.Enabled = False
End Sub

사용자 정의 함수입니다.
텍스트 박스 5개 모두 입력할 수 없는 상태로 만듭니다. 예를 들어 [추가] 단추를 누르지 않은 상태에서는 텍스트 박스에 아무런 데이터도 입력하지 못하도록 할 때 사용합니다.

[4]
Private Sub cmdAdd_Click()
    datDb1.Recordset.AddNew
    Call TextEnabled
    txtNumber.SetFocus
End Sub

[추가] 단추를 눌렀을 때 사용되는 코드입니다. cmdAdd 컨트롤의 Click 이벤트에 위와 같은 코드를 추가합니다.
  • 첫 번째 줄은 현재의 데이터베이스의 레크드셋에 새 데이터를 추가하는 메소드(AddNew)
  • 두 번째 줄은 텍스트 박스에 모두 입력할 수 있는 상태로 만드는 것
  • 마지막 줄은 번호 입력란(첫번째 텍스트 박스)로 커서를 위치시키는 기능
입니다.

[5]
Private Sub cmdDelete_Click()
    If datDb1.Recordset.RecordCount > 0 Then
        datDb1.Recordset.Delete
        datDb1.Refresh
    Else
        Call TextUnabled
    End If
End Sub

[삭제] 단추를 눌렀을 때 사용되는 코드입니다. cmdDelete 컨트롤의 Click 이벤트에 위와 같은 코드를 추가합니다.
만약 레코드가 하나라도 있으면(즉, RecordCount가 0보다 크면) 현재의 레코드를 삭제(Delete)하고 새로고침(Refresh)합니다.
그렇지 않으면(레코드가 하나도 없으면) 텍스트 박스를 입력하지 못하도록 만듭니다.

[6]
Private Sub cmdSearch_Click()
    frmDb1S.Show
End Sub

[검색] 단추를 눌렀을 때 사용되는 코드입니다. cmdSearch 컨트롤의 Click 이벤트에 위와 같은 코드를 추가합니다.
frmDb1S 폼을 보여주는 기능입니다.

[7]
Private Sub cmdSQL_Click()
    frmSqlSearch.Show
End Sub

위와 마찬가지로 [SQL 실행] 단추를 눌렀을 때 frmSqlSearch 폼을 보여주는 기능입니다.

[8]
Private Sub datDb1_Reposition()
   datDb1.Caption = CStr(datDb1.Recordset.AbsolutePosition + 1) + "/" + CStr(datDb1.Recordset.RecordCount)
End Sub


datDb1 컨트롤의 Reposition 이벤트에 추가하는 코드입니다.(데이터컨트롤을 더블클릭하고 위의 코드를 추가해도 됩니다.)
데이터컨트롤의 캡션 속성값(datDb1.Caption)을 레코드셋의 현재 위치(datDb1.Recordset.AbsolutePosition)에 1을 더한 숫자를 문자열로 바꾸고(CStr), 레코드셋의 전체 개수(datDb1.Recordset.RecordCount)를 문자열로 바꾸어(Cstr) 현재위치/전체숫자와 같은 식으로 표시하라는 뜻입니다.


올들어 가장 더운 날씨라네요. 전기요금이 무서워(?) 함부로 틀지 못하는 에어컨을 오늘은 밤새도록 켜놓아야 할 판입니다.
날이 새면 또 새로운 한주가 시작됩니다.
새롭게 힘차게 한주를 시작합시다. 여러분 모두 파이팅~

이상 동주 아빠 손병목이었습니다.

Prev
   DB연동프로그램 실습(6/7) - 코딩(2)

손병목
Next
   DB연동프로그램 실습(4/7) - SQL 실행 폼 만들기 [1]

손병목


Copyright 1999-2020 Zeroboard / skin by Zetyx