Как исправить ошибку времени выполнения «3048» «Больше невозможно открыть базы данных». - PullRequest
0 голосов
/ 27 мая 2020

У меня есть форма с кнопкой, которая вызывает и фильтрует пару запросов на объединение с примерно 40 запросами SELECT между ними. Затем он отображает данные в отчете. Каждый запрос SELECT в запросе Union собирает записи из нескольких уникальных таблиц в базе данных. Недавно мне пришлось добавить еще пару запросов 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

1 Ответ

0 голосов
/ 27 мая 2020

Я думаю, что существует предел таблиц, которые могут быть включены в запрос UNION - возможно, 32. Поэтому ваши варианты:

  1. Создайте несколько запросов UNION, а затем объедините их все вместе как последний шаг;
  2. Вставьте данные во временную таблицу, используя каждую отдельную часть запроса на объединение.

Кроме того, может быть какой-то способ перепроектировать вашу базу данных , так как необходимость в большом количестве союзов довольно необычна.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...