投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/24 18:08:11
>> 代入操作前に、MsgBox( "[" & rd.GetString("Password") & "]" ) を実行すると、
>> 画面上には何が表示されますか?
> 表示がされる前に同じエラーがでます

コンパイルエラーではなく、実行時エラーになるのですね。

ということは、先に述べたコンパイルオプションの
「Option Strict On」を指定されていないのではないでしょうか。

SqlDataReader の GetString メソッドは、引数として列名(String)を渡すのではなく、
引数として列番号(Integer)を渡す仕様になっていますので、そこに
"Password" という文字列を渡すわけにはいかない…ということです。


たとえば下記の場合は、Option Strict が On/Off いずれでも同じ動作になると思います。

MsgBox( "[" & rd.GetString(0) & "]" )
MsgBox( "[" & rd.GetString(1) & "]" )
MsgBox( "[" & rd.GetOrdinal("Password") & "]" )
MsgBox( "[" & rd.GetString(rd.GetOrdinal("Password")) & "]" )
MsgBox( "[" & CStr(rd.Item("Password")) & "]" )
MsgBox( "[" & CStr(rd("Password")) & "]" )
MsgBox( "[" & CStr(rd!Password) & "]" )