【发布时间】:2017-06-26 07:13:15
【问题描述】:
我发现 another answer on here 解决了这个问题,但它对我没有帮助。我检查了我试图引用的查询,我没有发现任何字段有问题。我还尝试了如何声明和设置对象和东西,但也没有用。
Dim dbsCurrent As DAO.Database
Dim rst As DAO.Recordset
Set dbsCurrent = CurrentDb
Set qdf = CurrentDb.QueryDefs("qry_FilmZip")
Set rst = qdf.OpenRecordset 'The error points to this line
rad_full = rst!radius_full
MsgBox ("rad_full:" + rad_full)
更新:我尝试为 .OpenRecordSet 方法提供查询的名称,如下所示:Set rst = qdf.OpenRecordset("qry_FilmZip")
...但现在它给了我一个新错误:Run-time error 3421: Data type conversion error。有谁知道发生了什么?错误指向同一行。
我发现了如何解决第二个错误。原来我不得不这样做
For Each prm In qdf.Parameters
prm.Value = Eval(prm.Name)
Next prm
...但我不明白这是在做什么。有人可以启发我吗?
SQL:
SELECT
tbl_FilmZipInfo.ID,
tbl_FilmZipInfo.item,
tbl_FilmZipInfo.qty_per_unit,
tbl_FilmZipInfo.unit_of_measure,
tbl_FilmZipInfo.radius_core,
tbl_FilmZipInfo.radius_full,
tbl_FilmZipInfo.Lf_value_for_zipper,
tbl_FilmZipInfo.S_value_for_zipper,
tbl_FilmZipInfo.film_or_zip,
tbl_FilmZipInfo.Comments,
tbl_FilmZipInfo.physical_description
FROM
tbl_FilmZipInfo
WHERE
(((tbl_FilmZipInfo.item)=[Forms]![frm_FilmZip]![Text314]));
【问题讨论】:
-
@Tom 指出的是
Set rst = qdf.OpenRecordset()。 -
'参数太少'错误指出查询期望它没有收到的参数。我建议您发布 SQL,这就是预期参数的位置...
-
@marlan 添加了 SQL
-
假设
tbl_FilmZipInfo中的所有字段都确实存在并且拼写正确,请确保已加载frm_FilmZip,并且该字段Text314拼写正确并且具有值。
标签: vba ms-access parameters ms-access-2016