statement = "SELECT OrderID, (SELECT VendName FROM Vendors WHERE Vendors.VendorID = Orders.VendorID) " &
",OrderDt, RcvdDt, OrderTotal " &
"FROM Orders " &
"WHERE VendName=? " &
"ORDER BY OrderDt DESC"
Dim cmd As New OleDbCommand(statement, connection)
cmd.Parameters.AddWithValue("VendName", txtVendorFilter.Text)
Dim reader As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.Default)
以前は、テキストボックスの値をSQLに直接連結することでこれを実行しようとしていましたが、「必要なパラメーターに値が指定されていません」というメッセージが表示され、代わりにパラメーター化されたクエリを使用する必要があることを読みました。だから私はこれを試しましたが、エラーは発生しませんが、リーダーには何も含まれていません。私はこれまでパラメータ化されたクエリを使用したことがないので、これが機能しない理由について少し迷っています。
編集:上記のコードを変更して、OLEDBがどのように機能するかについて簡単に読んだものから説明しました。これにより、「必要なパラメーターに値が指定されていません」というメッセージが再び表示されます。