You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBScript读取数据库值显示到MsgBox报800A0401错误如何解决?

错误原因排查
  • 直接触发800A0401编译报错的根源:你混淆了VB.NET和VBScript的语法,VBScript所有变量都是Variant类型,不支持As 类型的强类型声明写法,第3行Dim dtAB As DataTable里的As DataTable是VB.NET语法,VBScript解析到这里识别不了,就抛出“预期语句结束”的错误。
  • 其余隐含的语法/逻辑错误:
    1. VBScript没有Using关键字,这个是.NET体系用来自动释放资源的语法,VBScript中需要手动创建、销毁数据库相关对象
    2. VBScript操作SQL Server不能直接调用SqlConnection、SqlCommand等.NET类,需要使用系统自带的ADODB组件
    3. VBScript中字符串拼接符&前后必须加空格,你代码里"Enter a Number" &employee_code.Text这种写法会触发语法错误
    4. MsgBox参数使用错误,第二个参数是按钮/图标类型参数,你把SQL语句放在第二个参数的位置逻辑完全错误
修复后的可用代码
Private Sub CheckOriginalData()
    Dim employee_code, dtAB, a, cn, cmd, dr
    ' 赋值员工代码,网页场景可替换为对应前端输入框的取值
    employee_code = InputBox("请输入员工代码")
    If employee_code = "" Then Exit Sub

    ' 初始化ADODB连接
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=SQLOLEDB.1;Data Source=testing;Initial Catalog=adventure;User ID=UAT_01;Password=Basket@123"

    ' 初始化命令对象执行参数化查询
    Set cmd = CreateObject("ADODB.Command")
    cmd.ActiveConnection = cn
    cmd.CommandText = "select employee_name from employee_details where leadid= ?"
    cmd.Parameters.Append cmd.CreateParameter("@employee_code", 200, 1, 50, employee_code) ' 200对应VarChar类型,1是输入参数,50可替换为leadid字段实际长度

    ' 执行查询获取结果
    Set dr = cmd.Execute
    If Not dr.EOF Then
        ' 查到结果展示信息,网页场景可替换为给前端元素赋值的逻辑
        MsgBox "查询成功,员工姓名:" & dr("employee_name") & Chr(13) & "员工代码:" & employee_code
    Else
        MsgBox "Leads not found"
    End If

    ' 手动释放资源
    dr.Close
    Set dr = Nothing
    Set cmd = Nothing
    cn.Close
    Set cn = Nothing
End Sub

内容的提问来源于stack exchange,提问作者Atul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:39:03