|
|
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Известно, что Акцес скидывает значения глобальных переменных при ошибках. Как это обойти? Навскидку думаю создавать в какой-нибудь, скажем, скрытой форме одноименные поля, в которые и складывать значения. Есть ли способ лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 12:49 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Известно, что Акцес скидывает значения глобальных переменных при ошибках. Лично я об этом в первый раз слышу. Можно ссылочку на источник утверждения или примерчик? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 12:51 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Аксес скидывает глобальные переменные при необрабатываемых ошибках. Отсюда вывод - ошибки надо обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 12:56 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Есть в некоем модуле объявление типа Public MyVar as byte В процессе работы что-нибудь туда кладу Private Sub Function Butt1_Click() MyVar = 1 ... Дальше генерицца (против моего желания, конечно:) ошибка. После этого в MyVar будет 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:00 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
2ЛП Логично. Но ведь я не всегда знаю, где будет ошибка :)) и посему не всегда могу ее обработать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:01 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
ох и любит народ скрытые формы уж лучше в табличку писать создай сколько хочешь(до 256 аксес позволяет) полей в этой табличке и только 1 запись( в локальной базе) или с добавлением кода юзера и положи на сервер и выдёргивай когда надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:10 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Нехорошо. Во-первых, я заранее не знаю, сколько и каких переменных буду использовать, поэтому создавать в этой табличке новые поля - еще хуже, чем добавить поле в форму. Во-вторых, к этим переменным я буду обращаться и в запросах, и в циклах. Что быстрее - обратиться к полю открытой формы, или открыть таблицу, прочитать ее запись и посмотреть содержимое поля? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:15 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
А если переменная - обьект? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:17 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
А если переменная - объект... А нек..й объекты в глобальных переменных хранить тогда! Или же надо бояться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:19 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
а не надо всю таблицу читать индексы ещё не кто не отменял сколько у тебя есть глобальнных переменных? 20? 40? 100? например пересчитал свою глобальную переменную - выполнил апдейт и живи дальше а после какой ошибки Асесс сбрасывает значение глобальных переменных? поподробнее пож-та, всем интересно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:26 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Но ведь я не всегда знаю, где будет ошибка :)) Зато я знаю. Ошибка может быть ВСЕГДА и ВЕЗДЕ! Поэтому как минимум все функции верхнего уровня (типа обработчиков событий) должны в обязательном порядке содержать обработку ошибок. Ну еще все функции, которые вызываются из макросов, через Eval и т.п. скотоложество - в них тоже должна быть обработка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:30 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
2TatianaT > сколько у тебя есть глобальнных переменных? 20? 40? 100? Да не знаю. Сегодня 100, завтра 101 и т.д. Или при каждом запуске убивать таблицу и создавать новую? >а после какой ошибки Асесс сбрасывает значение глобальных переменных? В каком-нить модуле: Public MyVar as byte В какой-нить форме: Private Sub Function Butt1_Click() MyVar = 1 MsgBox MyVar MyVar = "qwerty" Вылезает ошибка. Очумевший пользователь после n-й попытки понимает, что после нажатия на кнопку Debug надо перезагружаться, а после End - все вроде-бы работает. Так вот после нажатия на End переменная MyVal становится равной 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:31 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
2ЛП Согласен. Но ведь за всем не уследишь. И непременно профукаешь САМУЮ ГЛАВНУЮ переменную. Обидно, да. Поэтому и хочу от греха хранить их "сбоенезависимо". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:35 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Очумевший пользователь после n-й попытки понимает, что после нажатия на кнопку Debug надо перезагружаться, а после End - все вроде-бы работает Нет, это не я лох позорный Ты зачем вообще оставил пользователю доступ к исходному коду??? Тебе шаловливые пользователи никогда код не правили что-ли? И непременно профукаешь САМУЮ ГЛАВНУЮ переменную Вот ведь лень до чего доводит... Пробегись по всем своим "Private Sub Function Butt1_Click" и впихатй туда обработку ошибок. Тогда и в код не будет падать, и переменные не будут сбрасываться. Писать надо сбоенезависимо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:40 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Есть очень простое решение. Пишешь процедуру, которая задает значения всем глобальным переменным. А дальше в коде в самых критичных местах: If хотя бы одна из глобальных слетела Then вызвать эту процедуру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:41 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
браво ЛП!!! я только подумала, а ты уже написал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:43 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
> Нет, это не я лох позорный \r Зар-раза \r \r > Ты зачем вообще оставил пользователю доступ к исходному коду??? \r > Тебе шаловливые пользователи никогда код не правили что-ли? \r \r Да не везде я могу писать mde!\r /topic/40756\r Кроме того, моя организация имеет деньгу с абонентской поддержки, т.е. программы постоянно находятся в стадии разработки. И не мне это менять.\r \r > Вот ведь лень до чего доводит... \r > Пробегись по всем своим "Private Sub Function Butt1_Click" и впихатй туда\r > обработку ошибок. Тогда и в код не будет падать, и переменные не будут\r > сбрасываться. \r > Писать надо сбоенезависимо\r Плин, да я и так это знаю. Вопрос здесь не только и не столько о моем природном идиотизме, а о хранении глобальных переменных. Если ты скажешь, что в твоих программах в принципе не бывает ошибок, я сам готов собрать тебе памятник из пивных бутылок (невысокий). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:46 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
У меня обработчики ошибок стоят ВЕЗДЕ. Где не стоят, там On Error Resume Next. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:48 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Владимиру Санычу: Согласен. Но некоторые переменные (к примеру текущая организация или р/с) могут меняться в процессе работы в неизвестных местах. И если окажется, что последние пара записей внесены не так, как ожидалось, то (мне) может стать мучительно больно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:51 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
А такие переменные можно держать на форме (даже не на скрытой). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:52 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
2Pavel и остальные. Я в первую очередь исхожу из посылки, что могу в том или ином месте забыть поставить обработчик (что, естественно, переодически и происходит). Или, не дай бог, будет дописывать кто-нибудь еще, кто не знает об этой особенности Access'a. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:53 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Да не везде я могу писать mde! mde-не mde, а конечный пользователь не должен иметь доступа к коду!! Сбросить галку "Просмотр програм после ошибки" в параметрах запуска. При этом, кстати, кнопка "Debug" и недоступна будет. И все начнет сбрасываться Если ты скажешь, что в твоих программах в принципе не бывает ошибок Я скажу что в моих программах не бывает необработанных ошибок. Разницу чуешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:54 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Самое простое для всех глобальных обектов\переменных выделить 1 модуль. В нем же сдеалать (как Саныч рекомендовал) инициализацию - ведь она когда нибудь происходит? Вот это все свести в одну функцию - одну из переменных отслеживать и в случае ее сброса заново выпонять инициализацию. я этот подход использую в принципе только для себя и на стадии разработки - лучше конечно ошибки обрабатывать. == А таблицу из 256 столбцов заводить не надо - лучше 256 текстовых строк - в проге делать преобразование в нужный тип данных. Сейчас вообще думаю вынести настройки проги в сохраненых рекодсет- пусть там валяются в типа зашифрованном виде :) Удобно обновлять бд не трогая файл настроек - хотя этот подход мало чем отличается от обычного mdb для настроек. Но это уже дело вкуса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 13:56 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
Я в первую очередь исхожу из посылки, что могу в том или ином месте забыть поставить обработчик (что, естественно, переодически и происходит). Я не забываю, но меня достало уже один и тот же обработчик (ну, на самом деле их три) вставлять во все функции методом copy-paste. Потому и искал в свое время приблуду для аксеса хр, которая вставляет обработчик сама. По моему, эта приблуда должна быть в девелопере. Или, не дай бог, будет дописывать кто-нибудь еще, кто не знает об этой особенности Access'a. Это уже хуже. Конечно, тот человек сам себе буратинка, но наиболее критичные куски - как Саныч прописал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 14:00 |
|
||
|
Глобальные переменные
|
|||
|---|---|---|---|
|
#18+
2ЛП > Сбросить галку "Просмотр програм после ошибки" в параметрах запуска. Ок. Спасибо. >> Если ты скажешь, что в твоих программах в принципе не бывает ошибок > Я скажу что в моих программах не бывает необработанных ошибок. > Разницу чуешь? Чую. Но это справедливо только для обкатанных некоторое время программ. А у меня, повторюсь, программы постоянно "в стадии разработки". Важный фактор - моя неопытность в акцессе. 2Senin Viktor По первой части согласен полностью, я так и делаю сейчас. Но "сбоенезависимость", думаю, мне все-таки нужна. И, скорее, реализованная посредством формы, а не таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2003, 14:08 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32215603&tid=1680319]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 384ms |

| 0 / 0 |
