Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft Access |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 3 4 5 вперед Ctrl→ все |
MasterZ Member Откуда: Москва Сообщений: 1145 |
Access 2003 mdb + клиент mdb + терминальный доступ. Хотелось бы выяснить раз и навсегда возможно ли избавиться от этой ошибки при условии что: 1. Переход на сиквел пока не возможен. 2. Все оптимизации по количеству открытых рекордсетов в формах выполнены. В формуме прочел, что спасает переход на access 2007. Пробовал переводить базу и клиента в формат access 2007 (accdb) результат не изменился. Может быть есть какой нибудь вариант с office 2010? Хочу заметить, что ошибка проявляется при открытии формы, тогда, когда открыто несколько емких форм(около 4 шт. ) во всех остальных случаях все работает нормально. спасибо. |
17 дек 10, 09:53 [9953537] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
Очень важную подняли тему. "Открытие дополнительных баз данных не возможно" - это Ахилессова пята Аксесса. Практически, из-за этого ограничения невозможно создавать удобные и могучие интерфейсы. Приходится постоянно ограничиваться. О чём только думали разработчики Аксесса, когда закладывали это ограничение. Как с ним бороться? 1. В частности, на мой взгляд, можно отключать RecordSource у комбобоксов, которые не содержат данных. Не панацея конечно, но всё-же. 2. Стараться не размещать много субформ на закладках. 3. На неактивных закладках делать RecordSource = "" 4. Уменьшать количество JOIN - ов в запросах. 5. Делать проект, одновременно держа в уме это ограничение Аксесса. Ограничивать, оптимизировать всё, что можно. Искать компромисс. Не стесняться и говорить про ограничения Аксесса пользователям. Я сам в поиске, что выбрать для дальнейшей разработки. Либо совсем уйти Аксесса с сторону Java или C#, или в сторону ADP. Пока не определился. Как и Вы я постоянно думаю, что Аксесс откажется показывать в очередной раз. Это конечно не работа. Но пока приходится с этим мирится, как-то подстраиваться. Ребята тут пишут, что у ADP нет этих проблем. |
17 дек 10, 16:12 [9957350] Ответить | Цитировать Сообщить модератору |
nord-woolf Member Откуда: And God I know I'm one Сообщений: 4894 |
Nebo, Пост смахивает на "плач недоросля". :) |
17 дек 10, 16:28 [9957513] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
А Вы поясните почему? :) Что я не так написал? |
||
17 дек 10, 16:40 [9957626] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
nord-woolf И если у Вас не возникало проблем по теме топика, или Вы их успешно решили - так напишите пожалуйста здесь историю успеха:) Очень интересно. |
17 дек 10, 16:45 [9957665] Ответить | Цитировать Сообщить модератору |
alvk Member [заблокирован] Откуда: Находка Сообщений: 10974 |
Nebo, Мне так и не удалось воссоздать подобную ситуацию, может у меня всё криво? не знаю... |
17 дек 10, 17:07 [9957857] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
Это может у меня не получается:) Когда только научусь программировать:) Хотя MasterZ озвучил ведь проблему. Значит она всё-же есть. Как только делается навороченный интерфейс, так тут как тут за углом тема топика:) Правда. |
17 дек 10, 17:14 [9957918] Ответить | Цитировать Сообщить модератору |
nord-woolf Member Откуда: And God I know I'm one Сообщений: 4894 |
Nebo, Если очень кратко: ...Либо совсем уйти Аксесса с сторону Java или C#, или в сторону ADP... Вольный перевод, типа шутко: ...Тяжелая атлетика оказалась слишком тяжелой, вот думаю каким другим видом спорта заняться, хоровым пением или рыбалкой... 1. В частности, на мой взгляд, можно отключать RecordSource у комбобоксов, которые не содержат данных. Не панацея конечно, но всё-же. Зачем на форме комбобоксы, которые не содержат данных? 2. Стараться не размещать много субформ на закладках. Интерфейс должен быть продуман и ... но в целом да - сабформ по минимуму. 3. На неактивных закладках делать RecordSource = "" Что есть "Закладка"? Если это вкладка в наборе вкладок, то: Зачем? Что-бы при активации вновь запрашивать данные? Можно/нужно подгружать данные при первой активации вкладки. 4. Уменьшать количество JOIN - ов в запросах. Как можно уменьшить кол-во Join-ов, если мне нужны данные полей N таблиц? 5. Делать проект, одновременно держа в уме это ограничение Аксесса. Это ограничение НЕ Access. Ограничивать... Слишком размыто, что/кого ограничивать? Себя? Пользователя? ... оптимизировать всё... Да. ...Искать компромисс. Выбирать оптимальные решения для конкретной задачи. Не стесняться и говорить про ограничения Аксесса пользователям. Если вы уперлись в ограничение - значит ВЫ не правильно выбрали инструмент(ы). И не надо сваливать свои незнания/малый опыт на ограничения инструмента(ов). Сам с таким явлением не сталкивался ни разу. Но у меня малый опыт файл-серверных конструкций, да и одновременно работающих пользователей более 10 наверно и не было. Но, на этом форуме попадались интересные топики на эту тему. пс. Во понаписал-то! Почти война и мир. :) |
17 дек 10, 17:22 [9957982] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
nord-woolf, Вот есть ощущение у меня, что Вы не сталкивались с этой проблемой сильно:) Что не знаете глубоко эту проблему. Спорить не будем - нет смысла. Я могу также где-то и ошибаться. Но я неоднократно сталкивался с темой топика. И прекрасно понимаю проблему, которую автор топик озвучил. Насчёт хорового пения это Вы хорошо сказали:) Может мне надо им и заняться:)
Бывает так, что некоторые комбобоксы редко используется. Я к чему этот пример привёл, чтобы показать, что приходится идти на все возможные ухищрения, дабы минимизировать тему топика.
Имеется ввиду что есть субформа на закладке. Если закладка неактивна - то да можно вообще сделать так ControlSource = "" Да, это вызывает лишние запросы к данным, при активации закладки. А что делать? Как-то нужно бороться с темой топика:)
Здесь имеется ввиду разумная экономия. Где-то я читал, что каждый JOIN способствует теме топика.
Ну почему так? Вроде-ж как это ограничение Jet? Когда мы переходим на ADP, Jet больше не используется и темы топика не возникает. Вроде так.
Да. Приходится ограничивать элементы интерфейса. Автор топика об этом же и пишет. О высоконагруженных формах. И поверьте такие формы нужны. И возникает проблема топика.
Я как раз ничего и не сваливаю. Ну разве нет проблемы топика? Ну вот парень написал сюда о проблеме. Он столкнулся с этой проблемой. Я сталкивался не раз. Открытие дополнительных баз невозможно - ЭТО ограничение Аксесс. Об этом написано в Сети. Если не верите, попробуйте сделать несколько сложных форм, чтобы они были одновременно на экране и Вы гарантированно получите это сообщение. Его совсем нетрудно достичь.
У Вас мало опыта. Извините великодушно:) Поэтому Вы меня не понимаете:) |
||||||||||||||
17 дек 10, 17:44 [9958153] Ответить | Цитировать Сообщить модератору |
nord-woolf Member Откуда: And God I know I'm one Сообщений: 4894 |
Nebo, Если не верите, попробуйте сделать несколько сложных форм, чтобы они были одновременно на экране и Вы гарантированно получите это сообщение. Его совсем нетрудно достичь. Вот именно потому, что у меня нет "сложных" (опять-таки понятие растяжимое) форм, я с таким сообщением и не сталкивался. Продумайте интерфейс. Не "ведитесь" на "хочу видеть все на одной форме одновременно". Уходите в сторону контролов, не держущих открытыми наборы данных. ...Вроде-ж как это ограничение Jet?... Jet<>Access, Access<>Jet. ...Я сталкивался не раз... То, что вы постоянно сталкиваетесь с этим сообщением, говорит о том, что вы так и не изучили истоки проблемы и пути ее решения. Получается, вы постоянно топчитесь по одним и тем-же граблям. Не надо нам сетовать на наличие граблей. Уберите их, или научитесь обходить их стороной. А потом и нас научите. ps. Кстати, скринов "сложных" форм не подкинете? |
17 дек 10, 18:01 [9958248] Ответить | Цитировать Сообщить модератору |
АндрейК Member Откуда: Москва Сообщений: 380 |
Я всего один раз столкнулся с подобным сообщением программы и причину нашёл: забыл сделать в конце процедуры "... = Nothing" десяти переменным типа Recordset, объявленным на уровне модуля. Перед этим, правда, пришлось пережить минуты растерянного недоумения: "откуда, к чёрту дополнительные бызы?"... |
17 дек 10, 18:18 [9958351] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
Согласен:) Может Вы и правы. Все данные держать на экране нет смысла. Может у меня опыта не хватает и я топчусь на одном месте. Скрин выложить не могу. Правда удобно бывает, когда открыта на экране форме, двойной щелчок на поле появляется детализации этого поля и так далее. И в один прекрасный момент Аксесс выдаёт тему топика.
Что касается Nothing и Close - то это всё делаю давно. Давно правда не сталкивался с темой топика, но это только потому, что перестал держать много табличек на экране. Хотя по большому счёту это снижает удобство программы. Вас послушаешь, так вроде как проблемы и вовсе нет:) Вроде как всё сводится только к ошибкам программиста:) Интересно так ли это? |
||||
18 дек 10, 01:44 [9960066] Ответить | Цитировать Сообщить модератору |
alvk Member [заблокирован] Откуда: Находка Сообщений: 10974 |
Nebo, так скриншот будет? хотелось бы глянуть. |
18 дек 10, 07:40 [9960301] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
Чуете, что крутые тут у меня скриншоты:)) Нет, пока скриншота не будет:) |
||
18 дек 10, 11:08 [9960470] Ответить | Цитировать Сообщить модератору |
alex999kon Member Откуда: Россия Иваново Сообщений: 4250 |
Попытаюсь быть немного полезен. лет 5 назад начале создания своей большой базы неоднократно нарывался на сообщение типа открытие дополнительных баз данных невозможно, причем это происходило в не зависимости что открывалось, то-ли много таблиц или последовательно много запросов или вперемежку, или одновременно открывалось много форм или отчетов. Способ был найден в просторах ИНЕТА ВСЕМОГУЩЕГО - в параметрах реестра изменялось 3-4 параметра ограничивающих количество открытых объектов в акцессе (именно объектов не файлов) и после этого исправления открывал одновременно более 50 таблиц и запросов просто немерено, единственная беда в том что забыл адресочек в инете и запись на бумаге утрачена, но это реально работало. Сейчас нет проблем с данным вопросом потому что нет нет необходимости открытия большого количества объектов. Очень самому бы хотелось найти этот источник информации пока не получается, но может кому-то повезет найти Так не забудьте про братьев с той же проблемой! С уважением Alex999 |
18 дек 10, 11:24 [9960503] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
alex999kon,
Да я вроде менял такие параметры когда-то. Тоже не помню какие. Кажется один какой-то параметр. Какой из картинки? К сообщению приложен файл. Размер - 23Kb |
||
18 дек 10, 12:03 [9960557] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
Забыл сказать:) Не помогало изменение параметров. |
18 дек 10, 12:04 [9960560] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
Кажется вот об этом параметре шла речь MaxLocksPerFile. У меня стоит значение 9500. Может я его и ставил. Не помню. |
18 дек 10, 12:07 [9960571] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
Ален Браун комментирует похожую ситуацию: http://www.accessmonster.com/Uwe/Forum.aspx/access/57377/Cannot-open-any-more-databases-3048 |
18 дек 10, 12:12 [9960580] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
alex999kon,
Интересно, что это за параметры? |
||
18 дек 10, 12:16 [9960587] Ответить | Цитировать Сообщить модератору |
alex999kon Member Откуда: Россия Иваново Сообщений: 4250 |
Если честно то совсем не помню но то что одновременно открывал 50 таблиц и кучу запросов это точно! |
18 дек 10, 12:36 [9960634] Ответить | Цитировать Сообщить модератору |
alvk Member [заблокирован] Откуда: Находка Сообщений: 10974 |
на нет и суда нет. |
||||
19 дек 10, 01:40 [9962450] Ответить | Цитировать Сообщить модератору |
MasterZ Member Откуда: Москва Сообщений: 1145 |
Очень похоже на придуманную историю, которую хочет услышать большое количество программистов Access. Написано много, а толку 0, зачем тогда писать... вот статистика открытых форм. Проводилась с помощью двух процедур вычитанных из форума.
Форма5 уже не открыватся т.к. для связанных таблиц ограничение рекордсетов - 125 Соединений -252 |
|||||||||||||||||||||
20 дек 10, 15:58 [9967524] Ответить | Цитировать Сообщить модератору |
Nebo Member Откуда: Сообщений: 2858 |
MasterZ,
Что-то мне непонятно:) Поподробнее можно пожалуйста? |
||
20 дек 10, 16:17 [9967708] Ответить | Цитировать Сообщить модератору |
MasterZ Member Откуда: Москва Сообщений: 1145 |
Private Sub Кнопка2_Click() нажимаем кнопку до открытия формы и после разница есть расход на форму. Таблицы прилинкованные!!! С обычными таблицами результат будет другой. Option Compare Database Option Explicit ' Private Sub Кнопка2_Click() Test test2 test3 test4 End Sub Public Function Test(Optional f) On Error GoTo Err_Handler Dim db As Object Set db = CurrentDb Dim col As New Collection Dim i As Long Do col.Add db.OpenRecordset("select * from [Invoice Registration]") i = i + 1 Loop Exit Function Err_Handler: Me.Поле0 = err.Description Me.Поле3 = i f = i End Function Public Function test2(Optional f) On Error GoTo Err_Handler 'Dim db As dao.Database Dim db As Object Set db = CurrentDb Dim col As New Collection Dim i As Long Do Set db = CurrentDb col.Add db i = i + 1 Loop Exit Function Err_Handler: Me.Поле5 = err.Description Me.Поле7 = i f = i End Function Public Function test3(Optional f) On Error GoTo Err_Handler 'Dim db As dao.Database Dim con As ADODB.Connection Dim rs As New ADODB.Recordset Set con = CurrentProject.Connection Dim col As New Collection Dim i As Long Do Set rs = New ADODB.Recordset rs.Open "select * from [Invoice Registration]", con col.Add rs i = i + 1 Loop Exit Function Err_Handler: Me.Поле9 = err.Description Me.Поле11 = i f = i End Function Public Function test4(Optional f) 'Недостаточно памяти для завершения операции. 'i=64 'On Error GoTo Err_Handler ' 'Dim db As dao.Database ' Dim con As ADODB.Connection ' ' Dim rs As New ADODB.Recordset ' Set con = ReportDirectConnection ' ' Dim col As New Collection ' Dim i As Long ' Do ' Set rs = New ADODB.Recordset ' rs.Open "select * from [Invoice Registration]", con ' col.Add rs ' i = i + 1 ' If i = 400 Then ' Me.Поле15 = i ' Exit Function ' End If ' ' Loop ' Exit Function 'Err_Handler: ' Me.Поле13 = err.Description ' Me.Поле15 = i ' f = i End Function |
||||
21 дек 10, 10:45 [9971347] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 3 4 5 вперед Ctrl→ все |
Все форумы / Microsoft Access | ![]() |