访问 - 输入参数值错误

Posted

技术标签:

【中文标题】访问 - 输入参数值错误【英文标题】:Access - Enter Parameter Value Error 【发布时间】:2016-03-01 23:35:54 【问题描述】:

我有一个表格,其中包含一年中的所有星期(使用客户的编号,因此第 1 周是六月),以及它们开始的日期。有一个表格,他们可以选择他们想要查看的星期,所以我使用了一个 ComboBox 来获取他们在 WeeklyHours 表中输入数据的所有星期数,使用 SELECT Format(WeeklyHours.Week,"0") AS Expr1 FROM WeeklyHours GROUP BY WeeklyHours.Week;

然后,这个组合框应该用作我构建的几个查询的星期过滤器,使用组合框值作为匹配条件。问题是当表单关闭时,这些查询无法运行,并给我组合框值的输入参数值错误。

为了解决这个问题,我尝试创建一个名为 SelectedWeek 的新表,其中包含一个名为 Week_Number 的条目。然后有一些更新后代码将选定的组合框值保存到 SelectedWeek 的 Week_Number 字段。

然后我将查询更改为指向 [SelectedWeek]![Week_Number],这样查询将始终使用最近选择的一周。 但是,我不断收到 SelectedWeek!Week_Number 的 Enter Parameter Value 错误,我不知道为什么。 任何帮助将不胜感激。

谢谢, 乔尔

【问题讨论】:

【参考方案1】:

提示用户输入参数值的原因(顺便说一句,这不是错误)在这两种情况下,Access SQL 引擎都看不到任何一个引用的值。在第一种情况下,表单已关闭,在第二种情况下,列未与查找正确对齐。

在第一种情况下,只需保持表单打开,用户在运行其他查询时从组合框中选择值。否则,表单上的所有内容都无法调用,因为它是从内存中关闭的:

SELECT * FROM TableName WHERE weeknumber = Forms!FormName!WeekNumber

在第二种情况下,使用域函数系列的 DLookUp() 部分。

SELECT * FROM TableName WHERE weeknumber = DLookUp("Week_Number", "SelectedWeek")

实际上,域函数可以概括为 SQL 中的子查询:

SELECT * FROM TableName 
WHERE weeknumber IN (SELECT Week_Number FROM SelectedWeek)

更重要的是,您可以运行两个表的交叉连接查询(在FROM 子句中用逗号分隔的表)并避免查找。下面假设 SelectedWeek 是一个单行单列的表,但在 WHERE 条件下,会处理长度,您可以在任一表中显式声明列:

SELECT * 
FROM TableName, SelectedWeek
WHERE TableName.weeknumber = SelectedWeek.Week_Number

【讨论】:

做到了。非常感谢你。我非常精通 Excel 中的 VBA,但我刚刚尝试学习 SQL。您的解释非常有帮助且内容丰富,我非常感谢。 您能解释一下关于将列与查找对齐的更多信息吗?我不明白这意味着什么。 很好听。如果它解决了您的问题,请接受答案,这也确认了解决方案。解释看我在帖子中添加的链接,DLookUp()的简要教程。基本上,您之前的参考 SelectedWeek!Week_Number 仅在 SelectedWeek 是查询中的联接表时才有效。既然不是,你必须做一个外部表查找。

以上是关于访问 - 输入参数值错误的主要内容,如果未能解决你的问题,请参考以下文章

访问2010为啥提示输入参数值

什么可能导致 SQL Server JDBC 错误“未为参数号 0 设置值”以访问输出参数?

函数输入参数类型为枚举时,则限定函数参数的接收范围,非枚举值输入则错误

为啥使用 INSERT INTO VALUES 会出现“输入参数值”?

亚马逊的错误响应。错误:“参数 <?x ml 版本未通过验证检查:输入值的多余空格:

Excel返回#NUM!错误值原因及解决方法