[.net] ADO (6.0) + ODBC드라이버를 이용한 DB Connection (MS-SQL, Excel, Access)

 

 

Microsoft ActiveX Data Objects 6.0 Library (adodb)와 ODBC 를 이용해서 각 DB에 Connection하는 클래스

 

 

Public Class DBConn
    Public myDB As New ADODB.Connection
    Public myRS As New ADODB.Recordset
    Public qq As StringBuilder

    Public Function DBOpen() As Boolean
        Dim Opened As Boolean
        Try
            myDB.Open("Provider=SQLOLEDB.1;Persist Security Info=False;Data Source=111.111.111.111,1111;Initial Catalog=DBNAME;User ID=DBNAME;Password=DBPASS;")

            If myDB.State Then
                Opened = True
            Else
                Opened = False
            End If
        Catch ex As Exception
            Opened = False
        End Try
        myRS.CursorType = ADODB.CursorTypeEnum.adOpenStatic
        myRS.CursorLocation = ADODB.CursorLocationEnum.adUseClient
        myRS.LockType = ADODB.LockTypeEnum.adLockOptimistic

        DBOpen = Opened
    End Function


    Public Sub DBClose()
        Try
            myDB.Close()
            loFunctions.releaseObject(myDB)
        Catch ex As Exception
        End Try
    End Sub

End Class




Public Class xlDBConn
    Public xlDB As New ADODB.Connection
    Public xlRS As New ADODB.Recordset
    Public qq As StringBuilder

    Public Function xlDBOpen(xlFileNM As String) As Boolean
        Dim Opened As Boolean

        Try
            With xlDB
                .ConnectionString = "Dsn=Excel Files;dbq=" + xlFileNM + ";driverid=1046;fil=excel 12.0;maxbuffersize=2048;pagetimeout=5"
                .Open()
            End With

            If xlDB.State Then
                Opened = True
            Else
                Opened = False
            End If
        Catch ex As Exception
            Opened = False
        End Try

        xlDBOpen = Opened
    End Function


    Public Sub xlDBClose()
        Try
            xlDB.Close()
            loFunctions.releaseObject(xlDB)
        Catch ex As Exception
        End Try
    End Sub

End Class



Public Class aceDBConn
    Public aceDB As New ADODB.Connection
    Public aceRS As New ADODB.Recordset
    Public qq As StringBuilder

    Public Function aceDBOpen(aceFileNM As String) As Boolean
        Dim Opened As Boolean

        Try
            With aceDB
                .ConnectionString = "Dsn=MS Access Database;dbq=" + aceFileNM.Replace("\\", "\") + ";driverid=25;fil=MS Access;maxbuffersize=2048;pagetimeout=5;uid=admin"
                .Open()
            End With

            If aceDB.State Then
                Opened = True
            Else
                Opened = False
            End If
        Catch ex As Exception
            Opened = False
        End Try

        aceDBOpen = Opened
    End Function


    Public Sub aceDBClose()
        Try
            aceDB.Close()
            loFunctions.releaseObject(aceDB)
        Catch ex As Exception
        End Try
    End Sub


End Class

별 것 아닌 상황이지만 의외로 번거롭다..

 

 

 

엑셀에 Add-in하는 방식으로 VBA개발을 자주 하게 되다보니 오피스 버전별 호환성을 테스트하기 위해 기본적으로 오피스 2007, 2010을 동시에 설치해두고 사용한다.

 

오피스 2010을 설치한 후에는 2007을 추가로 설치할 방법이 없으므로,

Windows설치 후 오피스2007을 先설치, 그리고 오피스2010을 後설치 (업그레이드 아닌 독립실행형으로) 하게 된다.

 

이런 환경에서는 기본적으로 오피스 문서(pptx나 xlsx, docx)를 더블클릭 했을 떄 오피스2010으로 실행이 된다.

 

헌데 더블클릭시 기본으로 열리는 프로그램을 바꾸고 싶으면 어떻게 해야 할까?

 

윈7의 기본프로그램 설정에서는 office14폴더의 엑셀(2010버전) / office12폴더의 엑셀(2007버전) 아이콘이 각기 다르게 취급되지만, 둘 중 뭘 선택해도 기본으로 열리는 프로그램은 변경되지 않는다.

 

 

물론 엑셀2007 프로그램 아이콘을 직접 실행해서 2007버전의 엑셀을 띄워둔 채로 파일을 더블클릭 하면 2007에서 열린다.

 

하지만 매 번 실행할 때마다 빈 문서(Book1) 이 실행된 채로 열리게 되서 작업표시줄 한켠을 차지하게 되고.. 무엇보다도… 매우 귀찮다.

 

 

이번에 비교적 간단한 방법으로 기본으로 열리는 프로그램을 변경하는 방법을 알게 되어 기록해 둔다.

 

 

[제어판]-[프로그램 추가/제거] – 기본으로 실행할 Office 버전 선택 – [변경] – [복구]

 

 

 

 

 

 

이와 같이 해 주면 약 3~4분정도 오피스 구성을 다시 하게 되고 기본 프로그램이 변경되어 더블클릭시 원하는 버전으로 실행되게 된다.

 

레지스트리를 변경해서 간단히 처리 하는 방법도 있을것으로 예상되지만… 그것까지 뒤져보는 시간이면 이걸 한번 해주는게 간단하므로.. Pass.

+ Recent posts