Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
あいまい検索
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30330#CommentId83267
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2018/5/24 14:37:20
> 文字列として扱うかという認識なのですがあってますでしょうか?
その通りです。ですから当初の
"SELECT [ID], [所在], [種類] FROM [Table] WHERE Item Like N'%"…
という表現だと、ComboBox の内容とは無関係に、常に「Item」という名前のフィールドとして処理されるわけですね。
> " & ○ & "の"&はどうゆう役割なのでしょうか?
ご存知のように、「&」は文字列連結のための演算子ですし、
「"」は文字列リテラルを囲む記号です。
Dim s1 As String = "abc"
Dim s2 As String = "xyz"
Dim s3 As String = s1 & s2
上記のうち、変数 s1 、s2 の部分を置き換えると
Dim s3 As String = "abc" & "xyz"
になりますよね。この処理結果は
Dim s3 As String = "abcxyz"
となるわけですが、それと全く同じことです。
先の SQL で言うと、たとえば、
Dim fieldName As String = "Id"
Dim searchWord As String = "0"
Dim sql As String = "WHERE [" & fieldName & "] LIKE N'%" & searchWord & "%' "
というコードがあるとすれば、
Dim sql As String = "WHERE [" & "Id" & "] LIKE N'%" & "0" & "%' "
という形に展開されるので、結果として
Dim sql As String = "WHERE [Id] LIKE N'%0%' "
という文字列が得られることになるわけです。
なお、VB2015 以降の場合は、& 演算子で繋いでいくよりも、
Dim fieldName As String = "Id"
Dim searchWord As String = "0"
Dim sql As String = $"WHERE [{fieldName}] LIKE N'%{searchWord}%' "
の構文を使った方が読みやすいかもしれません。
> という形でも動くのですがどうなんでしょうか?
間違いではないのですが、SelectedItem プロパティの戻り値は Object 型なので、
そのコードだと「Option Strict On」でコンパイルした時にエラーとなりますね。
また、ComboBox の DisplayMember プロパティを利用している場合には、
GetItemText メソッドを通じて取得するようにしないと、正しい文字列表現になりません。
それと、ComboBox でまだ何も選択されていない場合には、
ComBox1.SelectedIndex は -1 を返し、
ComBox1.SelectedItem は Nothing を返すことにも注意しましょう。