SQLのパラメータの記述について。

解決


超初心者  2009-01-19 09:50:21  No: 141307

SQLのパラメータの書き方について教えてください。
データベースのフィールド、pcdate、倍精度実数
でpcdateの範囲を指定して、検索をかけたいのですが、
下記のように、SQL文とパラメータを指定したのですが、どうもうまく検索がかかりません。
TextBox1[ 20080101 ]〜TextBox2[ 20080501 ]
の範囲で検索したいのですが、

Const strSelect As String = "SELECT * FROM mdata WHERE pcdate >= @minID AND pcdete <= @maxID"

oCommand.CommandText = strSelect

oCommand.Parameters.Add(New OleDbParameter("@minID", OleDbType.Double))
oCommand.Parameters("@minID").Value = CDbl(Me.TextBox1.Text)

oCommand.Parameters.Add(New OleDbParameter("@maxID", OleDbType.Double))
oCommand.Parameters("@maxID").Value = CDbl(Me.TextBox2.Text)

これで実行してみたのですが、「1つ以上の必要なパラメータの値が設定されていません。」とエラーが返ってきます。
データベースのフィールド、pcdate、倍精度実数
の設計がわるいのでしょうか?
パラメータの記述の方法で、倍精度型実数もパラメータの指定ができないのでしょうか?
もともとのデータベースのpcdateを倍精度型実数でしたので、データベースを変更することなくコードを書いてみたいのですが、
どうか、間違い箇所を教えてください。
よろしくお願い申し上げます。


YuO  2009-01-19 11:39:56  No: 141308

MSDNのOleDbParameterクラスの説明には,
http://msdn.microsoft.com/ja-jp/library/system.data.oledb.oledbparameter.aspx
> OLE DB .NET Framework データ プロバイダでは、名前付きパラメータではなく、疑問符 (?) で示される位置指定パラメータが使用されます。
とあります。

なので,
> Const strSelect As String = "SELECT * FROM mdata WHERE pcdate >= @minID AND pcdete <= @maxID"

Const strSelect As String = "SELECT * FROM mdata WHERE pcdate >= ? AND pcdete <= ?"
にしてみてください。


超初心者  2009-01-19 12:04:58  No: 141309

YuOさん、お返事ありがとうございました。
いろいろ、いじっているうちにに、検索がかかりました。
実は、スペルミスでした。
?について、少し勉強してみます。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加