VBScript读取数据库值显示到MsgBox报800A0401错误如何解决?
错误原因排查
- 直接触发800A0401编译报错的根源:你混淆了VB.NET和VBScript的语法,VBScript所有变量都是Variant类型,不支持
As 类型的强类型声明写法,第3行Dim dtAB As DataTable里的As DataTable是VB.NET语法,VBScript解析到这里识别不了,就抛出“预期语句结束”的错误。 - 其余隐含的语法/逻辑错误:
- VBScript没有
Using关键字,这个是.NET体系用来自动释放资源的语法,VBScript中需要手动创建、销毁数据库相关对象 - VBScript操作SQL Server不能直接调用
SqlConnection、SqlCommand等.NET类,需要使用系统自带的ADODB组件 - VBScript中字符串拼接符
&前后必须加空格,你代码里"Enter a Number" &employee_code.Text这种写法会触发语法错误 - MsgBox参数使用错误,第二个参数是按钮/图标类型参数,你把SQL语句放在第二个参数的位置逻辑完全错误
- VBScript没有
修复后的可用代码
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
相关产品推荐
相关产品推荐

