VBとDB連携について

このQ&Aのポイント
  • VB.NETとDB(オラクル)を使って開発をしています。
  • textbox1~textbox3の内容が入っている項目だけWHERE句で抽出させたいです。
  • テキストボックスが10個や100個になった場合、効率的な方法はありますか?
回答を見る
  • ベストアンサー

VBとDB連携について

VB.NETとDB(オラクル)を使って開発をしています。 画像の左側のテキストボックスは上から  textbox1(Nameプロパティ:txt_Name)  textbox2(Nameプロパティ:txt_Tihou)  textbox3(Nameプロパティ:txt_Category) としています SQL文で textbox1~textbox3の内容が入っている項目だけWHERE句で抽出させたいです たとえば画像の例で、 textbox1に「みかん」、textbox3に「果物」と入れているとき、 赤の四角で囲った2行をdatagridviewとかに表示しようとおもっています 実際のコード(変数等は中略しています) 'textbox1、textbox2、textbox3が空白でない if textbox1.text <> "" And textbox2.text <> "" And textbox3.text <> "" SQL = "select * from ["表名"] where 名前 = " & textbox1.text & _ " and 地方 = " &textbox2.text & " and カテゴリ = " & textbox3.text" end if 'textbox1が空白でない if textbox1.text <> "" And textbox2.text = "" And textbox3.text = "" SQL = "select * from ["表名"] where 名前 = " & textbox1.text & " end if ・ ・ ・ ・ ・・・という感じで全ての組み合わせ(10通りくらい)でIF文を書いています この例では3つなのでまだいいかもしれませんが、 テキストボックスが10個とか100個とかになったらどのように判断したらいいのか分からないです 何か効率いい方法、知っている方いましたら教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

んー そうねぇ まぁ、定番(?と、おいらが思ってる)の例で。 ただ、VB.NETの知識が無いので、どう書くのかは分からんです。簡単に方法だけ。 1.隠しフィールドを作って、項目名を埋め込んでおく。 いや。.netで出来るかどうか知らんけど。WEBの言語だと、hidden項目があるので、よくやる手です。出来なきゃ、ラベル名の取得とかできるかどうか。かなぁ。 とりあえず、「名前」「地方」「カテゴリ」のような項目名は、見えない項目として、どっかにおいといてやれば、システム上取得してきて使えたりします。 2.並んでるテキストボックスの最大値を取得する。 取得方法がある。でも、無ければ手打ち。でも何でもいいんですけど、とりあえず「最大値を取る」取れれば、ループ処理の回数が分かるので。 3.ループさせて、中身を取る。 textbox1。。。って命名規約なら、「textbox1~textbox100」まで、数字部分を添え字でカバーしてやれば、出来ないこた無い気がしませんか? 「1」の、隠しフィールドも、似たような命名で作っておけば、同様に、添え字ループで取得できるかと。 4.「3」にあわせて、SQL文を組む。 SQL = "select * from テーブル " SQL_WHERE = "" '**最大値。の数までループ処理 do while count < max_count '**textboxの「?」個目が空白かどうか。 '**空白じゃなければ、適したSQL文を組んでやる if textbox添え字 <> "" then SQL_WHERE = SQL_WHERE & "「1」で取得できる名前 = textbox添え字.text and" end if loop '**「and」がジャマになるから、後ろから何文字か削ってやる。 if LEN(SQL_WHERE) > 0 then SQL_WHERE = LEFT(SQL_WHERE,LEN(SQL_WHERE) - 4) end if SQL = SQL & SQL_WHERE こんな感じかな。。。 実際に流したわけじゃないので流れるかどうかの保障はしません。(というか、テキトーだから動かないけど。 「1~4」と、コメント文あたりで、感じだけつかんで、.netで起こしてもらえれば幸いです-w- まぁ、かなり原始的なやりかただとは思うので、もっと楽だとか、奇抜な方法だとかが他の回答者さんから出る事を祈りつつ、ひっそり見ていたいと思います。

関連するQ&A

  • 1つのテキストボックスに入力された複数のキーワードで検索する方法

    開発言語はASPで、DBはSQL Serverを使用して、 現在プログラムの勉強をしております。 Search.aspというファイルで、 1つのテキストボックスに、 例えば、 佐藤 鈴木 のように入力し、 複数のキーワードで OR 検索をしたいのですが。 現在は下記のようなSQLを書いているのですが、 1つのキーワードでしか検索できませんので、 複数のキーワードで検索できるようにするには、 どのようにSQL及び、プログラムを記述したら良いのでしょうか。 dim name name = Request("name") sql = "select * from TABLE " sql = sql & "WHERE id <> 0 " if name <> "" then sql = sql & " AND (name LIKE '%" & name & "%') end if よろしくお願いいたします。

  • VB.NETでSQLを作る時のカンマの対処

    こんにちは。 タイトルの通りなのですが、VB.NETでSQL文を作りたいのですが、カンマの対処について分からなかったので質問させて頂きました。 例えば、下記のようなテーブルとwindowsアプリケーションフォームがあったとします。 itemテーブル                 フォーム(□はチェックボックスだと思ってください。) item_id  item_cd  item_name        □ りんご ---------------------------------       □ ばなな 0001    0001    りんご        □ みかん 0002    0002    ばなな        □ めろん 0003    0003    みかん 0004    0004    めろん このフォームで、チェックボックスに印が付いているものを、SQL文の条件に加えたいと思っていますが、なかなか上手く書けません。 現在のソース sql="SELECT item_id,item_cd,item_name " _   & "FROM item " _   & "WHERE item_name IN (" If apple.checked = True Then   sql &= "'" & label1.text & "'," End If If banana.checked = True Then   sql &= "'" & label2.text & "'," End If         ・         ・         ・ このやり方だと、sql文の最後にカンマが残ってしまいます。 ですが、前カンマをやったところで構文的におかしくなってしまいます。 このようなとき、どのように対処すればよいのでしょうか? よろしければ、教えてください。

  • SQLでテキストボックスの文字を前方一致検索をするには?

    visual basic2005 を使ってSQLのデータを検索するプログラムを作っています。 テキストボックスに入力された文字を検索したいのですが、 構文がうまくいかずに困っています。 dim txt as string = textBox1.text "SELECT * FROM tesut WHERE line LIKE '" & txt & "'" このようにline行にtxtの値が含まれているものを検索したいです。 完全一致ではなく前方一致にしたいのですが、その文がうまくかけなくて困っています。 どうかアドバイスをお願いします

  • [VB6] SQLの作成について

    お世話になります。 VB6でSQL文字列を作成しております。 そこで質問させていただきたいのですが、 画面のテキストボックスに入力した値(txtName.textおよびtxtKatakana.text )が空かどうかに応じて、 SELECT文のWHERE句の内容を変えたいのですが。 (現ソース) sSQL = "" sSQL = sSQL & "SELECT * FROM TABLE名" If txtName.text <> "" AND txtKatakana.text <>"" Then sSQL = sSQL & "WHERE 名前= ' " & txtName.text & " ' " sSQL = sSQL & " AND カタカナ= ' " & txtKatakana.text & " ' " ElseIf txtName.text <> "" AND txtKatakana.text = "" Then sSQL = sSQL & "WHERE 名前= ' " & txtName.text & " ' " ElseIf txtName.text = "" AND txtKatakana.text <> "" Then sSQL = sSQL & " WHERE カタカナ= ' " & txtKatakana.text & " ' " 何か他に良い方法がありましたら、 教えていただけないでしょうか? よろしくお願いいたします。

  • VBでSQLを使い検索をしたいのですが。

    VBでSQLを使い検索をしたいのですが、SELECT文の使い方が分かりません。 下記の記述で、番号、氏名、電話番号をそれぞれのTEXTBOX1,TEXTBOX2,TEXTBOX3の ように各容器にいれたいのでが分かりません。 文をその文増やせばいいのでしょうか、SELECT文1行で複数の結果を受け取る方法を教えて下さい。 宜しくお願い致します。 Dim Adapter As New OleDbDataAdapter(SQLCm) Dim Table As New DataTable Dim name As String Dim selcomd As String Dim Value As String name = TextBox11.Text selcomd = "SELECT 番号,氏名,電話番号  FROM meishi WHERE 氏名 like '" & name & "' " SQLCm.CommandText = selcomd

  • SQL SERVER の Where条件

    初めて質問させて頂きます。 VB内でSQL文を作成し、それをSqlServerに送り実行させているのですが、 VB内でSQL文を作成する時に、Whereの条件を入れたり入れなかったりします。 その時、都度、WhereをつけるのかAndをつけるのか判断してプログラムを書くのが億劫なので Dim SqlString as string SqlString = "SELECT * FROM テーブルA WHERE 0 = 0" IF txtA.text <> "" then SqlString = SqlString & " AND 項目A = " & txtA.text END IF IF txtB.text <> "" then SqlString = SqlString & " AND 項目B = " & txtB.text END IF こういうズボラをしてるのですが、これってSqlの実行スピードに影響したりしますか? 思うようにインデックス使ってくれなかったりしますか? ご存知の方がご教授下さい。 よろしくお願いします。

  • VBでSQL

    SQLでテーブル1に該当レコードがなければインサート あればアップデートをする処理をしたいのです IF ??? THEN UPDATE テーブル1 SET SELECT * FROM テーブル2 WHERE 条件 ELSE INSERT INTO テーブル1(SELECT * FROM テーブル2) END IF ???はプライマリキーで判定をしようと考えています こんな感じでやろうとしたところ うまくいきませんでした VB上で実行しよううとしているからなのでしょうか? ADOでSQLサーバに接続しています 条件分岐もどういう条件(VBでの書き方)がわからないです。 よろしくお願いします。

  • like文の書き方を教えてください。

    テキストボックスを作成して入力した値がデータベースに 格納されている場合表示されるSQL文を書いていますが syntaxエラーになってしまい原因がわかりません。 String name = request.getParameter("name"); //入力された名前 String sql = new String(); <%-- SQL文 --%> sql += " select * from data "; sql += " where name "; sql += " like" + "('%" + s_name + "%')"; sql += " ) "; <input type="text" name="name" value=""> //textBox エラー表示 8番目: SQL = select * from data where name like('%i%') ) 9番目: ResultSetに格納失敗 : java.sql.SQLException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1  となってしまいます。 コマンドプロンプト上で select * from data where name like('%itou%'); この場合はちゃんと表示されます。 お分かりになる方よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 困っています。助けてください。(1)

    会社のシステム開発で思うように進まず困っています。 初心者なので丁寧な解説をいただけると助かります。 (1)コンボボックスの作成 ゴール:テキストボックスに入れたキーワードをあいまい検索で コンボボックスで値を絞りだし繰り返し検索したい。 textbox:「a」入力 検索ボタンclick cmbbox:「a」から始まるタイトルをすべて絞り出す       テキストボックスに入れたキーワードをあいまい検索で コンボボックスで値を絞りだすまでできていますが 元の状態に戻して別のキーワードで検索ができません。 絞り込みが解除されないでいるのです。 ※しかも、修正を、やっているうちにデータ(レコード)が出てこなくなったりしました。(最適化やロールバックが必要みたいでしょうか?) コンボボックスの値集合:select T_taitoru.name from T_taitoru where T_taitoru.name like'*"& [form]![kensaku]![textbox]&"*'; コンボボックスの値集合タイプ:テーブル/クエリ private sub textbox_click() if me!textbox="" then me!cmbbox.rowsourcetype="table/qruery" me!cmbbox.rowsource="select T_taitoru.name from T_taitoru where T_taitoru.name like'*"& [form]![kensaku]![textbox]&"*';" end if end sub 繰り返し検索したい状態にしたいのですが何が間違っているのかよく分かりません。 詳しい方教えてください。 検索ボタンのコードはcmbboxmにitemselectを使っています。 ユーザビリティの観点からコンボボックスのdrop downをボタンでするほうが操作上分かりやすいためにしています。 解決方法やコードなどをいただけると大変助かります。 requeryをしてみましたがうまくいきませんでした。 詳しい方、何卒よろしくお願いいたします。

  • VBAの計算について教えてください。

    お世話になります。 VBA超初心者です。 教えて頂けると助かります。 ユーザーフォームにテキストボックス1、2、3を作成し、それらを計算させて テキストボックス4に表示をさせたいと考えています。 テキストボックスに入力するパターンは以下の2種類です。 (1)すべてのテキストボックスに数値が入る (2)テキストボックス3のみに数値が入る 行いたい計算は、“(テキストボックス1 × テキストボックス2) + テキストボックス3”です。 曲りなりに作成してみましたが、テキストボックス3の数値を変えた時や削除した時などに、 テキストボックス4に入っている数値が残っていたりと、思うようにできません。 作成したものを掲載しておきます。 何卒よろしくお願いします。 テキストボックス1を変更したとき 1、3に数値が入っていれば、以下の計算を。 それ以外は“0”をテキストボックス4へ Private Sub TextBox1_Change() If TextBox1.Value = True And TextBox3.Value = True Then TextBox4 = Val(TextBox1.Text) * Val(TextBox2.Text) + Val(TextBox3.Text) Else TextBox4 = 0 End If End Sub テキストボックス2を変更したとき 2、3に数値が入っていれば、以下の計算を。 それ以外は“0”をテキストボックス4へ Private Sub TextBox2_Change() If TextBox2.Value = True And TextBox3.Value = True Then TextBox4 = Val(TextBox1.Text) * Val(TextBox2.Text) + Val(TextBox3.Text) Else TextBox4 = 0 End If End Sub テキストボックス3を変更したとき 1、2、3に数値が入っていれば、以下の計算を。 1か2に数値がなく、3に数値があれば、3の数値をテキストボックス4へ。 それ以外は“0”をテキストボックス4へ Private Sub TextBox3_Change() If TextBox1.Value = True And TextBox2.Value = True And TextBox3.Value = True Then TextBox4 = Val(TextBox1.Text) * Val(TextBox2.Text) + Val(TextBox3.Text) ElseIf TextBox1.Value = False or TextBox2.Value = False And TextBox3.Value = True Then TextBox4 = Val(TextBox3.Text) Else texbox24 = 0 End If End SubEnd Sub

専門家に質問してみよう