【发布时间】:2013-12-24 01:10:01
【问题描述】:
鱼出水寻找方向/建议不一定是代码(尽管这会有所帮助)。我是一名以设计机器为生的 ME,我正在尝试自动化用于工程零件编号的现有 2010 Access 数据库。我希望用户选择项目编号并让下一个可用的零件编号自动出现在零件编号字段中。
我尝试使用来自各种来源的 ADO 和 DAO 示例将基于表单控件值的参数传递给选择查询,但未成功。我最近的尝试如下:
Private Sub ctlProject_AfterUpdate()
Dim dblProject As Double
dblProject = Me.ctlProject.Value
MsgBox "The curret project number is " & dblProject, vbOKOnly, "Project Number"
Const cstrQueryName As String = "qryDetails"
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset
Set dbs = CurrentDb()
Set qdf = dbs.QueryDefs(cstrQueryName)
qdf.Parameters("Project") = dblProject
' Open recordset on the query
Set rst = qdf.OpenRecordset()
rst.MoveLast
Debug.Print ("Project ID: " & rst!Project)
rst.Close
qdf.Close
dbs.Close
End Sub
代码产生一个“运行时错误'3265'。在这个集合中找不到项目”源于这行代码:
qdf.Parameters("Project") = dblProject
原始源代码here
我在使用 ADO Command 对象时也遇到过类似的失败。对于参考/资源的任何帮助或建议,我将不胜感激。我一直在使用 WROX 的“Access 2003 vba 程序员手册”和“Access 2010:缺失的手册”作为硬拷贝参考。
这是来自 qryDetails 的 SQL 视图的代码:
SELECT tblDetails.Project, tblDetails.Number, tblDetails.Title, tblDetails.Initials,
tblDetails.IssuedOn
FROM tblDetails
WHERE (((tblDetails.Project)=[Project]));
【问题讨论】:
-
确实是个愚蠢的问题,但根据您的错误判断,您确定查询
qryDetails需要一个名为“Project”的参数吗? -
请告诉我们来自
qryDetails的SQL。 -
@Lankymart 简短的回答是我想是的。为了响应@HansUp 请求,我从
qryDetails添加了SQL 视图。