次の方法で共有


名前付きコマンドにパラメーターを渡す

コマンドの結果が名前付きコマンドの "出力" 変数として渡されるのと同様に、パラメーター化されたコマンドのパラメーターを名前付きコマンドに "入力" 変数として渡すことができます。

次のコード例では、CustomerID が "ALKFI" である顧客によって行われたすべての注文を Northwind データベースから取得しようとしています。 CustomerID の値は、名前付きコマンドが呼び出さるときに提供されます。

Const DS = "MySqlServer"  
Const DB = "Northwind"  
Const DP = "SQLOLEDB"  
  
Dim objConn As New ADODB.Connection  
Dim objRs As New ADODB.Recordset  
Dim objComm As New ADODB.Command  
  
CommandText = "SELECT OrderID, OrderDate, " & _  
                     "RequiredDate, ShippedDate " & _  
                     "FROM Orders " & _  
                     "WHERE CustomerID = ? " & _  
                     "ORDER BY OrderID"  
  
ConnectionString = "Provider=" & DP & _  
                   ";Data Source=" & DS & _  
                   ";Initial Catalog=" & DB & _  
                   ";Integrated Security=SSPI;"  
  
' Connect to the data source.  
objConn.Open ConnectionString  
  
' Set a named command.  
objComm.CommandText = CommandText  
objComm.CommandType = adCmdText  
objComm.Name = "GetOrdersOf"  
Set objComm.ActiveConnection = objConn  
  
' Call the named command, passing a CustomerID value  
' as the input parameter.   
'    "ALFKI" is the required input parameter,  
'    objRs is the resultant output variable.  
objConn.GetOrdersOf "ALKFI", objRs  
  
' Display the result.  
Debug.Print "All orders by ALFKI:"  
Do While Not objRs.EOF  
    Debug.Print vbTab & objRs(0) & vbTab & objRs(1) & vbTab & _  
                objRs(2) & vbTab & objRs(3)  
    objRs.MoveNext  
Loop  
  
' Clean up.  
objRs.Close  
objConn.Close  
Set objRs = Nothing  
Set objConn = Nothing  
Set objComm = Nothing  

すべての入力パラメーターが出力変数より前にあり、パラメーターのデータ型が一致するか、対応するフィールドのデータ型に変換できる必要があることに注意してください。 次のステートメントを見てください。

objConn.GetOrdersOf 12345, objRs  

この場合、必要な入力パラメーターが Integer 型ではなく String 型であるため、データ型不一致のエラーが発生します。

次の呼び出しを見てください。

objConn.GetOrdersOf "12345", objRs  

これは有効ですが、データベースにはこのようなレコードが存在しないため、空の結果セットが生成されます。

参照

Connection オブジェクト (ADO)