본문 바로가기
프로그래밍/ASP

[본문스크랩] [002]엑셀 DB 연결 시 코딩 해석 내용

by 백룡화검 2010. 4. 23.

이게 로그인폼 코딩한거예요....

제가 한개 아니라 다른사람이 한건데 이해점 할려구요

특히.. 변수 줄때... re As DAO.Recordest 이거면 뒤에 DAO,Recordest가 멀 말하는건지점 자세히 점 알려주세요

Databass도요

 

Option Compare Database
Dim rs As DAO.Recordset
Dim db As Database

Private Sub Command4_Click()

    If IsNull(Me!이름) Then
        MsgBox "자료입력을 다시 하십시오."
        Me!이름.SetFocus
        Exit Sub
    End If
   
    If IsNull(Me!비밀번호) Then
        MsgBox "자료입력을 다시 하십시오."
        Me!비밀번호.SetFocus
        Exit Sub
    End If

    If Len(Me!비밀번호) > 6 Then
        MsgBox "비밀번호는 6자 입니다."
        Me!비밀번호 = ""
        Me!비밀번호.SetFocus
        Exit Sub
    End If

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("관리자정보")
   
    rs.MoveFirst
   
    Do Until rs.EOF
        If Me!이름 = rs!관리자이름 Then
            If Me!비밀번호 = rs!비밀번호 Then
                DoCmd.OpenForm "메인"
                DoCmd.Close acForm, "로그인"
                Exit Sub
            Else
                MsgBox "비밀번호가 올바르지 않습니다."
                Me!비밀번호 = ""
                Me!비밀번호.SetFocus
                Exit Sub
            End If
        End If
        rs.MoveNext
    Loop
   
    MsgBox "관리자 이름이 올바르지 않습니다."
    Me!이름 = ""
    Me!이름.SetFocus
    Exit Sub
   
End Sub

 

=======================================================


 
질문 내용 추가 (2005-03-29 15:30 추가) 
답변감사합니다.. 제가 원하는것만 콕콕 찝어서 잘애기해주셨는데..
set db=currentdb()좀 조금만 저 자세히점 알려주세요.. 이게 무슨말인지 모르겠어요....
 

=======================================================
질문자가 선택한 답변 
re: vba해석점 해주세요 내공최대한 걸어요 
 
hazard11 (2005-03-29 15:25 작성, 2005-03-29 15:37 수정) 
이의제기 | 신고
 
 질문자 평
감사합니다 가려운데 시원하게 긁어주는것 같네요... 혹시 가능하시다면 액세스 vba공부하면서 모를는것좀 물어보고 싶어요.. 가능하시다면.. 메일점 보내주세요.. 이제 내공이 바닥이라 ㅠ.ㅠ 지식인도 신청을 못해 
 

==========================================================


DAO는 엑셀에서 디비와의 연동을 할려고 하는경우 사용해야 하는 모듈입니다.

Dim rs As DAO.Recordset
Dim db As Database

이 부분은 변수 선언부분인데요.
Database인 db는 실제 데이터베이스를 지칭하는 변수입니다.
rs는 원하는 레코드들의 집합을 의미합니다.

앞부분에서 입력값을 검사를 한 것이죠..
값이 없을 때는 처리를 할 필요가 없으니깐요.

Set db = CurrentDb()
Set rs = db.OpenRecordset("관리자정보")

위의 부분들은 디비로의 연결을 맺고,
RecordSet을 얻어 옵니다. "관리자정보"의 목록을 가져오는 것이죠.

rs.MoveFirst

이건, 가져온 레코드셋들중에서 가장 앞으로 옮기는 것입니다.

그리고 나서 하는 일이
관리자 목록의 앞에서 부터 한명씩 비교해 가는 것이죠.

결론적으로 엑셀에서 디비를 이용하기 위해서는 DAO를 이용해야만 하는 것이구요.
Database 타입은 디비의 연결을 맺을시에 사용하는 것이며,
RecordSet 타입은 디비에서 가져온 레코드들의 집합을 의미합니다.

그럼 즐거운 하루되세요~

* 추가답변
우선은 Dim db as Database는 변수만을 선언한 것입니다.
실제 디비로의 연결을 맺어야 디비에서 데이터를 가져올수가 있죠.
set db=currentdb()
이 것은 currentDB라는 함수가 어딘가에 있을 겁니다.
그 함수안에서는 디비로의 연결을 맺고, Database 타입의 변수를 리턴하는 것이죠.
결론적으로 디비를 이용하기 위해서는 디비로의 연결을 해야 하며, SQL(쿼리)를 전달해서 레코드를 가져오는 것입니다.
모든 프로그램에서도 마찬가지입니다.

 

(출처 : 'vba해석점 해주세요 내공최대한 걸어요' - 네이버 지식iN)