0

私はVB.netが初めてです。「Get_Computer_Nameフォーム」を使用すると、ユーザー名とアカウントの種類が別のフォームに投稿されます。Get_Computer_Name は、モジュールに送信されるコンピューター名も取得し、そのモジュールはメイン接続として機能します。今、ログインフォームとコンピュータ名を取得するフォームを分離しようとしましたが、うまくいきませんでした(私もその方法を試してみたいです)。

私の現在の方法の問題は、一度に 1 つのことしか実行できないことです。ユーザー名とアカウントの種類を投稿できず、コンピューター名をモジュールに送信できません。奇妙なことに、回避策があります。投稿のユーザー名とアカウントの種類をコメントアウトすると、コンピューター名がモジュールに送信され、モジュールが機能してデータベースに接続します。ユーザー名とアカウントを他のフォームに投稿するコードをコメントアウトしないことを選択した場合、コンピューター名は接続を処理するモジュールに送信されず、データベースへの接続に失敗します。

このようにするのではなく、他の提案を受け入れます。

ありがとうございました

'Here is my code for "Get_Computer_Name form" 

Imports System.Data.SqlClient

Public Class Get_Computer_Name

    Public Sub Get_Computer_Name_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        cmbcomputername.Text = My.Computer.Name
        connect()
    End Sub

    Private Sub cmbcomputername_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbcomputername.SelectedIndexChanged, cmbcomputername.TextChanged
        cmbcomputername.Text = My.Computer.Name
    End Sub

    Public Sub btnlogin_Click(sender As System.Object, e As System.EventArgs) Handles btnlogin.Click
        datasource = cmbcomputername.Text

        If connection.State = ConnectionState.Closed Then
            connection.Open()
        End If

        Dim reader As SqlDataReader
        Dim sqlstatement As SqlCommand = New SqlCommand
        sqlstatement.Connection = connection

        Try
            sqlstatement.CommandText = "Select account_username, account_password, account_type " &
            "from account_login where account_username='" & txtusername.Text & "' and account_password='" & txtpassword.Text & "'"

            reader = sqlstatement.ExecuteReader()

            If (reader.Read()) Then


                Dim application_form As application_form
                application_form = New application_form
                application_form.Show()
                application_form = Nothing
                Me.Visible = False

                'This is the code that post the username and account type to the other form (application form). If I comment this code out, the system successfully connects to the database

                application_form.lblusername.Text = (reader("account_username").ToString)
                application_form.lblaccount_type.Text = (reader("account_type").ToString)

                sqlstatement.Dispose()
                reader.Close()
                connection.Close()

            Else
                connection.Close()
                MsgBox("Invalid")
            End If
            reader.Close()
        Catch ex As Exception

        End Try
    End Sub
End Class

'This is the code for the module that holds the main connection string

    Public connection As SqlConnection = New SqlConnection
    Public datasource As String
    Public database As String = "bpmi"
    Public sqlmainconnector As String

    Public Sub connect()
        sqlmainconnector = "Data Source=" & datasource & ";Initial Catalog=bpmi;Integrated Security=True"
        connection.ConnectionString = sqlmainconnector

        Try

            If connection.State = ConnectionState.Closed Then
                connection.Open()
            Else
                connection.Close()
            End If

        Catch ex As Exception

        End Try

    End Sub

'And this code is the form where the username and account type will be posted

Imports System.Data.SqlClient

Public Class application_form

    Dim sqlcommand As SqlCommand
    Dim da As SqlDataAdapter
    Dim table As New DataTable
    Dim dategrabberapp As String
    Dim dategrabberben As String
    Dim benidgrabber As String

    Private Sub Form1_Load(sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        connect()

        filldatagrid(updateappdatagrid, updatebendatagrid)
        fillcomboboxstatus(cmbstatus)
        fillcomboboxposition(cmbappworkposition)
        fillcomboboxrelationship(cmbrelation)
        fillcomboboxrelationshipupdate(cmbrelationbenupdate)
        fillcomboboxstatusupdate(cmbappstatusupdate)
        fillcomboboxpositionupdate(cmbappworkposupdate)

'this is where the account type will got to

        If lblaccount_type.Text <> "Administrator" Then

            Me.TabControl1.TabPages(1).Enabled = False
            Me.TabControl1.TabPages(2).Enabled = False

            MsgBox("As a 'Staff', you are not permitted to do any updates")
            updateappdatagrid.Hide()
            updatebendatagrid.Hide()
        End If

    End Sub

End Class
4

0 に答える 0