• 따뜻한 부모가 될 수 있도록 돕습니다. 현명한 학부모가 될 수 있도록 돕습니다.
  • 글도 쓰고 강연도 합니다.
  • 제 트위터는 @itmembers, 페이스북은 www.facebook.com/itmembers입니다.
  • 네이버 블로그는 charen.kr입니다. 최신 글은 네이버 블로그에서 보실 수 있습니다.
  • 요즘 중국차에 푹 빠져 있는데, 중국차에 대한 얘기도 네이버 블로그에서 전해드립니다.
  • [마지막회]DB연동프로그램 실습(7/7) – 코딩(3)

    Posted on : 2002-08-24 | By : SON BYOUNGMOK | In : 비주얼베이직 입문

    태그:, , , , , ,

    0

    시간을 내기가 참 힘드네요.
    7월에 마무리하려고 벼르던 강좌를, 그것도 달랑 하나만 남겨두고 20여일이 흘러가버렸네요.
    드디어 오늘 이 시간을 끝으로 비베 입문 강좌를 마칩니다.
    많은 아쉬움이 남습니다. 애초 의도했던 대로, 프로그램 쌩~ 초보가 프로그래밍의 개념을 이해하고 프로그래밍 문턱에라도 도달할 수 있는 역할을 했는지 반문해 봅니다.
    스스로 아는 지식이 얼마 안되어 비록 입문 강좌로 마치지만, 어떠한 연유에서든 이 강좌를 보신 분들은 보다 체계적인 학습을 통해 원하는 바를 모두 이룰 수 있기를 바랍니다.

    오늘은 비베와 DB 연동 마지막 시간입니다.
    비베와 DB 연동 방법은 이 강좌에서 소개하고 있는 Data 컨트롤을 이용한 방법만 있는 것은 아닙니다. 이건 아주 기초적인 것이며 실전 프로그래밍에 거의 사용되지 않을 수도 있습니다. 비록 소스는 쉽고 빠르게 작성할 수 있을지 모르겠지만 사용자가(또는 프로그래머가) 원하는 정도의 세부적이고 다양한 기능을 구현하기에는 부적합하기 때문입니다.
    오히려 실무에서는 DAO(Data Access Object)를 이용하여 데이터베이스를 직접 생성하거나 보다 섬세한 컨트롤을 합니다. ODBC를 이용하여 오라클 DB를 직접 액세스하여 사용하기도 합니다.
    지금까지의 강좌는 어디까지나 프로그래밍의 개념을 익히는 입문 수준이라는 것을 다시 말씀드리며, 보다 체계적인 학습을 위해서는 관련 서적 또는 프로그래밍 전문 사이트를 통해 심화된 학습이 필요합니다.

    강좌를 마무리하려다보니 서론이 길어졌네요.
    그럼 이제 마지막 폼에 코딩을 하는 것으로 DB 연동 실습을 마치도록 하겠습니다.

    먼저 32강에서 만들었던 세 번째 폼인 frmSqlSearch 폼을 열고 코드 창에서 아래와 같은 코드를 입력하면 됩니다.
    매우 간단합니다.

    [1]
    창이 로드될 때 실행되는 코드입니다.
    지난 시간의 코드와 다르지 않죠?
    현재 경로에서 db1.mdb 파일을 데이터컨트롤(datDb1)과 연결시킵니다. 그리고 db1.mdb의 employee 테이블에서 레코드를 가져옵니다. 그리고 새로고침하는 역할을 합니다.

    [2]
    [1]에서 RecordSource 속성에 “employee”라는 테이블명을 대입했습니다.
    그런데 [2]의 RecordSource 속성에 txtSQL.Text 값을 넣었습니다. 다시말해 텍스트 박스에서 입력한 내용을 RecordSource 속성값으로 설정한 거죠.
    이렇게 되면 텍스트 박스에 입력한 SQL 문장이 실행되는 결과가 나타납니다.
    그렇게 된 결과를 다시 보기 위해 아래 줄에서 Refresh를 한 겁니다.

    쉽죠?
    단, SQL이 뭔지 전혀 모르시는 분들은 좀처럼 이해가지 않을 수 있습니다.
    SQL에 대해서는 본 사이트의 오라클입문강좌에서 자세하게 다루고 있습니다. 특히 개념은 오라클강좌 제19강 SQL과 SQL*Plus에서 소개하고 있습니다.

    프로그램이 모두 완성되었으면 직접 데이터를 입력, 수정, 삭제를 해보시기 바랍니다.
    그러고 입력된 자료를 바탕으로 SQL 검색도 해보실 수 있습니다.
    예를 들어 SQL 문장 입력 텍스트 박스에 다음과 같이 입력하여 실행해 보세요.

    • select * from employee

    • select number from employee
    • select number, name from employee
    • select * from employee where toeic > 700

    • select * from employee where position = “사원“

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

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

    Posted on : 2002-07-29 | By : SON BYOUNGMOK | In : 비주얼베이직 입문

    태그:, , , , , ,

    0

    잠도 설치고 회사 일도 바쁘고… 집에 오니 한시간 앉아 있기도 힘드네요. 졸린 눈을 부릅뜨며, 그래도 7월이 가기 전에 강좌를 마무리하기 위해 오늘, 내일 한 강좌씩 올릴 예정입니다.

    먼저 31강에서 만들었던 두 번째 폼인  frmDb1S 폼을 열고 코드 창에서 아래와 같은 코드를 입력하면 됩니다.



    [1]
    Form 개체의 Activate 프로시저를 선택하고 txtSearchNum.SetFocus를 입력합니다.
    Activate 프로시저에는 창이 활성화될 때 실행되는 코드를 입력합니다.
    따라서 위와 같이 하면 frmDb1S 창이 활성화되면 검색을 위해 사번을 입력하는 txtSearchNum 텍스트 박스에 커서가 깜빡거리게 됩니다.

    [2]
    창이 로드될 때 실행되는 코드입니다.
    지난 시간의 코드와 비슷합니다.
    현재 경로에서 db1.mdb 파일을 데이터컨트롤(datDb1)과 연결시킵니다. 그리고 db1.mdb의 employee 테이블에서 레코드를 가져옵니다. 그리고 새로고침을 합니다.
    그 외의 코드는 검색을 위한 사번 입력란을 제외한 다른 입력 란을 모두 비활성화시키는 기능을 합니다. 검색 결과를 보여주기만 하면 되니까 입력할 수 없도록 만든 것입니다.

    [3]
    찾아랏! 단추를 누를 때 실행되는 코드입니다.
    FindFirst 메소드는 레코드셋에 있는 레코드를 처음부터 검색하여 해당 조건을 만족하는 처음 레코드를 찾아줍니다.
    FindFirst 메소드 뒤의 조건식은 큰 따옴표로 둘러싸야 합니다.
    예를 들어, Data1.RecordSet.FindFirst “점수 Between 90 And 100″는 점수가 90~100인 자료 검색하라는 뜻이 됩니다.
    따라서 만약 사번 입력란에 0003을 입력하고 [찾아랏!] 단추를 누르면
    datDb1.RecoredSet.FindFirst “[number]= ‘0003‘” 과 같은 식이 실행됩니다.

    지난 시간의 실습을 무난히 마쳤다면 이번 시간은 그리 어렵지 않았을 것입니다.

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

    DB연동프로그램 실습(5/7) – 코딩(1)

    Posted on : 2002-07-29 | By : SON BYOUNGMOK | In : 비주얼베이직 입문

    태그:, , , , , ,

    0

    지난 시간까지 프로그램에 필요한 껍데기(폼)는 모두 만들었으니 이제 본격적인 프로그래밍에 돌입하겠습니다.
    먼저 첫 번째 폼인 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) 현재위치/전체숫자와 같은 식으로 표시하라는 뜻입니다.


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

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

    DB연동프로그램 실습(4/7) – SQL 실행 폼 만들기

    Posted on : 2002-07-21 | By : SON BYOUNGMOK | In : 비주얼베이직 입문

    태그:, , , , , ,

    1

    이제 마지막 폼을 만들 차례네요.
    SQL 문장을 직접 입력하고 실행 버튼을 누르면 SQL 문장이 실행되면서 그리드에 결과가 표시되는 폼입니다.

    1. 먼저 아래 [그림1]과 같은 모양으로 컨트롤을 배치합니다.

    2. 각각의 컨트롤에 다음과 같은 속성을 부여합니다.

      주의해야 할 것은 반드시 먼저 Data 컨트롤의 속성을 설정하고 난 다음에 MSFlexGrid의 속성을 설정해야 한다는 것입니다.
      만약 Data 컨트롤의 DatabaseName과 RecordSource 속성을 정확하게 지정하지 않으면 MSFlexGrid 컨트롤의 DataSource 속성값을 datDb1으로 지정할 수 없게 됩니다.


    이로서 VB의 데이터베이스 연동 실습을 위한 껍데기는 다 만들었습니다.
    다음 시간부터는 레코드의 추가, 삭제, 수정, 검색 및 SQL 문장 실행 등을 위한 본격적인 코딩 작업에 들어가겠습니다.
    (다음 주 일요일경에 강좌를 업데이트할 예정입니다.)

    이상 일요일이 거의 끝나가는 시간, 동주 아빠 손병목이었습니다.

    DB연동프로그램 실습(3/7) – 검색 폼 만들기

    Posted on : 2002-07-21 | By : SON BYOUNGMOK | In : 비주얼베이직 입문

    태그:, , , , , ,

    0

    이번 시간에 만들 폼은 지난 시간에 만든 것과 거의 유사합니다. 지난 시간에 폼을 제대로 만들었다면 이번 실습은 매우 쉽게 처리할 수 있을 것입니다.

    1. 먼저 아래 [그림1]과 같은 모양으로 컨트롤을 배치합니다.

    2. 각각의 컨트롤에 다음과 같은 속성을 부여합니다.

      지난 시간과 동일하니까 어렵지는 않죠?

    3. 위의 설정이 제대로 되었다면 아래와 같이 TextBox 컨트롤의 DataField 속성값을 employee 테이블의 각각의 필드 이름과 동일하게 지정해 주어야 합니다.(이것 역시 지난 시간의 내용과 동일합니다.)

      그래야 폼을 실행할 때 해당 텍스트 박스에 employee 테이블의 값이 표시됩니다.

    이제 frmDb1S 폼도 db1.mdb 데이터베이스 파일과 연결되었습니다. 데이터베이스 연동 실습과 관련한 세 개의 폼 중에서 두 개를 만들었습니다.

    다음 시간에는 마지막으로 SQL 검색 폼을 만들어 보겠습니다.

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

    Switch to our mobile site