dポイントプレゼントキャンペーン実施中!

C#とSQLServerでアプリケーションを作っているのですが、以下の点で困っています。

テーブルA(以下T_A)から開始日と終了日が指定した期間のデータを抜き出そうとしています。
そこで、データアダプターをツールボックスから配置し、その中に以下のSQLを設定しています。
フィールド名をf1、f2、f3、f4とします。日付はf4に入っています。
Select f1,f2,f3
From T_A
Where ( f4 BETWEEN @SD AND @ED)

そして、プログラムのコード上から、@SDと@EDにデータを入れたいのですが、
その部分で行き詰っています。


sqlDataAdapter1.sqlSelectCommand2.Parameters["@SD"].value = "2005/01/01";
sqlDataAdapter1.sqlSelectCommand2.Parameters["@ED"].value = "2005/01/31";

というようなコードを記述しますと、ビルドエラーとして、

System.Data.sqlClient.SqlDataAdapterにsqlSelectCommand1の定義がありません
静的でないフィールド、メソッド、またはプロパティ'プロジェクト名.Form1.sqlDataAdapter'で、
オブジェクト参照が必要です。

と出ます。

public class Form1には、それぞれの記述が確認できますので、更に謎なのです。

ちなみにデータセットのプレビューにて、それぞれの変数を指定してやると、取得結果は正しく抽出できます。

どなたか、何かお気づきの点はないでしょうか?
アドバイスをよろしくお願いいたします。

A 回答 (2件)

OleDbしか使ったことないのですがお答えします。


sqlSelectCommand2はsqlDataAdapter1のプロパティではないので
sqlDataAdapter1.sqlSelectCommand2のような書き方は出来ないです。

sqlDataAdapter1.SelectCommand = sqlSelectCommand2;
sqlSelectCommand2.Parameters["@SD"].value = "2005/01/01";

で出来ると思います。
sqlDataAdapter1のSelectCommandにsqlSelectCommand2を入れたので
sqlDataAdapter1.sqlSelectCommand2のような書き方をしたのだと思いますが
変数と同じでどんな値を入れてもプロパティ名までは変わらないです。
データアダプタからつなげて書くとしたら

sqlDataAdapter1.SelectCommand.Parameters["@SD"].value = "2005/01/01";
※SelectCommandを先に設定する必要があります

とします。
    • good
    • 0
この回答へのお礼

sakuhatさん、回答ありがとうございます。

回答に頂いた内容は、「そういうことか!」とわかり、実行に移ったのですが、
結果としてエラーが出ます。

System.Data.sqlClient.sqlParameterにvalueの定義がありません。・・・I
"プロジェクト名.Dataset1"は'クラス'を意味しますが、'変数でなければなりませn'
静的でないフィールド、メソッド、またはプロパティ'プロジェクト名.Form1.sqlDataAdapter1 'で、オブジェクト参照が必要です。

と、出ます。
Iは、「sqlDataAdapter1.SelectCommand」部分に、それ以外は、valueを設定している第2文を指定しているようです。

回答内の※の部分は、sqlDataAdapter1のSelectCommandプロパティ内に書かれています。

もう一度、作り直してみますが、何かお気づきの点がありましたら、よろしくお願いいたします。

お礼日時:2005/04/19 18:45

SqlParametersのプロパティはvalueではなくValueでした。


すいません。

しかし、他のエラーは別の部分のエラーだと思います。
他の部分を見直してみてください。
    • good
    • 0
この回答へのお礼

sakuhatさん、回答ありがとうございます。

Valueの件は、仰っているように大文字にするとエラーは出なくなりました。

後者のエラーについては、まだ不明です。
コードとにらめっこします。

お礼日時:2005/04/24 06:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!