Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 error 3048 - открытие дополнительных баз данных невозможно  [new]
erm1982
Member

Откуда:
Сообщений: 33
Добрый день всем!

Столкнулся со следующей проблемой:

Есть форма на которой расположено примерно 30 подчиненных форм (она запущена всегда и отображает текущие итоги: как правило, источник записей у каждой состоит из запросов с 20ю подзапросами). Об изменении визуальной клиент слышать не хочет.

Из этой формы вызывается еще несколько форм, которые расшифровывают значения основной формы

А проблема собственно заключается в следующем: при выполнении событий в этих формах (которые расшифровывают) возникает ошибка 3048 «открытие дополнительных баз данных невозможно»

В модуле autoexec объявляется глобальная переменная:
Public Curr_Database As Database
Set Curr_Database = DBEngine.Workspaces(0).Databases(0)

После всех расчетов я закрываю все рекордсеты. (Set rs = Nothing)

Почему ошибка говорит именно о базах данных? А не о рекордсетах… (ведь ошибки возникают именно при их открытии)

Весь инет перерыл – так ничего и не нашел.

Никто не подскажет как увеличить лимит открытых баз данных или подскажет как побороть эту ошибку?
Очень нужно!
Где-то встречал, что нужно использовать не связанные таблица, а использовать другие методы. Может кто-нибудь подскажет, какие именно методы связи нужно использовать?

Используется:
Клиент: MS Access 2003 (SP2) (коннект к базе через связанные таблицы)
Файл данных: MS Access 2003 (SP2)
Система: WinXP (SP2)
20 фев 07, 13:13    [3809906]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
Переработать интерфейс чтобы было меньше форм
Сделать более простые источники данных для форм
Плюнуть и перейти на ADP+SQL сервер
20 фев 07, 13:36    [3810071]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
и это работало?!
Guest
erm1982
.........
Есть форма на которой расположено примерно 30 подчиненных форм

erm1982
.........как правило, источник записей у каждой состоит из запросов с 20ю подзапросами).
20 фев 07, 13:42    [3810124]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
erm1982
Member

Откуда:
Сообщений: 33
работало
и чем больше тоговых форм делаю - тем чаще эта ошибка возникает

SQL Server ставить нельзя из-за того, что клиент использует только лицензионный софт (а за сервер нужно платить)

уменьшить кол-во форм - нельзя - нужно видеть результат расчетов в одной форме
20 фев 07, 13:51    [3810185]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
Шайтан
Member

Откуда: город обречённых
Сообщений: 21830
erm1982
SQL Server ставить нельзя из-за того, что клиент использует только лицензионный софт (а за сервер нужно платить)

есть бесплатные редакции MS SQL :)
их можно загрузить с сайта мелкомяхких
Шайтан
20 фев 07, 13:55    [3810211]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
Шайтан
Member

Откуда: город обречённых
Сообщений: 21830
erm1982
Есть форма на которой расположено примерно 30 подчиненных форм (она запущена всегда и отображает текущие итоги: как правило, источник записей у каждой состоит из запросов с 20ю подзапросами).

не! ну это "ваще жесть" падобрамуканешно
но, имхо, ошибка на "генетическом уровне", в смысле, в архитектуре приложения
Шайтан
20 фев 07, 13:57    [3810223]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
bILL HEAD
Guest
"После всех расчетов я закрываю все рекордсеты" - надо быть уверенным что не обходите эти закрытия по on error resume next

зы: не понимаю как работает один из проектов - чтото типа как у автора - тучева куя подчиненных и висит весь сеанс работы
20 фев 07, 14:01    [3810253]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
LeonM
Member

Откуда: Bayern, Deutschland
Сообщений: 598
erm1982
После всех расчетов я закрываю все рекордсеты. (Set rs = Nothing)

rs.close
20 фев 07, 14:03    [3810262]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
erm1982
Есть форма на которой расположено примерно 30 подчиненных форм

И все одновременно видны? Если нет, то тем, которые visible=false, можно делать sourceobject="".
20 фев 07, 15:05    [3810806]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
erm1982
После всех расчетов я закрываю все рекордсеты. (Set rs = Nothing)

Вообще-то команда, которая закрывает рекордсет, выглядит так: rs.close. Хотя и set rs=nothing тоже убирать не надо.
20 фев 07, 15:07    [3810828]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
Allll
Member

Откуда:
Сообщений: 1435
erm1982
В модуле autoexec объявляется глобальная переменная:
Public Curr_Database As Database
Set Curr_Database = DBEngine.Workspaces(0).Databases(0)

Скорее всего этот совет не поможет решить проблему, но всё-таки:
Метод CurrentDb

Метод CurrentDb возвращает объектную переменную типа Database, представляющую текущий объект, открытый в данный момент в окне Microsoft Access.
...
Примечание. В предыдущей версии Microsoft Access для получения указателя на текущую базу данных можно было использовать следующий синтаксис: DBEngine.Workspaces(0).Databases(0) или DBEngine(0)(0). В Microsoft Access 2000 для этой цели следует использовать метод CurrentDb. Метод CurrentDb создает новый экземпляр текущей базы данных, а переменная DBEngine(0)(0) ссылается на открытую копию текущей базы данных. Метод CurrentDb позволяет создавать несколько переменных типа Database, ссылающихся на текущую базу данных. Синтаксис вида DBEngine(0)(0) по-прежнему поддерживается, но во избежание конфликтов в многопользовательских базах данных использовать его не рекомендуется.

PS: Давно не видел такого синтаксиса - удивился и посмотрел Справку :)
20 фев 07, 15:16    [3810926]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
ALEXIS_22
Member

Откуда:
Сообщений: 1188
А если открывать recordset так CurrentDB.OpenRecordset("..."

при этом определяя переменную для рекордсета писать as DAO.Recordset или as ADODB.Recordset

закрывая рекордсет всегда пишу r.close , а затем set r = nothing

А вообще 30 подформ и 20 подзапросов это круто !

Могуч ACS, могуч, если даже такое тянет.
20 фев 07, 15:17    [3810935]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
Allll
Member

Откуда:
Сообщений: 1435
Старая темка про рекордсеты:
ILL HEAD
из собственного опыта: незакрытые рекордсеты вызывали ошибку "не могу открыть дополнительную базу данных" (или чтото в этом роде)

Может это Ваш случай?

Воспользуйтесь циклом проверки открытых рекордсетов из этой темы, может найдутся лишние рекордсеты.
20 фев 07, 15:27    [3811037]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
erm1982
Member

Откуда:
Сообщений: 33
Большое спасибо всем!
Все предложенные Вами решения уже пробывал :(

В общем 2 дня потратил на решение - ничего не помогает
поэтому решил проблему в лоб:

на форме (там где раньше был громадный запрос) темерь : select * from t_temp

а на кнопку обновления повесил cсобытие:
delete * from t_temp
insert into t_Temp (.....) select * from (мой громадный запрос) t

где t_temp - таблица в клиенте

понимаю что кривовато получилось, но времени искать новые решения не хватает
20 фев 07, 15:30    [3811070]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
bILL HEAD
Guest
bILL HEAD
"После всех расчетов я закрываю все рекордсеты" - надо быть уверенным что не обходите эти закрытия по on error resume next
тут я чуш какуюто написал
имел ввиду по on error goto handleErrXXX
20 фев 07, 15:38    [3811149]     Ответить | Цитировать Сообщить модератору
 Re: error 3048 - открытие дополнительных баз данных невозможно  [new]
Orien
Member

Откуда:
Сообщений: 10
Это нормальная ситуация в случае, подобном Вашему, когда количество открытых наборов записей становится критическим. Но бывают случаи, когда повода и не должно быть - открыто, например, всего 2-3 набора записей - а сообщение уже радует глаз. В старом Access - лечилось всеми возможными SP в новом - не встречалось :).
Общая рекомендация такая - постарайтесь вместо всех запросов использовать готовые временные таблицы. Так как какдая таблица в запросе - это еще +1 набор записей, в отличие от готовой таблицы. В общем, Вы пошли примерно таким путем. Другой, кроме уменьешния количества октрытых наборов записей, мне неизвестен.
21 фев 07, 15:38    [3816849]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить