관계형 두 테이블에 데이터 추가하기
▣RecordSet의 Find메소드(p438)
- Find (criteria, [SkipRows], [searchDirection], [start])
- 매개 변수
- criteria : 열 이름, 비교 연산자, 검색에 사용할 값을 지정하는 문을 포함하는 문자열이며 데이터 형식은 String
- SkipRows옵션. 현재 행으로부터의 거리를 지정하거나 검색을 시작할 행번호를 지정. 기본값은 0이고 데이터 형식은 Long
- searchDirection옵션. 검색방향 지정 adSearchForward 또는 adSearchBackward를 사용. 검색은 searchDirection 값에 따라 레코드 집합의 맨 앞이나 맨 뒤에서 중지합니다.
- start옵션. 검색을 시작할 위치로 사용되는 행번호.
▣고급 데이터베이스 작성하기 [4] 에서 이어지는 내용입니다.
PhonebookII.mdb 파일을 이용하여, 새로운 데이터를 입력하고, 입력된 데이터를 저장할 수 있도록 만들어 봅니다.
★디자인
▲ [1] 위의 화면과 같이 디자인 합니다.
▲ [2] 데이터리포트를 추가하고 위와같이 디자인 합니다.
▲ [3] 나중에 추가할 데이터리포트의 소스에서 참고할 부분은 위와 같습니다.☆필드명이 잘 못되어 있네요. 대충 넘어가셈..........-_-;;;;;;;;;;
▲ [4] 최초 실행화면 입니다.
▲ [5] 데이터를 입력하면 각 텍스트필드가 열리게 되고 입력이 가능합니다.
▲ [6] 빈공간이 있을 경우 입력할 수 없습니다.
▲ [7] 입력확인
▲ [8] 인쇄는 모달폼으로 열리게 설정되어 있습니다.★추가된 소스 (Form1)
Private str1 As String '새로운 변수 지정
Private Sub Command5_Click() '데이터 추가
MyText1.Text = ""
MyText1.Locked = False
MyText2.Text = ""
MyText2.Locked = False
DataCombo1.Locked = False
MyText1.SetFocus
End Sub
Private Sub Command6_Click() '데이터 저장
Dim condition As String
str1 = DataCombo1.Text
If Trim(MyText1.Text) = "" Then
MsgBox "이름이 없어 입력이 않됩니다."
Exit Sub
Else
rs.AddNew
rs!Name = MyText1.Text
rs!tel = MyText2.Text
If Option1.Value = True Then
rs!sex = "M"
Else
rs!sex = "F"
End If
condition = "type = '" & Trim(str1) & "'"
rsc.MoveFirst
rsc.Find condition, , adSearchForward
If Not rsc.EOF = True Then
rs!occupid = rsc!id
Else
rs!occupid = 1
End If
rs.MoveLast
End If
MsgBox "입력이 완료되었습니다"
MyText1.Locked = True
MyText2.Locked = True
DataCombo1.Locked = True
End Sub
Private Sub Command7_Click() '삭제클릭
If (MsgBox("삭제된 데이터는 복구할 수 없습니다\n 정말로 삭제하시겠습니까?", vbOKCancel, "삭제경고") = vbOK) Then
rs.Delete
Else
Exit Sub
End If
rs.MoveNext
If rs.EOF = True Then
rs.MoveLast
End If
MyText1.Text = rs.Fields("Name")
MyText2.Text = rs.Fields("Tel")
s1 = rs.Fields("sex")
If s1 = "M" Then
Option1.Value = True
Else
Option2.Value = True
End If
End Sub
Private Sub Command8_Click() '종료클릭
Unload Me
End
End Sub
Private Sub DataCombo1_Click(Area As Integer) '데이터콤보를 클릭
str1 = DataCombo1.Text
End Sub
Private Sub Picture1_Click() '인쇄
DataReport1.Show
End Sub
★추가된 소스 (DataReport1)
Private Sub DataReport_Initialize()
Dim rsSQL As String
On Error GoTo Err_Area
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:\★강의자료모음\3학년 1학기-DP-A\DB응용개발도구\VBDB\PhoneBookII.mdb;Persist Security Info=False"
cn.Open
Set rs = New ADODB.Recordset
rsSQL = "SELECT name, sex, tel, type FROM Person, PersonType " _
& "WHERE Person.occupid = PersonType.id"
rs.CursorLocation = adUseClient
rs.Open rsSQL, cn, adOpenStatic
Set DataReport1.DataSource = rs
Exit Sub
Err_Area:
MsgBox (Err.Number & Chr(13) & Err.Description)
End
End Sub
실습 페이지 438 까지.
'Languages > Visual Basic' 카테고리의 다른 글
VB - 고급 데이터 베이스 작성하기 [3] (0) | 2012.08.25 |
---|---|
VB - 고급 데이터 베이스 작성하기 [4] (0) | 2012.08.25 |
VB - Common Dialog Control (0) | 2012.08.20 |
VB에서 엑셀데이터 읽고 쓰기. (0) | 2012.08.16 |
VB - VB 프로그래밍 시 속도향상을 위한 45가지 팁 (0) | 2012.08.16 |