Querydef执行返回运行时错误

时间:2019-06-13 15:47:24

标签: vba access-vba

我正在创建一个querydef,从另一个查询中获取所有内容,应用参数并将其导出到excel。直到昨天,这开始几个月都可以正常工作,直到它开始返回运行时错误3021-没有当前记录。

该错误发生在qdf.execute上。

我有另一个数据库,它的代码基本相同,完全一样。

我尝试手动将sql字符串放入新查询中,这也可以正常工作。


    Dim Dstring As Date

    Dstring = asofdate

    Set qdf = CurrentDb.CreateQueryDef("")

    qdf.SQL = "SELECT * INTO WIP_Report FROM Qry_WIP_Percentage"
    qdf.Parameters("AsofDate") = Dstring
    qdf.Execute

查询中大约有900条记录,并且正在应用该参数。

这是查询中的SQL-

SELECT Left([Qry_WIP].[rollup],5) AS Parent, Qry_WIP.rollup AS [Shared Parent], " " AS [Previous Wip], Qry_WIP.WIP AS [Current WIP], Qry_WIP.[PO Price Summed] AS [PO Value], "" AS [Anticipated PO], " " AS [Previous Percent Complete], Qry_Percentage.Percentage AS [Current Percent Complete], Qry_WIP.[prod code], Qry_WIP.[cust-id], " " AS [Customer / Project], " " AS Notes, " " AS [Previous Amt to Recognize], " " AS [Previous Status], "" AS [Current Amt to Recognize], Qry_WIP.status AS [Current Status], Qry_WIP.[enter date]
FROM Qry_WIP LEFT JOIN Qry_Percentage ON Qry_WIP.rollup = Qry_Percentage.rollup
GROUP BY Left([Qry_WIP].[rollup],5), Qry_WIP.rollup, Qry_WIP.WIP, Qry_WIP.[PO Price Summed], Qry_Percentage.Percentage, Qry_WIP.[prod code], Qry_WIP.[cust-id], Qry_WIP.status, Qry_WIP.[enter date]

不知道这里发生了什么,因为前一天工作得很好。

我看到有很多关于没有当前记录的问题,但是这些问题似乎都是针对记录集而不是querydef。

2 个答案:

答案 0 :(得分:0)

首先,仔细检查查询中的参数是否明确声明为 DateTime

第二,转换为日期值:

Dstring = DateValue(asofdate)

修改

尝试将参数向前移动:

qdf.SQL = "PARAMETERS Asofdate DateTime; SELECT * INTO WIP_Report FROM Qry_WIP_Percentage"
qdf.Parameters("AsofDate").Value = asofdate

答案 1 :(得分:0)

我不太满意。

大约6个月前,我进行了服务器端备份,但出现了同样的错误。我试图创建一个新数据库并导入所有仍然产生相同错误的内容。我试图从头开始创建东西,但是它仍然出现错误。

唯一有效的方法是进入文件属性并还原以前的版本。为什么不行,我不知道,因为我使用的还原点比我使用的服务器备份要新,并且服务器,还原的文件和当前文件之间没有任何更改。

我现在有一个正常工作的数据库,尽管我什至无法猜测发生了什么。