|
|
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Есть mdb-файл, и есть в нем многоразличные процедуры, написанные, есссно, на VBA: в модулях и классах, в формай и отчетах ... в чем там еще? Я открываю этот файл и начинаю что-то в нем делать ... Вопрос: когда, в какой момент, все эти многоразличные процедуры загружается в оперативную память компьютера? Есть среди них те, которые загружаются сразу при открытии mdb-файла? А те, которые загружаются ... не сразу?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 15:48:00 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
а что, это так важно знать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 15:50:39 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Да, это вопрос жизни и смерти! ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 16:21:33 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Загружаются, компилируются и исполняются только те, которые "поставлены" исполняться при стартапе. Можно отключить исполнение, если удерживать при запуске клавишу Shift. Но в память компьютера загружаются сразу все модули VBA, сопровождающие данный файл. При помощи XP Developer'а можно создавать COM-надстройки, которые, если не ошибаюсь, ведут себя как dll, т. е. загружаются только при обращении к ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 16:27:45 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Позвольте уточнить, что означает фраза: Summersonв память компьютера загружаются сразу все модули VBA, сопровождающие данный файл.- ведь ТЕКСТЫ некоторых модулей могут вообще содержать ОШИБКИ, не позволяющие их откомпилировать!? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 16:38:53 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Ivan FXS - других забот нет? :) или задумал свой Access FXS написать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 16:40:29 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
У Гетца это написано: загружаются все функции, находящиеся в модуле при обращении к любой функции из этого модуля. Только там это написано для других целей: рационально разносить фнукции по модулям, чтобы лишние не загружались в память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 16:42:57 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Спасибо, incold, - это важное уточнение! Я, чесссно говоря, тоже помнил - откуда-то - что код, содержащийся в форме (например) - загружается в память только при открытии этой формы ... Но астаивать не решился ... А не подскажите, - "обращение к функции", о котором "у Гетца это написано", - это ее ФАКТИЧЕСКИЙ вызов или просто "упоминание" ее? Например, код: Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 17:09:22 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Иван FXSДа, это вопрос жизни и смерти! ;-) гм - а критерий истинности - положим я скажу грузиться каждый 3 модуль по алфавиту в хэшированном виде - как будем проверять ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 17:10:55 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Например, по объему памяти, выделенному под MS Access ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 17:22:27 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
авторА не подскажите, - "обращение к функции", о котором "у Гетца это написано", - это ее ФАКТИЧЕСКИЙ вызов или просто "упоминание" ее? Вроде бы именно вызов, а не упоминание в коде. Но точно не скажу, Гетца под рукой нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 17:26:33 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Иван FXSНапример, по объему памяти, выделенному под MS Access ... Access память не освобождает без закрытия mdb - увидеть последующие оверлеи не удастся - т.е. по обьёму не выход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 18:05:41 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
авторAccess память не освобождает без закрытия mdb - увидеть последующие оверлеи не удастся - т.е. по обьёму не выход Не знаю для чего автору топика такая информация, но знать это не помешает. Например: есть различные рабочие места и одна программа разные пользователи используют разные разделы программы если все функции свалить в одну кучу (т.е. модуль) то при вызове первой же функции все (в т.ч. ненужное) загрузится в память если же разумно разделить функции по модулям то в память будут подгружаться модули по мере использования. Конечно для тех, у кого рабочие станции PIV + 512 RAM этот вопрос не актуален ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 18:16:31 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Иван FXSА не подскажите, - "обращение к функции", о котором "у Гетца это написано", - это ее ФАКТИЧЕСКИЙ вызов или просто "упоминание" ее? Например, код: Код: plaintext 1. 2. тест: написать в новый модуль ф-ю aaa() с ошибкой КОМПИЛЯЦИИ , вызвать ф-ю test_aaa() ДРУГОГО модуля , имеющую в теле данный код (If FALSE Then call aaa(1)). Если ф-я исполнится, - значит аксесс не пытался "разместить в памяти" (т.е., в т.ч. откомпилировать aaa() И ее модуль) Если не исп-ся - пытался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.11.2004, 18:19:05 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Проверить загружены ли модули в память можно так: Код: plaintext 1. 2. 3. 4. Загрузить в память можно (как уже сказали) при первом вызове любой процедуры/функции из модуля. Правда не сказали - зачем это нужно - наверное одна из попыток "оптимизировать" работы программы :) но скорей весего не с того конца подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 09:33:20 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Конечно не с того! Вот например, код обработки необрабатываемых (гы) ошибок, ну тот, который кричит юзеру, типа, не знаю чё и делать, зови папу-программера, или код, который в тихаря пишет лог ошибок и правит их к папе - надо, конечно, разместить в одном модуле со старт-аповыми функциями. Ну что бы было! Правда, ошибки подобного рода не случаются уже давным-давно, но все равно, это мелочь ведь... Или например, формирование квартального отчета. Ну не, не средствами стандартного Репорта, а собстными силами, так сказать. Тоже в тот же модуль! А вдруг квартал бывает каждый день? Или вон, как Инколд заметил про многопрофильность... Ну и нефик! Пусть у кладовщиков в памяти валяются функции маркетологов! А пусть приучаются к "доброму-светлому-вечному", а то всё остатки, да остатки... Или, опять же, функции импорта данных от удаленных филиалов. Ну вот почему бы им не грузиться в память сразу всех машин? Правильно, ни почему... А вдруг именно вот на этой из десятка машин будут делать импорт... 2 раза в неделю... Полностью согласен с предыдущим оратором! Нефик так оптимизировать, и вообще, нефик это знать! Я пральна понял? з.ы. Гео, а с этим-то постом всё нормально? Соответствует Правилам? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 11:28:23 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
а ещё архитектура у Intel/AMD фон-неймановская - посему и все данные хранятся здесь-же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 12:21:34 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
А я то тут при чем?! Я что, учил Билла оставлять в памяти загруженные модули до терминирования процесса? Я, если честно, вообще не знал, что такое "процесс" в Вындоус :) А данные... Данные в Акцессе могут быть выгружены (вытеснены из кэша), в отличии от модулей, поэтому в контексте данного обсуждения рассматриваться не должны! ИМХО С уважением, Ваш Нейм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 13:06:17 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Senin ViktorПроверить загружены ли модули в память можно так: Код: plaintext 1. 2. 3. 4. Загрузить в память можно (как уже сказали) при первом вызове любой процедуры/функции из модуля. Правда не сказали - зачем это нужно - наверное одна из попыток "оптимизировать" работы программы :) но скорей весего не с того конца подход. потыкал кнопочки. Кажется .IsLoaded показывает не "загружен ли в память" , а открыт ли "объект" (после запуска ф-ий из любого модуля он (модуль) у меня не .IsLoaded, если не открыт в окне VBA - т.е. IsLoaded для него адекватно появлению в Application.Modules). Или я чего-то не так понимаю? Вот даже и тест: поместил процедуру от Senin Viktor в (Module1 ) и ее вызов - в код ф-ии из модуля uFileDirFunctions, закрыл все _окна_ модулей и запустил: Immediate:?CurrentDbPath ... uFileDirFunctions -> False ... Module1 -> False C:\...\уть т.е.\ ну неушшшш-то Аксесс выгружает модуль из памяти только для того, чтобы напечатать строчку в дебуг? т.ч. в явном виде модули БД на загруженность себя в память не стучат. Но основная проблема, как я понял не в том, как загрузить, а в том, как выгрузить. Может быть пихать все что можно в модули форм (или классов)? Уж они то, вроде, должны выгружаться при удалении последней ссылки на них (или их экземпляры). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 13:30:12 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
4321пускНо основная проблема, как я понял не в том, как загрузить, а в том, как выгрузить. Может быть пихать все что можно в модули форм (или классов)? Уж они то, вроде, должны выгружаться при удалении последней ссылки на них (или их экземпляры). Не-не-не! Мы не выгружаемся! При удалении последней ссылки мы просто освобождаем память, выделенную под ДАННЫЕ класса (ну там, переменные, которые описаны в классе), а код (т.е. методы) остаются в памяти... Точно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 13:41:22 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Модули классов Не-не-не! Мы не выгружаемся! При удалении последней ссылки мы просто освобождаем память, выделенную под ДАННЫЕ класса (ну там, переменные, которые описаны в классе), а код (т.е. методы) остаются в памяти... Точно... Ах да. Да еще чё-то там с какой-то таблицей было... Помню, што читал. Не помню, - што читал. Давно это было. А че, методы в натуре круче свойств(ов), что им - постоянная прописка, а свойствам - временная? Или промеж их таки есть какая завалященькая справедливость? Может таки выгружает VB код иногда? Вот если я какой-нть ад-инн поюзал, его код так и провисит до конца в памяти, или отвалится таки? Может через разделения на взаимоссылающиеся приложения вопрос этот порешить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 14:08:47 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Фон-НейманА я то тут при чем?! Я что, учил Билла оставлять в памяти загруженные модули до терминирования процесса? Я, если честно, вообще не знал, что такое "процесс" в Вындоус :) А данные... старый чёрт - забыл что у тебя данные и программа сидят в ОДНОМ пространстве ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 14:34:51 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
корочеА че, методы в натуре круче свойств(ов), что им - постоянная прописка, а свойствам - временная? Или промеж их таки есть какая завалященькая справедливость? Да есть я, есть я между ними... Методы - это как раз и есть код, который одинаков для всех объектов, созданных на основе данного класса. Т.е. метод DieBeach выполняется одним и тем же кодом для всех объектов данного класса. Но вот значения свойств объектов разные! Например свойство BeachName моежет быть у разных объектов разным - у одного "МарияИзольда", а у другого "МайклДжексон". И хранить их надо в разных местах, хотя "обработать" можно одним и тем же кодом. Капиш? корочеВот если я какой-нть ад-инн поюзал, его код так и провисит до конца в памяти, или отвалится таки? Может через разделения на взаимоссылающиеся приложения вопрос этот порешить? Себя ради должна сказать, что инфа на ЭТУ тему отсутствует... Извиняюся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 14:37:20 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
Гарвардстарый чёрт - забыл что у тебя данные и программа сидят в ОДНОМ пространстве ? Дык... это... А чего сразу я? И вообще, по какому поводу то? Нда... Альцгеймер никого не пощадит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2004, 14:40:09 |
|
||
|
Q: когда код VBA (в MS Access) загружается в оперативную память компьютера?
|
|||
|---|---|---|---|
|
#18+
4321 Senin ViktorПроверить загружены ли модули в память можно так: Код: plaintext 1. 2. 3. 4. Загрузить в память можно (как уже сказали) при первом вызове любой процедуры/функции из модуля. Правда не сказали - зачем это нужно - наверное одна из попыток "оптимизировать" работы программы :) но скорей весего не с того конца подход. потыкал кнопочки. Кажется .IsLoaded показывает не "загружен ли в память" , а открыт ли "объект" (после запуска ф-ий из любого модуля он (модуль) у меня не .IsLoaded, если не открыт в окне VBA - т.е. IsLoaded для него адекватно появлению в Application.Modules). Или я чего-то не так понимаю? Вот даже и тест: поместил процедуру от Senin Viktor в (Module1 ) и ее вызов - в код ф-ии из модуля uFileDirFunctions, закрыл все _окна_ модулей и запустил: Immediate:?CurrentDbPath ... uFileDirFunctions -> False ... Module1 -> False C:\...\уть т.е.\ ну неушшшш-то Аксесс выгружает модуль из памяти только для того, чтобы напечатать строчку в дебуг? т.ч. в явном виде модули БД на загруженность себя в память не стучат. Но основная проблема, как я понял не в том, как загрузить, а в том, как выгрузить. Может быть пихать все что можно в модули форм (или классов)? Уж они то, вроде, должны выгружаться при удалении последней ссылки на них (или их экземпляры). Ты прав :( Действительно IsLoaded - лишь только загрузка в IDE VBA. Почему то я считал иначе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2004, 09:40:50 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32766623&tid=1670543]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 418ms |

| 0 / 0 |
