본문 바로가기

Window Programming/VB

csv 파일을 DB처럼 사용하기

1. 프로젝트의 참조에 Microsoft DAO X.X Object Libray 를 체크한다.

2. Form 내에 CommandButton(Command1)과 ListBox(List1)을 생성한다.

3. Command1 의 Click 이벤트 함수를 생성한다.

 

Private Sub Command1_Click()

    Dim ws  As DAO.Workspace

    Dim db As DAO.Database

    Dim rs As DAO.Recordset

    Dim strPath As String

    Dim strSQL As String

   

    ' 파일 패스 지정

    strPath = App.Path & "\list.csv"

   

    ' DB 오픈

    Set ws = DBEngine.Workspaces(0)

    Set db = OpenDatabase(StripFileName(strPath), False, False, "TEXT;HDR=YES;")

   

    ' 쿼리문 생성

    strSQL = "Select * FROM " & MakeFilename(strPath)

   

    ' 쿼리문 실행

    Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

   

    ' 목록 초기화

    List1.Clear

   

    ' 필드명 출력

    List1.AddItem rs.Fields(0).Name & vbTab & _

                  rs.Fields(1).Name & vbTab & _

                  rs.Fields(2).Name

 

    ' 필드값 출력

    Do Until rs.EOF

        List1.AddItem rs("코드").Value & vbTab & _

                      rs("순서").Value & vbTab & _

                      rs("점수").Value

        rs.MoveNext

    Loop

   

    ' DB 접속 해제

    rs.Close

    db.Close

    ws.Close

End Sub

 

Function StripFileName(rsFileName As String) As String

  On Error Resume Next

  Dim i As Integer

 

  For i = Len(rsFileName) To 1 Step -1

    If Mid(rsFileName, i, 1) = "\" Then

      Exit For

    End If

  Next

 

  StripFileName = Mid(rsFileName, 1, i - 1)

 

End Function

 

Function MakeFilename(rsFileName As String) As String

  On Error Resume Next

  Dim i As Integer

  Dim j As Integer

 

  For i = Len(rsFileName) To 1 Step -1

    j = j + 1

    If Mid(rsFileName, i, 1) = "\" Then

      Exit For

    End If

  Next

 

  MakeFilename = Right(rsFileName, j - 1)

 

End Function

 

위예제를 ListView 등의 다른 리스트 컨트롤에 적용 가능합니다.

해보세요.