gpt4 book ai didi

sql - OpenRecordset 代码中的参数太少

转载 作者:行者123 更新时间:2023-12-04 04:33:01 25 4
gpt4 key购买 nike

我有两组代码,它们是相同的,我只是将变量更改为另一组存在的变量,现在使用我更改的那些代码,我收到一条错误消息:“运行时错误‘3061’:参数太少。预期为 6。”

这是更改后的代码:

  Dim rec As Recordset
Dim db As Database
Dim X As Variant
Set db = CurrentDb
Set rec = db.OpenRecordset("UnitMoreInfoQ")
Const msgTitle As String = "Open Explorer"
Const cExplorerPath As String = "C:\WINDOWS\EXPLORER.EXE"
Const cExplorerSwitches As String = " /n,/e"
cFilePath = rec("ProjFilePath")

它突出显示了这一行:
Set rec = db.OpenRecordset("UnitMoreInfoQ")

这是第一个代码:
Dim rec As Recordset
Dim db As Database
Dim X As Variant
Set db = CurrentDb
Set rec = db.OpenRecordset("ProjectMoreInfoQ")
Const msgTitle As String = "Open Explorer"
Const cExplorerPath As String = "C:\WINDOWS\EXPLORER.EXE"
Const cExplorerSwitches As String = " /n,/e"
cFilePath = rec("ProjFilePath")

如您所见,该行具有相同数量的参数:
Set rec = db.OpenRecordset("ProjectMoreInfoQ")

由于这个原因,这让我很困惑一段时间。我该如何解决这个错误?

最佳答案

我在测试你的数据库时没有得到和你一样的结果,我仍然不明白其中的区别。但是,尽管我很困惑,但也许我们仍然可以为您提供一些有用的东西。

该查询包含 6 个对表单控件的引用,例如 [Forms]![WorkOrderDatabaseF]![Text71] .尽管当您在 db.OpenRecordset("UnitMoreInfoQ") 处遇到“参数太少”错误时,您确定该表单已在表单 View 中打开。 , Access 不会检索值并希望您提供它们。

因此修改代码以提供这些参数值。

Dim rec As DAO.Recordset
Dim db As DAO.database
Dim prm As DAO.Parameter
Dim qdf As DAO.QueryDef
Dim X As Variant
Set db = CurrentDb
'Set rec = db.OpenRecordset("UnitMoreInfoQ")
Set qdf = db.QueryDefs("UnitMoreInfoQ")
For Each prm In qdf.Parameters
prm.value = Eval(prm.Name)
Next
Set rec = qdf.OpenRecordset(dbOpenDynaset) ' adjust options as needed

我将把这个原始答案的其余部分留在下面,以防它对试图解决类似问题的其他人有用。但我最好的猜测是,此代码更改将为您提供所需的内容,如果该表单在表单 View 中打开,它应该可以工作。

在立即窗口中运行此语句。 (您可以使用 Ctrl+g 打开立即窗口。)

DoCmd.OpenQuery "UnitMoreInfoQ"

当 Access 打开查询时,它会要求您为其标识的第一个参数提供一个值。该参数的名称包含在参数输入对话框中。它将要求每个参数的值。

将这些“参数名称”与查询的 SQL 进行比较。通常有些东西拼写错误。

使用您的数据库副本, DoCmd.OpenQuery("UnitMoreInfoQ")问我 6 个参数。

这是我在立即窗口中看到的内容:

? CurrentDb.QueryDefs("UnitMoreInfoQ").Parameters.Count
6

for each prm in CurrentDb.QueryDefs("UnitMoreInfoQ").Parameters : _
? prm.name : next
[Forms]![WorkOrderDatabaseF]![Text71]
[Forms]![WorkOrderDatabaseF]![ClientNameTxt]
[Forms]![WorkOrderDatabaseF]![WorkOrderNumberTxt]
[Forms]![WorkOrderDatabaseF]![TrakwareNumberTxt]
[Forms]![WorkOrderDatabaseF]![WorkOrderCompleteChkBx]
[Forms]![WorkOrderDatabaseF]![WorkOrderDueDateTxt]

运行以下代码时,请确保在表单 View 中打开了一个名为 WorkOrderDatabaseF 的表单:

Set rec = db.OpenRecordset("UnitMoreInfoQ")

关于sql - OpenRecordset 代码中的参数太少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com