如何修复运行时错误'3048'“无法再打开任何数据库。”

问题描述 投票:0回答:1

我有一个带有按钮的表单,该表单调用和过滤两个联合查询,它们之间总共有大约40个SELECT查询。然后,它将数据显示在报告中。 Union查询中的每个SELECT查询都从数据库中的多个唯一表中收集记录。最近,我不得不在联合查询中添加更多的SELECT查询,以从新表中获取记录,这是我遇到运行时错误的时候。在添加这些SELECT查询之前,它很好地打开了报表,因此在假设UNION查询中有太多SELECT查询的情况下,即时消息是正确的。要解决此问题,我是否只是不使用UNION查询并找到替代合并记录的替代方法?还是VBA代码中需要调整的内容?这是我的代码

Private Sub Command189_Click()
DoCmd.SetWarnings False
DoCmd.Close acReport, "Operator Daily Review"

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim varItem As Variant
Dim strCriteria As String
Dim strSQL As String
Set db = CurrentDb()
Set qdf = db.QueryDefs("Productivity_WeeklyFinal")
Set qdf2 = db.QueryDefs("qFiller_Names")


   strSQL = "SELECT Info_ME_Employees.ID, gs_1_week_finalUnion.SampleID,
   gs_1_week_finalUnion.Operator, Format$([TestDate],'m/dd/yyyy') AS Test_Date,
   gs_1_week_finalUnion.Test FROM Info_ME_Employees INNER JOIN gs_1_week_finalUnion ON
   Info_ME_Employees.Full_Name = gs_1_week_finalUnion.Operator" & _
   " WHERE Info_ME_Employees.ID IN (4,5,6,7)AND gs_1_week_finalUnion.TestDate Between (Date()-7-
    Weekday(Date(),2)) And (Date()-Weekday(Date(),2)-1) " & _
        " ORDER BY gs_1_week_finalUnion.Operator"
   strSQL2 = "SELECT Info_ME_Employees.ID, Info_ME_Employees.Full_Name FROM Info_ME_Employees" & _
   " WHERE Info_ME_Employees.ID IN (4,5,6,7)"

    qdf.SQL = strSQL
    qdf2.SQL = strSQL2

    DoCmd.OpenReport "Operator Daily Review", acViewReport

   Set db = Nothing
   Set qdf = Nothing
End Sub
sql ms-access access-vba
1个回答
0
投票

我认为UNION查询中可以包含的表数量有限-可能为32。因此,您的选择是:

  1. 创建几个UNION查询,然后将它们全部合并在一起作为最后一步;
  2. 使用联合查询的每个单独部分将数据插入到临时表中。

另外,也许可以通过某种方式重新设计数据库,因为很少需要很多联合。

问候,

© www.soinside.com 2019 - 2024. All rights reserved.