C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: 検索ボタン押下の処理方法


(過去ログ 88 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■52620 / inTopicNo.1)  検索ボタン押下の処理方法
  
□投稿者/ たかー (1回)-(2010/08/18(Wed) 14:17:49)

分類:[C#] 

2010/08/18(Wed) 14:38:48 編集(投稿者)
2010/08/18(Wed) 14:38:39 編集(投稿者)

開発環境:Windows7/Visual Studio2005 使用言語:C#.NET Ver:.NET Framework2.0
初めて投稿します。C#初心者(一年目)です。
検索ボタンの押下処理についてアドバイスよろしくお願いしますm(_ _)m
伝え方が下手かもしれませんが、例えばまず、コンボボックスの概要は、検索条件に日付が入るコンボボックスが二つありまして、
一つが開始日付ともう一つのコンボボックスは、終了日付が入ります。
次に、その二つのコンボボックスの日付を選択したら、検索ボタンで二つの選択された日付間のデータをデータグリッドビューに表示させたいのですが、
検索ボタン押下処理は、初めての経験で何をどうしていいのか解りません。

微妙に解っているのか謎ですが、処理の流れとしてはデータベースから検索条件のデータだけを表示してあげることぐらいしか解りません。

できれば、何分、不器用な者でして基本の検索ボタン処理プログラムコード付きでアドバイスをよろしくお願いしますm(_ _)m

それと、もう一つ質問なんですが、エラーで「IDがありません。」とはどういった意味なのでしょうか?

重ねてよろしくお願いします。
引用返信 編集キー/
■52621 / inTopicNo.2)  Re[1]: 検索ボタン押下の処理方法
□投稿者/ マサヤ (99回)-(2010/08/18(Wed) 14:48:33)
2010/08/18(Wed) 15:13:07 編集(投稿者)

とりあえず詳細設計を書きましょう。
コンボボックスの初期値は平気でしょうか?

検索ボタン押下時イベント
@FromCmb日付取得 テーブルの日付カラムによりcastとかするとよい ex)Parse.DateTime(cmbFromDate.SelectedValue.ToString()).ToString("yyyy年MM月dd日")
AToCmb日付取得
BSQL実行 SELECT 取得データ FROM テーブル名 WHERE テーブル名.日付 BETWEEN @ AND A
 データベース接続とかはわかりますか?
 バインド変数とかは?
Cクエリ結果をSQLDATAREADERとかで取得してDataTableとかに格納
DグリッドのDataSourceを格納したDataTableする

糸冬 

例外の取得とかは現場の標準にあわせてください。

追記
「IDがありません」はコントロールのIDと一致する指定したIDがありませんよ、ってことです。
デザイナのコントロールのプロパティでNAMEってありますよね?それです。
引用返信 編集キー/
■52626 / inTopicNo.3)  Re[2]: 検索ボタン押下の処理方法
□投稿者/ たかー (2回)-(2010/08/18(Wed) 16:12:57)
迅速なアドバイスをして頂きまして、ありがとうございます。
アドバイスを頂いた通り詳細設計を作ることから始めます。
データベース接続とかはわかりますか?のことですが、
マニュアル通りならコードはわかる状態ですが、
バインド変数とかは?については、SELECT文で投げたSQLを変数に埋め込む(格納)して、
使うことだけは知っています。
EX:public bool getGenaralList(ref DataTable dTable)
          {
              try
              {
                  string tableName = ClsMDB.MDBTables.GeneralCodeMaster;

                  //データ取得
                  string sql = "Select * from [" + tableName + "]";
                  dTable = this.selectDataTable(tableName, sql);

                  return true;
              }
              catch
              {
                  throw;
              }
          }
ぐらいしかわかりません。
ヒントを頂いて実際にコードを記述するのは、
自分には難しく何かサンプル的なものがあればより助かるのですが・・m(_ _)m

引用返信 編集キー/
■52627 / inTopicNo.4)  Re[3]: 検索ボタン押下の処理方法
□投稿者/ マサヤ (101回)-(2010/08/18(Wed) 16:38:36)
2010/08/18(Wed) 17:06:20 編集(投稿者)

簡単な一例を記述します。
SqlDbTypeは変えてください。DateTimeだったらDateTimeに。

SqlParameter[] prm = new SqlParameter[]{new SqlParameter(@"STARTDATE", SqlDbType.String), new SqlParameter(@"ENDDATE", SqlDbType.String)};

prm[0].Value = 開始日付;
prm[1].Value = 終了日付;
string SQLWord = "SELECT * FROM TABLE WHERE TABLE.DATE BETWEEN @STARTDATE AND @ENDDATE";
string connection = "Server=(local);Trusted_Connection=yes;database=データベース名";
SqlConnection con = new SqlConnection(Connection);
con.Open();
sqlCommand cmd = new SqlCommand(SQLWord, con);
DataTable dt = null;
foreach(SQLParameter param in prm)
{
cmd.Parameter.Add(param);
}
using(SqlDataReader dr = cmd.ExecuteReader())
{
dt = new DataTable();
dt.Columns.Add("カラム名", Typeof(string));
dt.Columns.Add("カラム名", Typeof(string));
int i = 0;
while(dr.Read())
{
dt.Rows[i]["カラム名"] = dr["カラム名"].ToString();
dt.Rows[i]["カラム名"] = dr["カラム名"].ToString();
i++;
}
}
con.Close();
dataGridView1.DataSourse = dt;
引用返信 編集キー/
■52628 / inTopicNo.5)  Re[4]: 検索ボタン押下の処理方法
□投稿者/ たかー (3回)-(2010/08/18(Wed) 16:58:10)
度々の迅速なアドバイスありがとうございます。
出だしから躓いてしまい、一点だけご教授を願いたいのですが、
SqlParameter[] prm = new SqlParameter[]{new SqlParameter(@"STARTDATE", SqlDbType.String), new SqlParameter(@"ENDDATE", SqlDbType.String)};
の配列は何に使われるものなのでしょうか?
特に、@"STARTDATE"と@"ENDDATE"の解析が自分には難しく、
それ以降のコードはこれが理解できれば解決できそうな予感がするので、
アドバイスよろしくお願いしますm(_ _)m
引用返信 編集キー/
■52629 / inTopicNo.6)  Re[5]: 検索ボタン押下の処理方法
□投稿者/ マサヤ (102回)-(2010/08/18(Wed) 17:01:52)
あとでSQL文に同じ文字列が出てきますよね?
名前みたいなものです。

No52628 (たかー さん) に返信
> 度々の迅速なアドバイスありがとうございます。
> 出だしから躓いてしまい、一点だけご教授を願いたいのですが、
> SqlParameter[] prm = new SqlParameter[]{new SqlParameter(@"STARTDATE", SqlDbType.String), new SqlParameter(@"ENDDATE", SqlDbType.String)};
> の配列は何に使われるものなのでしょうか?
> 特に、@"STARTDATE"と@"ENDDATE"の解析が自分には難しく、
> それ以降のコードはこれが理解できれば解決できそうな予感がするので、
> アドバイスよろしくお願いしますm(_ _)m
引用返信 編集キー/
■52630 / inTopicNo.7)  Re[6]: 検索ボタン押下の処理方法
□投稿者/ マサヤ (103回)-(2010/08/18(Wed) 17:16:59)
public bool getGenaralList(ref DataTable dTable)
{
try
{
string tableName = ClsMDB.MDBTables.GeneralCodeMaster;

//データ取得
string sql = "Select * from [" + tableName + "]";
dTable = this.selectDataTable(tableName, sql);

return true;
}
catch
{
throw;
}
}
これについててすが、
ClsMDB.MDBTables.GeneralCodeMasterとselectDataTable
についての説明がないと何もいえません。
恐らくテーブル名の定数とデータベース接続からExecuteまでの実行をしている関数だと思うのですが。
多分、selectDataTable関数に引数を増やしたもの(Where句に入るパラメータ)を作成したらいいのではないですか?
引用返信 編集キー/
■52636 / inTopicNo.8)  Re[7]: 検索ボタン押下の処理方法
□投稿者/ たかー (4回)-(2010/08/18(Wed) 18:30:10)
アドバイス本当に感謝しています。
SqlParameter[] prm = new SqlParameter[]{new SqlParameter(@"STARTDATE", SqlDbType.String), new SqlParameter(@"ENDDATE", SqlDbType.String)};
の解釈は@"STARTDATE"と@"ENDDATE"は、名前みたいなもので、配列のインスタンスを生成して、それぞれのパラメータを設定してあげると解釈して良かったのでしょうか?

また、selectDataTable関数に引数を増やしたもの(Where句に入るパラメータ)を作成して一度試してみたいと思いますm(_ _)m

引用返信 編集キー/
■52654 / inTopicNo.9)  Re[8]: 検索ボタン押下の処理方法
□投稿者/ たかー (5回)-(2010/08/19(Thu) 09:31:17)
No52636 (たかー さん) に返信
> アドバイス本当に感謝しています。
> SqlParameter[] prm = new SqlParameter[]{new SqlParameter(@"STARTDATE", SqlDbType.String), new SqlParameter(@"ENDDATE", SqlDbType.String)};
> の解釈は@"STARTDATE"と@"ENDDATE"は、名前みたいなもので、配列のインスタンスを生成して、それぞれのパラメータを設定してあげると解釈して良かったのでしょうか?
>
> また、selectDataTable関数に引数を増やしたもの(Where句に入るパラメータ)を作成して一度試してみたいと思いますm(_ _)m
>
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -