• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:[VB6] SQLの作成について)

[VB6] SQLの作成について

このQ&Aのポイント
  • VB6でのSQL文字列作成時に、画面のテキストボックスの入力値に応じてWHERE句の内容を変えたいです。
  • 現在のソースでは、入力値の有無によって条件分岐させているため、他に良い方法があるか教えてください。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

これで問題はないのですが、少し手を入れると 次のようになるでしょうか。 Dim 名前 As String Dim カナ As String '万一、アポストロフィが入力された時の用心 名前 = Replace(txtName.Text, "'", "''") カナ = Replace(txtKatakana.Text, "'", "''") '以前の部分は省略 sSQL = ~ If 名前 <> "" Then     sSQL = sSQL & " WHERE 名前='" & 名前 & "'"     If カナ <> "" Then         sSQL = sSQL & " AND カタカナ='" & カナ & "'"     End If Else     If カナ <> "" Then         sSQL = sSQL & " WHERE カタカナ='" & カナ & "'"     End If End If

masy0312
質問者

お礼

ありがとうございます。参考になりました。

その他の回答 (2)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

「*」ワイルドカードや、Like文を有効に使って試してみる。 SELECT * FROM テーブル名 WHERE カラム名 LIKE '[値]' とか SELECT * FROM テーブル名 WHERE カラム名 LIKE '*[値]*' その環境で、 [値]が空のとき(*をセットしてでも)全件、 [値]があればその値に該当するもの、 になるかどうかを確認する。 うまくいけばSQLは1文で、空の判定も要らない。 引き渡すものを変えて、SQLは変えない方向はどうか。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

参考までに挙げてみます。 (1)条件の内容(テキストボックスの中身)のA,Bは文字列 (2)2条件固定として、WHERE を使い、その中間はANDで結ぶ と言う前提で、文字列を結合してなど色々やってみたが、私の力では、余りすっきりならなかった。 例えば一旦先に条件の文字列を結合して、場合により不要なx="やAND Y=を消そうとしたが、判りにくいだけのようだった。 ーー ただしCase文を使うと、少し一瞬の可読性が上がるように思うが、どうだろう。 やはり場合分けを正面から、したほうがすっきりするようだ。 ーーー 私のテスト環境の関係でエクセルVBAでやってみた。条件文字列の出方だけのテストなので、あしからず。 ユーザーフォームにテキストボックスを2つ貼り付け。 コマンドボタン(キャプションは「検索実行」とでも、つけるべきか)を1つ貼り付け そのクリックイベントに Private Sub CommandButton1_Click() test01 End Sub 標準モジュールに (Case文のネスト) Sub test01() A = UserForm1.TextBox1.Text B = UserForm1.TextBox2.Text Select Case A Case Is = "" Select Case B Case "" MsgBox "エラー条件入力もれ" Case Else MsgBox "WHERE Y = " & B End Select Case Else Select Case B Case "" MsgBox "WHERE X= " & A Case Else MsgBox "WHERE X = " & A & " AND Y=" & B End Select End Select End Sub Where以下の文字列だけを論じている。 SQL処理系によって、上記のAyaBの前後にシングルコーテーションや、ダブルコーテーションが必要なものがあると思うので 修正が必要。 SELECT・・FROM ZZZと最後の;は必要だが略している。