msk*_*msk 2 vbscript ms-access asp-classic
我正在尝试对 MS Access 数据库运行以下查询(从 .asp 页面):
SELECT firstname, lastname, emp_id FROM employees ORDER BY firstname
Run Code Online (Sandbox Code Playgroud)
但是,我收到一条错误消息
没有为一个或多个必需参数给出值。
现在,如果我排除“emp_id”(主键)字段,查询运行正常。我已确保该字段存在并且查询中没有拼写错误。
如果我通过 MS Access GUI 运行查询,则会弹出一个窗口,要求我为 emp_id 字段输入“参数值”。这可能就是它不起作用的原因,以及为什么会发生这种情况?
从数据库获取员工:
Function GetEmployees()
Dim employeesRS, sqlGetEmployees, employeesList, e
Set employeesList = CreateObject("System.Collections.ArrayList")
sqlGetEmployees = "SELECT firstname, lastname, emp_id FROM employees ORDER BY firstname"
Set employeesRS = db.connTb.execute(sqlGetEmployees) 'Custom class to simplify db-querying
While Not employeesRS.EOF
Set e = new Employee
e.Firstname = employeesRS("firstname")
e.Lastname = employeesRS("lastname")
e.Id = employeesRS("emp_id")
employeesList.Add(e)
employeesRS.MoveNext
Wend
employeesRS.Close
Set GetEmployees = employeesList
End Function
Run Code Online (Sandbox Code Playgroud)
表结构的屏幕截图:(正如您可能注意到的,我在帖子中翻译了表和代码,以使其更具可读性。不过,代码/表字段之间的关系是相同的。)

解决了:
MS Access 中的查询结果视图显示字段名称为“emp_id”,但实际名称为“employee_id”。
使用数据库的程序曾经是一个 Access-forms 应用程序,因此查询结果视图中的列名称与实际名称不同(出于某种原因,我不知道为什么这听起来是个好主意)