박력돌이

wooristar.egloos.com

포토로그


애드센스와이드


[db] ADODB의 의미 및 MDB에서 필드내용 검색하여 불러오기 VB

ADOdb는 PHP 및 파이썬 용의 데이터베이스 추상화 라이브러리이다. 마이크로소프트의 액티브엑스 데이터 오브젝트와 비슷한 개념이이다.

프로그래머들은 밑단에 데이터베이스를 무엇으로 쓰든지 상관 없이 ADOdb를 써서 응용프로그램을 꽤 일관적인 방법으로 작성할 수 있다. 프로그래머들은 데이터베이스 부분 쪽 코드를 수정할 필요없이 데이터베이스를 바꿔칠 수 있다.

ADOdb 웹사이트 및 개발자 사이트 자료에 의하면, ADOdb는 다음과 같은 데이터베이스를 지원하는 것으로 알려져 있다.

위키백과 펌

---------------------------------------------------------------------------------------------------------------

내가 구상 중인 검증 프로그램에서 mdb파일 내부의 정보를 읽어들여와 그 중 필요 정보만 뽑아내는 기능이 필요한데

ADOdb를 활용하면 적절히 이를 구현할 수 있다.

그런데, DB를 처리해본 경험이 없어 삽질을 상당히 많이 했음.

일단 사용 s/w는 아래와 같다.

Visual Basic 6.0
Access 2003

위 프로그램을 이용해서 아래와 같은 순서로 설정 및 프로그래밍 한다.

1. VB를 실행한다.

2. 프로젝트 - 참조 : Microsoft ActiveX Data Objects 2.8 Library 를 체크한다.
위 항목을 참조해줘야 ADOdb를 활용하여 ACCESS 2003의 MDB 파일의 정보를 읽어오거나 쓰거나 변경 하거나 할 수 있다.

3. 아래와 같은 서브루틴을 짠다. (인터넷 검색에서 발췌)

'strDBPath : DB파일 경로, strIndex : 인덱스 명, strTable : 테이블 명, varKeyValues: 찾고자 하는 값의 참조 값, strDisplayedField: 실제 찾아진 값이 있는 열
Sub SeekRecord(strDBPath As String, _
strIndex As String, _
strTable As String, _
varKeyValues As Variant, _
strDisplayField As String)

Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset

' Open the connection.
Set cnn = New ADODB.Connection
With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Open strDBPath
End With

Set rst = New ADODB.Recordset
With rst
' Select the index used to order the data in the Recordset object.
.Index = strIndex

' Open the table by using a scrolling Recordset object.
.Open Source:=strTable, _
ActiveConnection:=cnn, _
CursorType:=adOpenKeyset, _
LockType:=adLockOptimistic, _
Options:=adCmdTableDirect

' Find the order where OrderId = 10255 and ProductId = 16.
.Seek KeyValues:=varKeyValues, SeekOption:=adSeekFirstEQ

' If a match is found, print the value of the specified field.
If Not .EOF Then
' Debug.Print .Fields(strDisplayField).Value
lbl219DB.Caption = .Fields(strDisplayField).Value

End If

' Close the Recordset object.
.Close
End With

' Close connection and destroy object variables.
cnn.Close
Set rst = Nothing
Set cnn = Nothing
End Sub

4. 기타 경로 설정 및 실행버튼 및 표시용 레이블 등을 등록한다. (상세 설명은 첨부 참조)

5. 정상적으로 불러와 지는 것을 확인할 수 있다.

보완필요요소

1. Index에 대한 개념 이해 부족: "PrimaryKey"는 기본키를 의미한다. 테이블에서 기본키로 정의 되어있으면 이에 해당된다.
그런데, 그냥 필드명(열)을 strIndex에 대입했더니 에러가 발생했다.
Index와 Field와의 관계에 대해서 좀 더 학습이 필요하다.
MSDN은 아래와 같이 설명되어 있다

TableDef
└QueryDef
└Recordset
└Relation
└Indexes
└Index
└Fields
└Field

실제 Field명을 이용하여 원하는 값을 조회하려면 어떻게 해야할지... 즉 strIndex를 어떻게 셋팅할지 좀더 학습해보자.