|
|
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
Начиная с А2000 такое стало возможным. Про 2000 писали - не пользуйся CurrentDB, открывай через ADO и, скорее всего, все будет хорошо. Наблюл (Access XP): 1) база попадает в такое состояние при обращении из модуля класса к функции, содержащейся в обычном модуле ( и формирующей глобальную объектную переменную) при условии, что модуль не был до этого инициализирован из обычного модуля. 2) сложилось внятное впечатление, что подобное происходит при "дефолтной" передаче объектных переменных Access (формы) в процедуры, года процедура получает ее фактически byVAl, а вызывающий "бросает" объект. ЗЫ Промучился полдня, пока отловил, и ни один партизан не слова не сказал, куда копать -) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 18:18 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
Извиняйте за словесность - тут уже русским язЫком почти разучился говорить к вечеру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 18:20 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
и часто тя так по пятницам торкает? Шайтан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 18:23 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
To Шайтан -не часто, но только по пятницам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 18:26 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
В общем, я так и не понял, что же именно я наблюл. Продолжение истории выглядит следующим образомЖ (исходно файлик в формате 2000, исполнитель - XP) пошел тупо по строчкам, регулярно загоняя датабасу в passive shutdown на невинных строчках типа а) Dim b AS Boolean b= (f Is Nothing) ', где f - переменная класса Access (форма) b) Dim a() As MyClass Redim a(0 to ...) As MyClass ... a(i)= New MyClass аккуратно вычищая это хозяйство. дотопал до строки типа set FLimits = New Form_Limits, при исполнении которой наступает ps. Перед нею еще пара подобных, ни к чему "плохому" не приводят. В этом месте задумался о том, что , может - файлик "порушенный". /decompile, compress, compile, перевод в формат 2002 и обратно - эффект ноль. Собрался "экспортировать" в новый. Тут в "технических статьях" наткнулся на Q323203, в котором рассказывается о том, что если баСа падает при исполнении кода, пытающегося открыть объект Access - освежи ссылки. У меня не падает - но мысль показалась интересной. Освежение руками - ничего примечательного. В заметке прилагался код для освежения: ================ Dim r As Reference, r1 As Reference Dim s As String ' Look for the first reference in the database other ' than Access and Visual Basic for Applications. For Each r In Application.References If r.Name <> "Access" And r.Name <> "VBA" Then Set r1 = r Exit For End If Next s = r1.FullPath ' Remove the Reference and add it back. References.Remove r1 References.AddFromFile s ' Call a hidden SysCmd to automatically compile and save all modules. Call SysCmd(504, 16483) ============== Решил попробовать. И тут случилось чудо. При исполнении этого кода моя баСа стабильно "падает". Ну все, теперь, кажется точно - экспортировать. Желание "освежить" не нашло выхода и мучило. Стал разглядывать определения членов класса - в нем пара лонгов и пяток форм. Причем вредная - первая по списку, сразу за константами. Твердо намерившись освежить перед экспортом, переставил определения местами - лонги как скобки - первый и последний, а формы внутри. Вредную пихнул в середину. Должен доложить, что ненужное мне без моей воли ps (err 3734) сразу ИСЧЕЗЛО. всякий полезный и интересный код стал активно исполняться, и такое впечатление, что все в целом (открытие форм, резайзинг и тд) прибавило в скорости не чуть-чуть, а в разы. И во всех версиях (2000, 2002), и без всякого экспорта. Ну, и скажет ли мне кто-нибудь, что же именно я наблюл? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2004, 03:08 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
Это большой бубен со сложной внутренней структурой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2004, 13:41 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
To Владимир Саныч Абыдно, Да? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2004, 15:54 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
Канэйшно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2004, 15:56 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
Ну наверняка это где-нить в MSDN описывается. Но мельком и невнятно. Так что бубен, адназначна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2004, 16:11 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
или пишем Deep по Салахетдинову-Каплану. в модуле класса Private WithEvents Form as Form 'метод управления видимостью Public Property Let formVisible(bVisible As Boolean) If bVisible Then Form.Modal = True Form.Visible = bVisible Form.SetFocus Else Form.Visible = bVisible Form.Modal = False End If End Property так вот при таком варианте обращения попадаем в режим контроля доступа по крайней мере на ветке else что-то не до конца понятно - почему же так критично. и как преодолевать. Пока приходится пришибать объект. А лучше бы всю халабуду сразу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 01:49 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
авторIf bVisible Then Form.Modal = True Form.Visible = bVisible Form.SetFocus Else Form.Visible = bVisible Form.Modal = False End If Позволю себе коммент не по делу. Вот так будет то же самое, но короче: Form.Visible = bVisible Form.Modal = bVisible If bVisible Then Form.SetFocus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 01:55 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
да уж - не сомнения, только что-то не до оптимизьма ..., то бишь оптимизации. а это следы шаманизьма такие остались. (((жжж ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 02:00 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
Это (((жжж - неспроста, это жжж к тому, что при таком подходе ( в смысле вываливания в режим контроля доступа) весь этот formVisible не нужен ни эрегированному, ни какому другому ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 02:07 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
Victosha Про 2000 писали - не пользуйся CurrentDB, открывай через ADO и, скорее всего, все будет хорошо. А как открывать CurrentDB тогда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 11:37 |
|
||
|
наблюл:"база приведена в состояние блокировки, препятствующее ее открытию"
|
|||
|---|---|---|---|
|
#18+
про currentDb в этом контексте, я скорее всего, соврал. может поправили - воспроизвести точно не могу. про currentDB есть несколько другая рекомендация - типа не обращайся к ее объектам иначе, как через локальную переменную то есть CurrentDB.Tabledefs - плохо dim db AS DAtabase set db=CurrentDB db.TableDefs - хорошо ЗЫ у меня, конечно, дыра в голове, и немалого размера уже, но придумалось/припомнилось совершенно очтетливо, что вызов CurrentDb в цикле приводит режиму контроля доступа. Попробовал - а не воспроизводится. То ли сервис паки, то ли дыра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2004, 12:05 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32487087&tid=1675209]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
198ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 540ms |

| 0 / 0 |
