- PR -

プログラミングによるクエリーの設定方法

1
投稿者投稿内容
まめ
会議室デビュー日: 2003/06/04
投稿数: 17
投稿日時: 2003-06-24 11:56
C# Webform にて開発中です。

DataGridに表示されているデータを、チェックボタンなどを選択することによって
クエリーを変更し、別のデータを表示させたいという、
プログラミングによるクエリーの設定方法手順がわかりません。

初歩的な内容なので、大変恐縮ですが
何かよいサンプルやヒント項目がありましたら、教えて頂きたいです。

宜しくお願い致します。
(ちなみに、OleDaDataAdapterを使用します。)
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-24 16:26
こんにちは。

「チェックボックス」など、選択するものをrunat="server"でマークします。
「検索」などの、DataGridへ表示するトリガーとなるボタンなどを作ります。
そのトリガーのイベントで、選択するものの内容を取り込み、if文などでSELECT文を構築します。
できあがったSELECT文を発行し、結果をDataGridにバインドすればOK。
まめ
会議室デビュー日: 2003/06/04
投稿数: 17
投稿日時: 2003-06-24 19:30
お返事、どうもありがとうございます。

以下のような感じでプログラムを作成しましたところ、DataGridが表示されません。。。
エラーは出てないんですけど。
(ツールボックスのDataSetを使用する場合は、表示されています。)
何か、足りない設定があるのでしょうか?
アドバイスを頂きたいです。
宜しくお願い致します。

--------------------------------------------------------------------------
// チェックボックスがチェックされた場合
if(ChkOnlyLO.Checked)
Test1();
// チェックが外された場合
else
Test2();

//結果をDataGridにバインド
DataGrid1.DataBind();


public void Test1()
{
//コネクション設定//
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.MDB");
myConnection.Open();
//クエリー設定//
string mySelectQuery = "SELECT * FROM Categories ORDER BY CategoryID";
OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection,myTrans);
//DataAdapter設定//
OleDbDataAdapter custDA = new OleDbDataAdapter();
custDA.SelectCommand = myCommand;
//DataSet設定//
DataSet custDS = new DataSet();
custDA.Fill(custDS, "Customers");
}

--------------------------------------------------------------------------

そして、つかぬ質問なのですが、
一番初めにページが読み込まれる時は、ツールボックスからのoleDbDataAdapterとDataSetにてデータを設定しております。
上記のような操作をしたい場合、クエリー文のみを設定すればよいのでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-24 19:48
おしい!!
 Test1()で、DataSetをNewして、DataAdapterから読み込ませていますが、Test1()を抜けるとDataSetが消えてしまいます。その前にDataGridにバインドしなければなりません。『結果をDataGridにバインド』と書きましたが、結果の設定とバインドが別々になっているんですね。
#『結果の設定』を書かなかったという意味で、私のチョンボですね
引用:

public void Test1()
{
//コネクション設定//
OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Test.MDB");
myConnection.Open();
//クエリー設定//
string mySelectQuery = "SELECT * FROM Categories ORDER BY CategoryID";
OleDbCommand myCommand = new OleDbCommand(mySelectQuery,myConnection,myTrans);
//DataAdapter設定//
OleDbDataAdapter custDA = new OleDbDataAdapter();
custDA.SelectCommand = myCommand;
//DataSet設定//
DataSet custDS = new DataSet();
custDA.Fill(custDS, "Customers");
// DataGridにデータを送る
DataGrid.DataSource = custDA
// もう一つ、DataGridのプロパティに設定が必要。探してください
DataGrid.Bind()

}


どちらかというと、「Test1(DataGrid dg)」とし、Test1の中でデータの設定を終えてしまうか、「String Test1()」としてSQL文だけを作らせ、発行〜バインドは上でするか。

引用:

一番初めにページが読み込まれる時は、ツールボックスからのoleDbDataAdapterとDataSetにてデータを設定しております。
上記のような操作をしたい場合、クエリー文のみを設定すればよいのでしょうか?


 同じように、クエリを設定し、DataAdapterなどで取り込み、DataGridに送り込んでバインドします。
まめ
会議室デビュー日: 2003/06/04
投稿数: 17
投稿日時: 2003-06-24 20:17
早々のお返事、大感謝です。
早速Jittaさんが教えてくれたように、変更してみました!

怒られました☆(泣)
 無効なデータ ソースが 'DataGrid1' に対して使用されています。有効なデータ ソースは、IListSource または IEnumerable を実装しなければなりません。

でもこれをクリアすればという、希望の光が見えました。
どうもありがとうございます!
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-06-25 08:30
引用:

まめさんの書き込み (2003-06-24 20:17) より:
怒られました☆(泣)
 無効なデータ ソースが 'DataGrid1' に対して使用されています。有効なデータ ソースは、IListSource または IEnumerable を実装しなければなりません。


 失礼。私はDataTableを放り込んでいました。
まめ
会議室デビュー日: 2003/06/04
投稿数: 17
投稿日時: 2003-06-25 09:54
解決致しました。

また教えてください。
ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)