ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Visual Basic User's Clubコミュのクエリビルダの使い方について。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
VB2005環境です。
ボタンクリック時にデータベースからデータを取得して、
Spredaに表示させようとしています。

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SearchBtn.Click

Me.CUSTOMERTableAdapter.Fill(Me.DataSet1.CUSTOMER)

Me.FpSpread1.DataSource = Me.DataSet1.CUSTOMER

End Sub

以上のようにコードは書きました。

テーブルアダプタは、クエリビルダを用いて、以下のような
SQL文が記述してある状態です。

SELECT CUSTOMER_CD AS "コード", KIGYOU_CD AS 企業名, COMPANY_CD AS 会社名
FROM CUSTOMER

フォームにはコード、企業名、会社名を入力するテキストボックスがあり、
それらに値が入力されていたら、検索条件に含めたいのですが
(例えば、コードテキストボックスに1が入っていたら、
WHERE CUSTOMER_CD = 1 というように。値がなければ含めない)、これを実現するには
データセットデザイナからでは無理でしょうか?
クエリビルダにはフィルタという項目があるので、WHERE句を生成することはできる
ようですが、テキストボックスの値を見る方法がわからず困っています。
ご教授いただけないでしょうか?

コメント(9)

追記です。
フィルタに?を入力して、パラメータを作り、
Me.CUSTOMERTableAdapter.Fill(Me.DataSet1.CUSTOMER, Me.COdeTextBox.Text.ToString)
としました。
これにより、テキストボックスに値がある場合は、きちんと条件に従って
検索できるようになりましたが、しかしテキストボックスに何も入力しない
場合でも検索条件としてテキストボックスの値を見てしまうようです。
テキストボックスに値がない場合は、Where句から外したいのですが…。

方法がありましたら教えてください。
>★GrandiS★さん
レスありがとうございます。
それも考えたのですが、たとえばテキストボックス1、2、3があった場合、
テキストボックス1にのみ値がある時のクエリ、2にのみ値がある時のクエリ、
3の時のみ、1と2の時…とやっていくと物凄くたくさんのクエリを作る必要が
出てきてしまうなぁと思いまして…。
申し訳ないのですが、そのフィルタプロパティについて詳しく教えていただけないでしょうか?
テーブルアダプタのプロパティでしょうか?
条件ありと条件なしの場合でクエリーの内容を変更しない一番簡単な方法と・・・勝手に思ってた方法は、WHERE 項目 BETWEEN @A AND @B としといて、パラメータ変数を2つ用意し、条件指定されない場合は、固定値で一番低い値と一番高い値を渡し、条件指定された場合は@A,@Bに指定された同じ値をセットしたりして回避してますねぇ・・・
色々試すの邪魔くさくって、フィルターは試してないので、なんともいえませんが・・・フィルター使う方が楽なのかも・・^^;;
>hiro_ozzy_5150さん
レスありがとうございます。
調べてみたのですが、クエリのほうで制御する場合、どうやら
WHERE パラメタ IS NULL OR 項目 = パラメタ
としても、テキストボックスが空白時は条件なしと
同様の動作が実現できるようで、こちらで制御してみました。

>★GrandiS★さん
今回はクエリで逃げましたが、フィルタプロパティについては
まったく知らなかったので大変参考になりました。
ありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Visual Basic User's Club 更新情報

Visual Basic User's Clubのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング