- ベストアンサー
VBとDB連携について
- VB.NETとDB(オラクル)を使って開発をしています。
- textbox1~textbox3の内容が入っている項目だけWHERE句で抽出させたいです。
- テキストボックスが10個や100個になった場合、効率的な方法はありますか?
- みんなの回答 (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- まぁ、かなり原始的なやりかただとは思うので、もっと楽だとか、奇抜な方法だとかが他の回答者さんから出る事を祈りつつ、ひっそり見ていたいと思います。