在我的MDIParent Me_Load中,我有一个SQL查询,它根据Windows ID返回用户信息。这很好用,但我真的很想将这个逻辑移到一个模块中,并将db中的每个值分配给一个全局变量,以便在别处使用。我希望能够以父MDI的任何子形式访问contact_id。我已经习惯了PHP,我只是将它分配给我可以在任何地方引用的会话变量。
这是我当前的SQL代码
Dim sql_query As String
Dim errorMessages As New StringBuilder()
Dim cnn = ConfigurationManager.ConnectionStrings("sql_connection_string").ConnectionString
Dim adapter As SqlDataAdapter
Dim ds As New DataTable()
Dim User_ID As String
Dim User_First_Name As String
Dim User_Last_Name As String
Dim User_Contact_CD As String
Dim User_Login As String
sql_query = "SELECT Contact_ID, First_Name_CH, Last_Name_CH, Contact_CD, Login_VC FROM [Worktool].[dbo].[vwEmployees_T] WHERE Login_VC = '" & username & "'"
Using connection As New SqlConnection(cnn)
Try
If connection.State = ConnectionState.Closed Then connection.Open()
adapter = New SqlDataAdapter(sql_query, connection)
adapter.Fill(ds)
User_ID = ds.Rows(0)("Contact_ID").ToString()
User_First_Name = ds.Rows(0)("First_Name_CH").ToString()
User_Last_Name = ds.Rows(0)("Last_Name_CH").ToString()
User_Contact_CD = ds.Rows(0)("Contact_CD").ToString()
User_Login = ds.Rows(0)("Login_VC").ToString()
connection.Close()
Catch ex As SqlException
MsgBox("Sorry, there was an issue with the connection. Please try again ! ")
Dim i As Integer
For i = 0 To ex.Errors.Count - 1
errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
& "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
& "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
& "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
& "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
Next i
MsgBox(errorMessages.ToString())
End Try
End Using
'Assign messages
main_window_welcome.Text = "Welcome back, " & Replace(User_First_Name, " ", "") & " " & Replace(User_Last_Name, " ", "")
变量用户名是
Public username = Environ$("Username")
答案 0 :(得分:3)
您已经在类中声明了4个变量,并且它们是该类的私有变量。此时您的代码可以运行。 Hilight那4个变量声明和剪切它们。您的代码显示错误,因为您刚刚删除了声明。
将模块添加到您的解决方案中(将其命名为您想要的名称) 将声明粘贴到模块体中。
将Dim更改为Public。
你的错误消失了。
您的变量现已公开,并可在整个解决方案中使用。