アルツの備忘録

最近、年のせいで物忘れが激しい。
そこで、いろんなことをここに記録して行きたいと思います。

Excel SQL処理のDB処理のコード

2010年05月07日 22時01分05秒 | Excel
OLACLE,SQLSERVER,ACCESS,EXCEL,CSVなどと接続するための方法

1、SQL実行_Click : 指定されたSQLを実行しレコードセットを得る
2、OLEDB接続文字 : 各種データへの接続文字列を作成する

'**********************************
' SQL実行 処理
'**********************************
Private Sub SQL実行_Click()
    'SQL実行
    Dim con As New ADODB.Connection
    Dim connectionString As String
    Dim rs As New ADODB.Recordset
    Dim SQL As String
    
    'SQL抽出
  '選択されていればその部分、
    'そうでなければテキストボックス全てを対象
    If TextBox3.SelLength <> 0 Then
        SQL = TextBox3.SelText
     Else
        SQL = Me.TextBox3
    End If
    'SQLチェック SELECT文のみ受け付ける
    If Left(StrConv(SQL, 1), 6) <> "SELECT" Then
       MsgBox "SELECT 以外受け付けません。"
       Exit Sub
    End If
    
    '接続文字列を得る
    If Gl_システム = "" Then
       MsgBox ("接続先を選択して下さい。")
       Exit Sub
    End If
    connectionString = OLEDB接続文字
    
    On Error GoTo Err_DBConnectOpen
    
    '接続
    con.Open connectionString
    
    'レコードセットの取得
    Set rs = con.Execute(SQL)
    
    '***********************************************
    'レコードセットの内容をワークシートに出力する
    ' CopyFromRecordset(Data, MaxRows, MaxColumns)
    '***********************************************
    
			:
		   <省略>
			:

    rs.Close
    Set rs = Nothing
     
    Exit Sub
    
    'エラー処理
Err_DBConnectOpen:
    MsgBox "SQL実行出来ません" & vbCrLf & Err.Description
    
    'Connectionの状態を確認し、クローズ
    If con.State <> ADODB.adStateClosed Then
        con.Close
    End If
    Set con = Nothing

End Sub

'**********************************
' OLEDB接続文字を得る
'**********************************
Function OLEDB接続文字()

    'OLEDB接続文字を作成する
    Dim Connect_name As String
    Dim W_HDR As String
    Connect_name = ""
    W_HDR = "NO"
    
    If (Gl_システム = "ORACLE") Then
       'ORACLE:OLE DB プロバイダ(ORACLE製)
        Connect_name = "Provider=OraOLEDB.Oracle;" & _
                       "Data Source=" & Gl_サーバ名 & ";" & _
                       "User Id=" & Gl_ユーザID & ";" & _
                       "Password=" & Gl_パスワード
    ElseIf (Gl_システム = "MS_ORA") Then
        'ORACLE:OLE DB プロバイダ(Microsoft製)
        Connect_name = "Provider=MSDAORA;" & _
                       "Data Source=" & Gl_サーバ名 & ";" & _
                       "User Id=" & Gl_ユーザID & ";" & _
                       "Password=" & Gl_パスワード
    ElseIf (Gl_システム = "MSSQL") Then
        'Microsft SQL Server:OLE DBプロバイダ
        Connect_name = "Provider=SQLOLEDB;" & _
                       "Data Source=" & Gl_サーバ名 & ";" & _
                       "User Id=" & Gl_ユーザID & ";" & _
                       "Password=" & Gl_パスワード & ";" & _
                       "Initial Catalog=" & Gl_データベース名
    ElseIf (Gl_システム = "ACCESS") Then
        'Access(MDBファイル):OLE DBプロバイダ
        Connect_name = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source='" & Gl_データベース名 & "';" & _
                       "User Id=" & Gl_ユーザID & ";" & _
                       "Password=" & Gl_パスワード
    ElseIf (Gl_システム = "CSV") Then
        'CSVファイル ラベルがあれば、HDR = YES
        If Gl_ラベル = True Then W_HDR = "YES"
        Connect_name = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source='" & Gl_データベース名 & "';" & _
                       "Extended Properties='Text;HDR=" & W_HDR & ";FMT=Delimited'"
    ElseIf (Gl_システム = "EXCEL") Then
        'Excel (ブックファイル): OLE DBプロバイダ
        '「シート名+$」がテーブル名になります。
        If Gl_ラベル = True Then W_HDR = "YES"
        
        Connect_name = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source='" & Gl_データベース名 & "';" & _
                       "Extended Properties='Excel 8.0;HDR=" & W_HDR & ";IMEX=1'"
    ElseIf (Gl_システム = "ORA_INST" Or Gl_システム = "ODBC_ORA") Then
        'ORACLE:ODCB Oracle in instantclient
        Connect_name = "Driver={" & Gl_ドライバ名 & "};" & _
                       "DBQ=" & Gl_サーバ名 & ";" & _
                       "UID=" & Gl_ユーザID & ";" & _
                       "PWD=" & Gl_パスワード
    ElseIf InStr(Gl_システム, "ODBC") > 0 Then
        'ODCB
        Connect_name = "Driver={" & Gl_ドライバ名 & "};" & _
                       "Server=" & Gl_サーバ名 & ";" & _
                       "UID=" & Gl_ユーザID & ";" & _
                       "PWD=" & Gl_パスワード
    ElseIf InStr(Gl_システム, "DSN") > 0 Then
        'ODBCデータソース
        Connect_name = "DSN=" & Gl_サーバ名 & ";" & _
                       "UID=" & Gl_ユーザID & ";" & _
                       "PWD=" & Gl_パスワード
    Else
        MsgBox ("※対象システムなし!! " & Gl_システム)

    End If

   OLEDB接続文字 = Connect_name
   
End Function



最新の画像もっと見る

コメントを投稿