2016-08-08 4 views
1

を有していません。 VBAでSPとコマンドラインを検証するために、私はCopyFromRecordsetメソッドを使用してデータを表示しましたが、すべて正常です。ADOレコードは、私はVBA走行でADOコマンドオブジェクトを有し、(SQL Serverの)ストアドプロシージャから値を返すコマンドをADOに設定ソースとはRecordCountを(ストアドプロシージャ)

Set ADOComm = New ADODB.Command 
With ADOComm 
    .ActiveConnection = ADOConn 
    .CommandType = adCmdStoredProc 
    .CommandText = "GenerateMasterSumIfs" 
    .Parameters.Append .CreateParameter("ImportFilePath", adVarChar, adParamInput, 100, TextFileSavePath) 
End With 

Set ADORec = New ADODB.Recordset 
Set ADORec = ADOComm.Execute 

私は今、(例えば)FINDまたはGETROWSを使用して返されたレコードをナビゲートできるようにしたいと思いますが、レコードはデータがないために表示されます(recordset.RecordCountは-1を返します)。私はこれをオンラインで調べようとしましたが、ソース(私の場合はSQL Server)によってカーソルタイプの参照が制限されていましたが、私が理解して使用できる解決策を見つけることができませんでした。

だから、私の質問(複数可)、具体的には、以下のとおりです。

  1. は、私はそれを「ナビゲート」私のデータを照合するADOコマンド/レコードの組み合わせを継続して使用することはできますか? OR
  2. 必要なナビゲーションを有効にするには、別の方法でSPを実行する必要がありますか?

私はこの分野には専門家だ、ので、私の技術的な説明や任意のサイトエチケット失言であなたの忍耐に感謝します。私が必要

+0

ストアドプロシージャに「SET NOCOUNT ON;」はありますか? – gofr1

+0

そうではありません。私はこれを私のSPに追加しようとしましたが、私の状況には何の差もありませんでした。私は、しかし、その後、私の問題を解決した(私の答えを参照してください)。しかし、あなたの提案をありがとう。 –

答えて

1

ソリューションは、ADO接続オブジェクトのCursorLocationプロパティでした。それをadUseClientに変更することで、カーソルを移動して、必要に応じてFINDやGETROWSなどのメソッドを使用することができました。

Set ADOConn = New ADODB.Connection 
ADOConn.CursorLocation = adUseClient 
ADOConn.Open "Driver={SQL Server Native Client 11.0};Server=ServerName;Database=DBName;Trusted_Connection=yes;" 

Set ADOComm = New ADODB.Command 
With ADOComm 
    .ActiveConnection = ADOConn 
    .CommandType = adCmdStoredProc 
    .CommandText = "GenerateMasterSumIfs" 
    .Parameters.Append .CreateParameter("ImportFilePath", adVarChar, adParamInput, 100, TextFileSavePath) 
    .Parameters.Append .CreateParameter("MTFilePath", adVarChar, adParamInput, 100, PathToMT) 
End With 

Set ADORec = New ADODB.Recordset 
Set ADORec = ADOComm.Execute 
関連する問題