投稿者 ど素人  (社会人) 投稿日時 2018/5/24 17:10:54
魔界の仮面弁士さま

>なのでこの場合、「If Password.Text = Pass Then」の判定処理を末尾に置くのではなく、
>それを If rd.Read() Then のブロック内に移動させてしまえば良いと思います。

修正しました
    
If rd.Read() Then
        Pass = rd.GetString("Password")
         Flag = rd.GetString("権限")

         If Password.Text = Pass Then
                 MessageBox.Show("ユーザー名とパスワードを受け付けました。")
                 Me.Close()

         Else
                 MessageBox.Show("認証できません。")
                 Id.Clear()
                 Password.Clear()
                 Username.Focus()
        End If

        Else
                '該当者がいない場合の処理
        End If

>ついでに、「該当する Id が無い」状態と、「Id は正しいがパスワードが間違っている」状態を区別するか同一視するかも、アプリケーション設計時点で決めておきましょう。

そこまで考えが回っていませんでした。勉強になります。

>何故、Integer 型の変数に、String 型の値を代入しようとしているのでしょうか。
>そもそも、データベース側の [権限]フィールドのデータ型は何になっていて、
>そこには何という値が入っているのでしょうか。

すみませんいじっていた際ミスしたものでした。
Dim Flag As String = "0"
Flag = rd.GetString("権限")
となっています。

投稿したものだと確かにおかしいのはわかるんですが、その前にPass = rd.GetString("Password")の部分で前のエラーが出ているのです。

Passwaod、権限どちらもvarchar(50)です。
値は現状Password{a、b}、権限{0、1}です。