Access error 3048

Ошибка 3048: открытие дополнительных баз данных невозможно MS Access Решение и ответ на вопрос 1412276

895 / 285 / 50

Регистрация: 02.12.2014

Сообщений: 1,229

1

04.04.2015, 13:25. Показов 7906. Ответов 19


Ну вот, кажется, настал и мой черед поморочить себе голову с этой дурацкой ошибкой…

Предыстория.

Создал для клиента замечательную базу склада с учетом всех его пожеланий.

База, само собой, была разделенная на клиентскую часть и часть с таблицами данных, то есть использовались связанные таблицы (и прекрасный алгоритм их автопривязки в случае смены клиентской части — этот алгоритм нашел здесь на форуме). Пока все прекрасно.

При этом реализовал в базе многоэкземплярность форм, чтобы можно было открыть одновременно несколько форм (для разных заказов, разных товаров и т.д.) — рецепт для этого нашел тоже здесь же на форуме, там в начале при загрузке главной формы заодно открываются в скрытом виде все нужные формы, клоны которых потом открываются по необходимости).

На каждой из этих форм имелось по нескольку вкладок с разными подформами для удобного представления данных (о заказе, товаре, поставщике и т.д.).

Так вот, в идеале все работало замечательно.

А когда база «ушла в работу» — тогда и начала вылазить эта вот ДУРАЦКАЯ «Ошибка 3048: открытие дополнительных баз данных невозможно».

Раньше я с ней, слава богу, не сталкивался, поскольку до этого как-то не приходилось делать разделенные базы данных, все больше обходился стандартным вариантом с одним файлом базы…

Прочитал несколько форумов по ее поводу и все больше склоняюсь к упаднической мысли о том, что мне проще нафиг заново соединить клиентскую часть и часть с таблицами в единую базу (при этом потеряв такую прекрасную автолинковку связанных таблиц) и забыть эту ошибку как страшный сон, чем заново «рихтовать» всю базу с учетом всех тех требований и ограничений, которые накладываются данной ошибкой…

Из прочитанного на других форумах можно выделить такие главные моменты (далее будут цитаты):

«Ошибка 3048 Открытие дополнительных баз данных невозможно»
кроется в JET, не зависимо от версии самой JET. В JET заложено ограничение на количество одновременно открытих рекордсетов основаных именно на связанных таблицах. Число одновременно открытых рекордсетов около 20 максимум. При попытке открыть 21 рекордсет возникает указанная ошибка. 2 метода преодоления:
1. Вообще не использовать связанные таблицы, а применять другие методы для связи приложения с базой.
2. Контролировать количество одновременно открытых рекордсетов (При открытии нового отчёта закрывать открытый предыдущий и программно отвязывать подчинённые формы от источников данны, а при закрытии отчета восстанавливать связи форм с источниками данных) Но всё это конечно дыбилизм чистой воды.
Хоть MSAccess достаточно мощная и простая СУБД такие грабли которые подсовует Били и его компания с одной стороны веселят, а с другой навевают на размышления!!!!.

«Открытие дополнительных баз данных не возможно» — это Ахилессова пята Аксесса.
Практически, из-за этого ограничения невозможно создавать удобные и могучие интерфейсы.
Приходится постоянно ограничиваться. О чём только думали разработчики Аксесса, когда
закладывали это ограничение.

Также мне понравилась одна «мистическая» история, продолжения которой я так и не нашел нигде. Вот она:

Попытаюсь быть немного полезен. лет 5 назад начале создания своей большой базы неоднократно нарывался на сообщение типа открытие дополнительных баз данных невозможно, причем это происходило в не зависимости что открывалось, то-ли много таблиц или последовательно много запросов или вперемежку, или одновременно открывалось много форм или отчетов.

Способ был найден в просторах ИНЕТА ВСЕМОГУЩЕГО — в параметрах реестра изменялось 3-4 параметра ограничивающих количество открытых объектов в акцессе (именно объектов не файлов) и после этого исправления открывал одновременно более 50 таблиц и запросов просто немерено, единственная беда в том что забыл адресочек в инете и запись на бумаге утрачена, но это реально работало.
Сейчас нет проблем с данным вопросом потому что нет нет необходимости открытия большого количества объектов. Очень самому бы хотелось найти этот источник информации пока не получается, но может кому-то повезет найти Так не забудьте про братьев с той же проблемой!

Конечно, если бы она оказалась правдой — было бы замечательно решить данную проблему «одним махом» правкой реестра, но… Повторюсь, продолжения ее я так и не нашел.

В принципе, на прочитанных мною форумах я нашел несколько советов по поводу если не преодоления, то хотя бы уменьшения частоты появления данной ошибки, но… Ей богу, я не считаю хорошим советом «Старайтесь делать меньше форм» — звучит глупо как минимум.

Если учесть, что формы я создавал ОЧЕНЬ продуманными с точки зрения логики подачи информации и удобства для пользователя (мы с заказчиком каждую из них «рожали в муках»)), то было бы как минимум досадно (и это мягко сказано) переделывать их «в угоду» ограничениям JET…

Почему-то не нашел поиском темы про данную ошибку на этом форуме — скорее всего плохо искал. Буду очень признателен за любые возможные советы и «наводку» на что почитать по данному вопросу, хотя, повторюсь, все уже прочитанное приводит к довольно грустным выводам…



0



  • Remove From My Forums

 locked

DoCmd.OutputTo — error 3048 cannot open any more databases

  • Question

  • Hi everyone.

    I do really appreciate anyone help.

    I have a split database. I created simple report based on query containing only one table (containing no combo or list boxes, the report source is saved query).

    When I output the report to pdf (or rtf) using

    DoCmd.OutputTo acOutputReport, «Report», acFormatPDF, «C:FolderName.pdf», False

    it takes one database reference. When I repeat it several times „I get the error 3048 – Can’t open any more databases“.

    I count the number of database references using the function TablesAvailable() from stackoverflow.com and this is the way I found that DoCmd.OutpuTo wastes references.

    Please do you have any idea why is this happening?

    I have complex database and it annoys users, when the error fires several times per day.

    Many thanks in advance

Answers

  • Hi Tomas,

    Thanks for your feedback, I can reproduce your issue when keep the report object opened.

    # Environment: Access 2013 + Windows 8.1

    # Workaround:

    To work around this issue, you need to close the report object before exporting the report.

    Sub TestAvailableTable()
        DoCmd.Close acReport, "Threads1 Query"
        For i = 1 To 300
            DoCmd.OutputTo acOutputReport, "Threads1 Query", acFormatPDF, "name" & 1 & ".pdf", False
        Next
        Debug.Print "Done"
    End Sub

    As I tested, it works fine after 300 times exporting.

    Please let me know whether it works for you.

    Regards,

    Jeffrey


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.

    Click
    HERE to participate the survey.

    • Edited by

      Wednesday, February 4, 2015 5:34 AM

    • Proposed as answer by
      Edward8520Microsoft contingent staff
      Wednesday, February 11, 2015 9:57 AM
    • Marked as answer by
      Fei XueMicrosoft employee
      Thursday, February 12, 2015 1:27 AM

Icon Ex Error Number: Error 3048
Error Name: Microsoft Access Error 3048
Error Description: Cannot open any more databases.
Developer: Microsoft Corporation
Software: Microsoft Access
Applies to: Windows XP, Vista, 7, 8, 10, 11

Explanation of Microsoft Access Error 3048

Microsoft Access Error 3048 is typically an error (bug) found at runtime. The Microsoft Corporation developers typically evaluate Microsoft Access with a series of modules to remove bugs to meet industry standards. As with anything in life, sometimes problems like error 3048 get overlooked.

Some users might experience the message «Cannot open any more databases.» while using Microsoft Access. If Microsoft Access Error 3048 occurs, developers will be told about that issue though error reporting built-into the application. Programmers can then correct these errors in the code and include a hotfix that can be downloaded from their website. Therefore, when you do a Microsoft Access software update, it will contain a patch for fixing issues like error 3048.

What Actually Causes Runtime Error 3048?

A device or Microsoft Access failure typically can manifest itself with Microsoft Access Error 3048 as a runtime problem. We are going to review at the key causes of error 3048 errors:

Error 3048 Crash — Error 3048 will stop the machine from performing a regular program operation. If Microsoft Access can’t handle the given input, or it isn’t able to produce the required output, this typically happens.

Microsoft Access Error 3048 Memory Leak — When a Microsoft Access Memory leak occurs, this can result in the device running slow due to system resources running short. Possible causes due to failure of Microsoft Corporation to de-allocate memory in the program, or when bad code executes a «infinite loop».

Error 3048 Logic Error — Logic errors manifest when the user inputs the correct data but the device produces the wrong result. This is seen when Microsoft Corporation’s source code involves a defect in the input data analysis.

Typically, Microsoft Access Error 3048 errors are caused by a corrupt or missing Microsoft Access-associated file, sometimes due to malware infection. Downloading and replacing your Microsoft Corporation file can fix the problem in most cases. In addition, if your Microsoft Access Error 3048 error was due to a removed malware infection, we recommend running a registry scan to clean up any invalid file path references created by the malicious program.

Common Microsoft Access Error 3048 Error Messages

Partial List of Microsoft Access Error 3048 Microsoft Access Errors:

  • «Microsoft Access Error 3048 Application Error.»
  • «Microsoft Access Error 3048 not valid.»
  • «Sorry, Microsoft Access Error 3048 encountered a problem.»
  • «Cannot find Microsoft Access Error 3048.»
  • «Microsoft Access Error 3048 can’t be found.»
  • «Problem starting application: Microsoft Access Error 3048.»
  • «Microsoft Access Error 3048 not working.»
  • «Microsoft Access Error 3048 failed.»
  • «Microsoft Access Error 3048: App Path is Faulting.»

These Microsoft Corporation error messages can appear during program installation, while a Microsoft Access Error 3048-related software program (eg. Microsoft Access) is running, during Windows startup or shutdown, or even during the installation of the Windows operating system. Keeping track of when and where your Microsoft Access Error 3048 error occurs is a critical piece of information in troubleshooting the problem.

Root of Microsoft Access Error 3048 Problems

Malware infestation, invalid Microsoft Access registry entries, or missing / corrupt Microsoft Access Error 3048 files can create these Microsoft Access Error 3048 errors.

In particular, Microsoft Access Error 3048 problems originate through:

  • Microsoft Access Error 3048 entry invalid or corrupt.
  • Malware has infected Microsoft Access Error 3048, creating corruption.
  • Microsoft Access Error 3048 mistakenly deleted or maliciously by software unrelated to the Microsoft Access application.
  • Another program conflicting with Microsoft Access Error 3048 or another Microsoft Access shared reference.
  • Microsoft Access (Microsoft Access Error 3048) corrupted during download or install.

Product by Solvusoft

Download Now
WinThruster 2022 — Scan your PC for computer errors.

Compatible with Windows 11, 10, 8, 7, Vista, XP and 2000

Optional Offer for WinThruster by Solvusoft | EULA | Privacy Policy | Terms | Uninstall

I recently split my database. My form is a calendar with a Tab for Month View, Week View, and Day View with 42, 7, and 7 subforms, respectively. All of these subforms are unbound. When a tab is selected, all the subforms in that tab is assigned a ControlSource while all other subforms are cleared of its ControlSource.

The Month View is the only one that gets Error 3048: Cannot open any more databases. after it loads 23 subforms (there are a few labels, lists, and buttons outside the Tab, but I do not think they are significant).

When the Month View tab is selected, the following actions occur:

  1. A 42×2 array is filled with Long date information
  2. All subforms are cleared of its SourceObject
  3. For all subforms in the selected tab: Assign its SourceObject then call a function (located in the SUBform) to Filter itself. In this function, another function is called to count the number of records in the subform based on some criteria. A database and recordset is created here and passed through several times before the recordset is Closed.

The Subform contains several text boxes with one containing a conditional format to color it. Its Record Source is the query:

SELECT tblTask.JobNum, tblJob.JobNum, tblTask.Sequence, tblJob.Closed, tblJob.Certified, tblEstimator.SortID, tblDivision.SortID, tblJob.EstimatorID, tblTask.DivisionID, tblJob.JobSite, tblJob.Customer, tblJob.Closed, tblTask.Item, tblTask.ItemDescription, tblTask.StartDate, tblTask.EndDate, tblTask.WeekendWork, tblEstimator.EstimatorNum & "-" & [FirstName] & " " & [LastName] & "20" & Mid([tblJob].JobNum,3,2) & " JOBS" AS JobMidFilePath
FROM (tblEstimator RIGHT JOIN tblJob ON tblEstimator.ID = tblJob.EstimatorID) RIGHT JOIN (tblDivision RIGHT JOIN tblTask ON tblDivision.ID = tblTask.DivisionID) ON tblJob.JobNum = tblTask.JobNum
WHERE (((tblJob.Closed)=False))
ORDER BY tblTask.JobNum, tblTask.Sequence, tblTask.StartDate, tblDivision.SortID;

Right now 521 records are returned with this query.

Is it expected that my form should not be able to handle all of this? Or is there a way to improve the efficiency of my form? I’m very lost about what I should do about this, since I need all 42 subforms to load.

Let me know if you need more information. Thanks in advance!

It’s turning out to be a rough New Year for Microsoft Access as we appear to be hit with another bug which has a number of possible symptoms:

  • Error 3014: “Can’t Open Any More Tables”
  • Error 3048: “Cannot open any more databases”
  • Error 3211: “The database engine could not lock table ‘TableName’ because it is already in use by another person or process” (unconfirmed)
  • Even after closing, the access process, msaccess.exe, remains and the lock file, laccdb, remains as well
  • Error “Already in use by Admin”

I’ve seen reports that the issue relates to build 16.0.14827.20158, but i”m not sure if it is limited to just that one build or not.

Fixed — 2022-02-08

It has been reported that Version 2201, Build 14827.20192, was release late last night or early this morning and fixes the issue. Verifying the build’s release note, it does indeed confirm this is a fix.

So you may wish to try updating your Office/Access installation and the problem should resolve itself.

Threads On The Subject

As they say, misery loves company, so here are a few of the many posting related to this error.

Cannot open anymore databases — Access database

This morning I used an Access database application that I use every morning but got the following message:

Cannot open anymore databases

There have been no changes to the database for sometime and up until this morning it worked fine.

Access version 2201 problem with laccdb

I have a problem when closing Access program since Access version 2201 (26th January 2022).

There is still a «record-locking informations» laccdb not closing

Locking file not deleting

Microsoft Access Record Locking Information file is not deleting when I close my accdb front end application.

Error 3048 in Access 2016

We have a database running in Access 2016 Professional, with a front end on each computer and a backend on a NAS. It was running fine until this week, when everyone started to get error 3048 «too many databases open».

ACCESS database not closing properly in ACCESS 2019 leaving legacy shells or processes

Access 2019 running on Acer laptop with Windows 10 build no 19042.1466 a database written in Access 2010 now leaves an Access shell running in Task Manager(seeable in Apps) with DoCmd.Quit (and any of its variations).

Cannot open any more databases.

Today one of the users reported the error «Cannot open any more databases.» and had to exit the database.

Re: Access doesn’t close properly. A remaining background process can only be terminated in task man

Same here. Adding the database folder to trusted locations seems to work. In my case it is a UNC path.

and there are countless more! Google should you want even more posting.

Officially

Update 2022-02-04 – We finally have an official response/workaround (same as what the community has been proposing for 2 days now).  You can read all about it at:

Access is unable to close and leaves lockfile active

A bug in Current Channel Version 2201 (Build 14827.20158) has been reported that prevents Access from closing and leaves the lockfile active, which may lead to the following errors even before shutting down Access.

 

Workarounds

There are currently 2 possible workarounds:

  • Uninstall the flawed update and revert your installation to a previously stable build number
  • Setup Trusted Locations for the folders housing both the Front-end and Back-End of your database

Reverting your Office Installation

Although a little daunting at first glance, setting your Office installation to a prior build isn’t truly that hard to do and I’ve explained the 2 necessary commands in my article:

Microsoft Office 365 — Uninstall an Update

With Microsoft’s major push of Office 365, more specifically Click-to-run (C2R or CTR), I think it important to briefly touch base on the entire update process. Do note that the following also applies to the C2R versions of Access 2013, 2016, 2019, 2021+ the only difference being the build numbers. While Office 365 will, unless…

Continue reading

 

Setting Up Trusted Locations

Many forum users are reporting that defining a Trusted Location for the database with ‘Subfolders of this location are also trusted’ enabled solves the issue. (you have to do this for both the Front-End and Back-End!)  *** This has been confirmed to me as a valid workaround by Microsoft directly ***

  File -> Options ->Trust Center -> Trust Center Settings… -> Trusted Locations -> Add new location…

  * This should work as long as the group policy that enables AMSI for all documents isn’t in place. If it is, then even this workaround won’t help.

  ** You can also use VBScript to create a Trusted Location (this is useful for Runtime versions). You can find an example of the necessary code at VBScript – Create/Set Trusted Location Using VBScript

Extra Instructions

As mentioned in a comment by Mike McElhaney, after closing Access, you should (i)Open the task manager and Kill any remaining msaccess.exe processes, (ii)Delete any remaining lock file (ldb, laccdb, …) for both the front-end and back-end files.

 

¡Double Check Your Existing Trusted Locations!

There have been a couple reports that this bug, or perhaps another bug, has deleted previously entered Trusted Locations.  So even though you think it is already in place, double check as you may need to recreate them again.

 

Adding the necessary Trusted Location(s) is probably the the quickest and easiest workaround to implement, IMHO.

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Access denied handler error page
  • Access denied for user root localhost using password yes как исправить
  • Access denied error number
  • Access denied error code 258
  • Access denied error code 1020 что это

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии