0

接続プロパティの[定義]タブにあるコマンドテキストボックスにスキップしましょう。私のコマンドタイプはSQLです。

spDuplicatesAnalysisSSMS内から実行できます。私は運が悪かったnumbeeのことを試しました...

exec spDuplicatesAnalysis
dbo.spDuplicatesAnalysis

では、実際のコマンドtxtはどのように読み取る必要がありますか?

どうも!

4

1 に答える 1

0

ExcelVBAからストアドプロシージャを呼び出す

  1. 新しいExcelブックを開く
  2. タブの1つに「データ」という名前を付けます(または以下のコードを変更します)
  3. VBエディターを開きます(Alt + F11)
  4. 新しいモジュールを追加します
  5. Microsoft ActiveXデータオブジェクトへの参照を設定します(使用可能な最大のバージョン番号を選択してください) MicrosoftActiveXデータオブジェクトへの参照の設定
  6. 次のコードをモジュールに追加します

    Sub ExecStoredProcedureFromExcelVBA()
    
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim connectString As String
    Dim custState As String
    Dim tgt As Worksheet
    
    Set tgt = ThisWorkbook.Sheets("Data")
    custState = "TX"
    
    ' Clear the target worksheet
    tgt.UsedRange.Clear
    
    ' Set the connection string
            connectString = "Provider=SQLOLEDB;Data Source=.;" & _
                 " Initial Catalog=Sandbox;Integrated Security = SSPI"
    
    ' Create the adodb objects
    Set cn = New ADODB.Connection
    Set rs = New ADODB.Recordset
    
    ' Open the connection and execute the stored procedure
    cn.Open connectString
    cn.spGetCustomersForState custState, rs
    
    ' Check for results
    If rs.state = 1 Then
        If Not rs.EOF Then
            ' Write the contents of the recordset to our target
            tgt.Range("a1").CopyFromRecordset rs
        rs.Close
        End If
    End If
    
    ' Clean up after ourselves
    If CBool(cn.state And adStateOpen) Then cn.Close
    Set cn = Nothing
    Set rs = Nothing
    
    End Sub
    
  7. 使用するデータベース、ストアドプロシージャ、およびパラメータを参照するようにモジュールを変更します

  8. コードを実行する
于 2012-09-15T21:42:20.523 に答える