投稿者 社会人  (社会人) 投稿日時 2014/6/25 09:48:32

>HiDE-Adaさん
UserInfoを指摘通りに修正すると無事にIDとユーザー名の抽出に成功しました。(一時的にFMBaseにTextBoxを設置し、TextBoxに反映されるようにコードを変えてから実行しました)
本当に有難うございます。

>後は、本題の取得できたユーザ名をどこでTextBox.Textに設定するかですね。 
可能であればウィンドウズのタイトルバー(初期設定で「最小化、最大化、閉じる」ボタンがついてる行)に「ユーザー名が利用中」と書きたいと思っていますが、出来ないのであればFMBaseのLabelで代用し、IDはこの掲示板では話に出ていませんがデータの更新や登録する際に誰か変更したか確認する為SQLServerに保存します。

>ところで、Module1.vbはどうなっていますか?

一か所だけ分からない箇所があり、

▼Moduke1.vb▼
Module Module1
    Public Sub Main()
        Dim Base As New FMBase
        Base.Show()

        Application.EnableVisualStyles()
        Application.SetCompatibleTextRenderingDefault(False)

        Dim account As UserInfo = Nothing

        Using login As New fmlogin()
            If login.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                account = login.LoginAccount
            Else
                Return
            End If
        End Using

        If account IsNot Nothing Then
            Application.Run(New FMBase(※account)) 
        End If

    End Sub
End Module


※がついているaccountに青い波線で「'Public Sub New()'に対する引数が多すぎます」というエラーが発生しています。
「ここはコンストラクタを追加する」と魔界の仮面弁士さんの指示がありますが、何処に追加すれば良いのでしょうか?
修正したコードのみ下に移します。

▼FMLogin▼
Imports System.Data.SqlClient

Public Class fmlogin

    Const ConnectString As String = "Data Source=user;Initial Catalog=データベースシステム;Integrated Security=True"
    Property LoginAccount 'UserInfoのaccount = login.LoginAccuontの為に追加 
    
    Private Sub btnGo_Click(sender As System.Object, e As System.EventArgs) Handles btnGo.Click
        If TextBox1.Text.Length = 0 Or TextBox2.Text.Length = 0 Then
            MessageBox.Show("パスワードとIDを両方記入して下さい""エラー!")
        Else
            If CheckUser(TextBox1.Text.Trim, TextBox2.Text.Trim) Then
                Me.DialogResult = Windows.Forms.DialogResult.OK
                Me.Close()
            Else
                MessageBox.Show("入力した情報が間違っています。再度入力して下さい。""エラー!")
            End If
        End If
    End Sub

    Private Function CheckUser(id As String, pass As StringAs String
        Dim RESULT As String
        Dim SQL As String = "SELECT ユーザー名 FROM ユーザー情報 WHERE ユーザーID='" & Replace(id, "'""''") & "' AND パスワード='" & Replace(pass, "'""''") & "'"

        Using conn As New SqlConnection(ConnectString)
            Dim CMD As New SqlCommand(SQL, conn)
            Try
                conn.Open()
                RESULT = Convert.ToString(CMD.ExecuteScalar())
                UserInfo.UserName = RESULT
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Using
        Return ※RESULT※ IsNot Nothing
    End Function

    Private Sub btnQuit_Click(sender As System.Object, e As System.EventArgs) Handles btnQuit.Click
        Me.Close()
    End Sub

End Class


▼UserInfo▼
Public Class UserInfo
    Public Shared Property ID As String
    Public Shared Property UserName As String
  '「Login.UserInfoのメンバーではありません」エラー対策の為、修正 
End Class


後、プログラムの実行の際に問題が無かったのですが、FMLoginの※で囲まれているRESULTに緑の波線で「変数'RESULT'は、値が割り当てられる前に使用されています。Null参照の例外が実行時に発生する可能性があります。」という警告が出ています。
これに関してはどう対処すべきでしょうか?