2017-04-13 19 views
0

ADOを使用してVBA内の2つのパラメータを使用してSQL Serverストアドプロシージャを呼び出そうとしています。私はエラーメッセージ "ランタイムエラー '13'タイプの不一致"を得た。ADOを使用してパラメータを使用したVBA呼び出しストアドプロシージャ

Dim cnn As New ADODB.Connection 
Dim cmd As New ADODB.Command 

cnn.ConnectionString = "Provider=SQLNCLI11;" _ 
       & "Server=(Local);" _ 
       & "Database=Inventory;" _ 
       & "Integrated Security=SSPI;" _ 
       & "DataTypeCompatibility=80;" 
cnn.Open 

With cmd 
    .ActiveConnection = cnn 
    .CommandType = "adCmdText" 
    .CommandText = "usp_mySP" 
    .Parameters.Append .CreateParameter("@fileName1", adChar, adParamInput, , File1.Name) 
    .Parameters.Append .CreateParameter("@fileName2", adChar, adParamInput, , File2.Name) 
    .Execute 
End With 

File1.NameFile2.Name私はFileSystemObjectオブジェクトを使用して得た2最新-変更されたファイルの名前です:私はオンラインでの検索時間を費やしてきたが、ちょうどそれが働いて得ることができない... は、ここに私のコードです。

usp_mySPは、本質的にbcpコマンドを使用してタブ区切りファイルをエクスポートするストアドプロシージャです。それはSQL Severで完璧に動作します。

アドバイスやコメントはありますか?

+0

param名から '@'文字を削除しようとしましたか? 'adVarChar'?また、直接関係はありませんが、これらのオブジェクトを 'As New 'として宣言することはほとんどありません。 –

+0

@マット私はなぜ、私は 'adCmdText'の周りに引用符を付けてはならないと思うと思います。 –

+0

ああ、そうです。それはenumです。 –

答えて

1

さらに数時間の試行錯誤の後、私は最終的にコードを動作させます。そして、adCharからadVarCharに変更を指摘していただきありがとうございます。

Dim cnn As New ADODB.Connection 
Dim cmd As New ADODB.Command 

cnn.ConnectionString = "Provider=SQLNCLI11;" _ 
      & "Server=(Local);" _ 
      & "Database=Inventory;" _ 
      & "Integrated Security=SSPI;" _ 
      & "DataTypeCompatibility=80;" 
cnn.Open 

With cmd 
    .ActiveConnection = cnn 
    .CommandType = adCmdStoredProc 
    .CommandText = "usp_mySP" 
    .Parameters.Append .CreateParameter("@fileName1", adVarChar, adParamInput, 50, File1.Name) 
    .Parameters.Append .CreateParameter("@fileName2", adVarChar, adParamInput, 50, File2.Name) 
    .Execute 
End With 
MsgBox"Thank God! Finally it's working!" 
cnn.Close 
関連する問題