首页 > 解决方案 > 如何在消息框中显示数据库值

问题描述

我是 vb 脚本中的新手我试图从表中检索值并根据输入员工代码显示到前端相应的员工姓名应该显示我在 vb 脚本中编写代码但它不会运行给出错误,我无法找到问题所在

行:3 字符:18 错误:预期语句结束代码:800A0401 来源:Microsoft VBScript 编译错误

Private Sub CheckOriginalData()
        Dim employee_code 
        Dim dtAB As DataTable
        dim a
        Using cn As New SqlConnection( "Provider=SQLOLEDB.1;Data Source=testing;Initial Catalog=adventure;user id ='UAT_01';password='Basket@123'")
            Dim cmdAB As String = "select employee_name from employee_details where leadid= @employee_code;"
            Using cmd As New SqlCommand(cmdAB, cn)
                cmd.Parameters.Add("@employee_code", SqlDbType.VarChar).Value = employee_code.Text
                cn.Open()
                Using dr As SqlDataReader = cmd.ExecuteReader
                    dtAB.Load(dr)
                    a = InputBox("Enter a Number" &employee_code.Text)
         msgbox a
                         MsgBox("your lead id is: " & employee_code.Text & " and status is ", cmdAB & "")
                End Using
            End Using
        End Using
        If (dtAB.Rows.Count > 0) Then
            employee_code.Focus()
        Else          
          
           MsgBox("Leads not found")
            employee_code.Focus()
        End If
    End Sub

标签: .netsql-servervb.netado.net

解决方案


通过这条线

Dim employee_code

您已经声明了一个类型为 的局部变量Object。然后您尝试将Text对象的属性分配给Valuea Parameter。安Object没有Text财产。我假设TextBox您的表单上有一个名为employee_code.

我想知道您的连接字符串,包括Provider=SQLOLEDB.1;我以前在我的 SQL Server 连接中从未见过的,但我过着隐蔽的生活,可能没问题。提供者是 ADO.net 代码的提供者。它确实出现在 Access 连接字符串中。

您没有任何返回DataTable. 要调用LoadaDataTable你需要一个类的实例。这是通过使用New调用构造函数的关键字来完成的DataTable。但我们最终没有使用DataTable.

您可以将命令添加到同Using一块中,并在Using.

我看不到这些行的目的。您已经为参数分配了一个值。

a = InputBox("Enter a Number" & employee_code.Text)
 MsgBox a

连接打开时不要显示消息框。用户可能已经去吃午饭了,但没有人在那里单击“确定”。您的连接在微风中飘扬。

由于您只检索单个数据,即员工姓名,因此您可以使用.ExecuteScalar命令的方法。返回结果集中第一行的第一列。您需要添加.ToString,因为ExecuteScalar返回一个Object.

cmdAB由于某些未知原因,您在消息框中显示您的选择字符串 , 。

MsgBox("your lead id is: " & employee_code.Text & " and status is ", cmdAB & "")

您似乎还缺少一个&符号,并在末尾有双引号。您尚未检索到任何有关状态的信息,因此无法显示此数据。这是使用由前导表示的内插字符串的一个很好的理由${ }然后,您可以直接在您希望它们出现的行中插入用大括号括起来的变量。

最后,我将您的用户界面代码与数据库代码分开。这样你的函数就可以被任何前端使用。

Imports System.Data.SqlClient

Private Function GetEmployeeName(EmployeeCode As String) As String
    Dim EmployeeName As String
    Dim cmdAB As String = "select employee_name from employee_details where leadid= @employee_code;"
    Using cn As New SqlConnection("Provider=SQLOLEDB.1;Data Source=testing;Initial Catalog=adventure;user id ='UAT_01';password='Basket@123'"),
            cmd As New SqlCommand(cmdAB, cn)
        cmd.Parameters.Add("@employee_code", SqlDbType.VarChar).Value = EmployeeCode
        cn.Open()
        EmployeeName = cmd.ExecuteScalar.ToString
    End Using
    Return EmployeeName
End Function

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
    Dim EmployeeName = GetEmployeeName(employee_code.Text)
    MessageBox.Show($"your lead id is: {employee_code.Text} and Name is {EmployeeName}")
End Sub

推荐阅读