Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Глобальные переменные / 25 сообщений из 100, страница 1 из 4
23.07.2003, 12:49
    #32215463
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Известно, что Акцес скидывает значения глобальных переменных при ошибках. Как это обойти? Навскидку думаю создавать в какой-нибудь, скажем, скрытой форме одноименные поля, в которые и складывать значения. Есть ли способ лучше?
...
Рейтинг: 0 / 0
23.07.2003, 12:51
    #32215471
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Известно, что Акцес скидывает значения глобальных переменных при ошибках.
Лично я об этом в первый раз слышу. Можно ссылочку на источник утверждения или примерчик?
...
Рейтинг: 0 / 0
23.07.2003, 12:56
    #32215481
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Аксес скидывает глобальные переменные при необрабатываемых ошибках.
Отсюда вывод - ошибки надо обрабатывать.
...
Рейтинг: 0 / 0
23.07.2003, 13:00
    #32215497
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Есть в некоем модуле объявление типа

Public MyVar as byte

В процессе работы что-нибудь туда кладу

Private Sub Function Butt1_Click()
MyVar = 1
...

Дальше генерицца (против моего желания, конечно:) ошибка. После этого в MyVar будет 0.
...
Рейтинг: 0 / 0
23.07.2003, 13:01
    #32215501
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
2ЛП
Логично. Но ведь я не всегда знаю, где будет ошибка :)) и посему не всегда могу ее обработать.
...
Рейтинг: 0 / 0
23.07.2003, 13:10
    #32215535
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
ох и любит народ скрытые формы

уж лучше в табличку писать
создай сколько хочешь(до 256 аксес позволяет) полей в этой табличке и только 1 запись( в локальной базе) или с добавлением кода юзера и положи на сервер
и выдёргивай когда надо
...
Рейтинг: 0 / 0
23.07.2003, 13:15
    #32215544
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Нехорошо. Во-первых, я заранее не знаю, сколько и каких переменных буду использовать, поэтому создавать в этой табличке новые поля - еще хуже, чем добавить поле в форму. Во-вторых, к этим переменным я буду обращаться и в запросах, и в циклах. Что быстрее - обратиться к полю открытой формы, или открыть таблицу, прочитать ее запись и посмотреть содержимое поля?
...
Рейтинг: 0 / 0
23.07.2003, 13:17
    #32215550
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
А если переменная - обьект?
...
Рейтинг: 0 / 0
23.07.2003, 13:19
    #32215559
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
А если переменная - объект...

А нек..й объекты в глобальных переменных хранить тогда! Или же надо бояться...
...
Рейтинг: 0 / 0
23.07.2003, 13:26
    #32215575
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
а не надо всю таблицу читать
индексы ещё не кто не отменял
сколько у тебя есть глобальнных переменных? 20? 40? 100?
например пересчитал свою глобальную переменную - выполнил апдейт и живи дальше

а после какой ошибки Асесс сбрасывает значение глобальных переменных?
поподробнее пож-та, всем интересно
...
Рейтинг: 0 / 0
23.07.2003, 13:30
    #32215586
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Но ведь я не всегда знаю, где будет ошибка :))
Зато я знаю.
Ошибка может быть ВСЕГДА и ВЕЗДЕ!
Поэтому как минимум все функции верхнего уровня (типа обработчиков событий) должны в обязательном порядке содержать обработку ошибок.
Ну еще все функции, которые вызываются из макросов, через Eval и т.п. скотоложество - в них тоже должна быть обработка.
...
Рейтинг: 0 / 0
23.07.2003, 13:31
    #32215588
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
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.
...
Рейтинг: 0 / 0
23.07.2003, 13:35
    #32215595
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
2ЛП
Согласен. Но ведь за всем не уследишь. И непременно профукаешь САМУЮ ГЛАВНУЮ переменную. Обидно, да. Поэтому и хочу от греха хранить их "сбоенезависимо".
...
Рейтинг: 0 / 0
23.07.2003, 13:40
    #32215600
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Очумевший пользователь после n-й попытки понимает, что после нажатия на кнопку Debug надо перезагружаться, а после End - все вроде-бы работает
Нет, это не я лох позорный
Ты зачем вообще оставил пользователю доступ к исходному коду???
Тебе шаловливые пользователи никогда код не правили что-ли?

И непременно профукаешь САМУЮ ГЛАВНУЮ переменную
Вот ведь лень до чего доводит...
Пробегись по всем своим "Private Sub Function Butt1_Click" и впихатй туда обработку ошибок. Тогда и в код не будет падать, и переменные не будут сбрасываться.
Писать надо сбоенезависимо
...
Рейтинг: 0 / 0
23.07.2003, 13:41
    #32215602
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Есть очень простое решение. Пишешь процедуру, которая задает значения всем глобальным переменным. А дальше в коде в самых критичных местах:

If хотя бы одна из глобальных слетела Then вызвать эту процедуру
...
Рейтинг: 0 / 0
23.07.2003, 13:43
    #32215603
TatianaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
браво ЛП!!!
я только подумала, а ты уже написал
...
Рейтинг: 0 / 0
23.07.2003, 13:46
    #32215608
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
> Нет, это не я лох позорный \r
Зар-раза \r
\r
> Ты зачем вообще оставил пользователю доступ к исходному коду??? \r
> Тебе шаловливые пользователи никогда код не правили что-ли? \r
\r
Да не везде я могу писать mde!\r
/topic/40756\r
Кроме того, моя организация имеет деньгу с абонентской поддержки, т.е. программы постоянно находятся в стадии разработки. И не мне это менять.\r
\r
> Вот ведь лень до чего доводит... \r
> Пробегись по всем своим "Private Sub Function Butt1_Click" и впихатй туда\r
> обработку ошибок. Тогда и в код не будет падать, и переменные не будут\r
> сбрасываться. \r
> Писать надо сбоенезависимо\r
Плин, да я и так это знаю. Вопрос здесь не только и не столько о моем природном идиотизме, а о хранении глобальных переменных. Если ты скажешь, что в твоих программах в принципе не бывает ошибок, я сам готов собрать тебе памятник из пивных бутылок (невысокий).
...
Рейтинг: 0 / 0
23.07.2003, 13:48
    #32215614
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
У меня обработчики ошибок стоят ВЕЗДЕ. Где не стоят, там On Error Resume Next.
...
Рейтинг: 0 / 0
23.07.2003, 13:51
    #32215621
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Владимиру Санычу:
Согласен. Но некоторые переменные (к примеру текущая организация или р/с) могут меняться в процессе работы в неизвестных местах. И если окажется, что последние пара записей внесены не так, как ожидалось, то (мне) может стать мучительно больно.
...
Рейтинг: 0 / 0
23.07.2003, 13:52
    #32215624
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
А такие переменные можно держать на форме (даже не на скрытой).
...
Рейтинг: 0 / 0
23.07.2003, 13:53
    #32215628
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
2Pavel и остальные.

Я в первую очередь исхожу из посылки, что могу в том или ином месте забыть поставить обработчик (что, естественно, переодически и происходит). Или, не дай бог, будет дописывать кто-нибудь еще, кто не знает об этой особенности Access'a.
...
Рейтинг: 0 / 0
23.07.2003, 13:54
    #32215629
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Да не везде я могу писать mde!
mde-не mde, а конечный пользователь не должен иметь доступа к коду!!
Сбросить галку "Просмотр програм после ошибки" в параметрах запуска. При этом, кстати, кнопка "Debug" и недоступна будет. И все начнет сбрасываться

Если ты скажешь, что в твоих программах в принципе не бывает ошибок
Я скажу что в моих программах не бывает необработанных ошибок. Разницу чуешь?
...
Рейтинг: 0 / 0
23.07.2003, 13:56
    #32215634
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Самое простое для всех глобальных обектов\переменных выделить 1 модуль.
В нем же сдеалать (как Саныч рекомендовал) инициализацию - ведь она когда нибудь происходит? Вот это все свести в одну функцию - одну из переменных отслеживать и в случае ее сброса заново выпонять инициализацию.
я этот подход использую в принципе только для себя и на стадии разработки - лучше конечно ошибки обрабатывать.

==
А таблицу из 256 столбцов заводить не надо - лучше 256 текстовых строк - в проге делать преобразование в нужный тип данных. Сейчас вообще думаю вынести настройки проги в сохраненых рекодсет- пусть там валяются в типа зашифрованном виде :) Удобно обновлять бд не трогая файл настроек - хотя этот подход мало чем отличается от обычного mdb для настроек. Но это уже дело вкуса.
...
Рейтинг: 0 / 0
23.07.2003, 14:00
    #32215644
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
Я в первую очередь исхожу из посылки, что могу в том или ином месте забыть поставить обработчик (что, естественно, переодически и происходит).
Я не забываю, но меня достало уже один и тот же обработчик (ну, на самом деле их три) вставлять во все функции методом copy-paste. Потому и искал в свое время приблуду для аксеса хр, которая вставляет обработчик сама. По моему, эта приблуда должна быть в девелопере.

Или, не дай бог, будет дописывать кто-нибудь еще, кто не знает об этой особенности Access'a.
Это уже хуже. Конечно, тот человек сам себе буратинка, но наиболее критичные куски - как Саныч прописал.
...
Рейтинг: 0 / 0
23.07.2003, 14:08
    #32215658
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глобальные переменные
2ЛП
> Сбросить галку "Просмотр програм после ошибки" в параметрах запуска.
Ок. Спасибо.

>> Если ты скажешь, что в твоих программах в принципе не бывает ошибок
> Я скажу что в моих программах не бывает необработанных ошибок.
> Разницу чуешь?

Чую. Но это справедливо только для обкатанных некоторое время программ. А у меня, повторюсь, программы постоянно "в стадии разработки". Важный фактор - моя неопытность в акцессе.

2Senin Viktor
По первой части согласен полностью, я так и делаю сейчас. Но "сбоенезависимость", думаю, мне все-таки нужна. И, скорее, реализованная посредством формы, а не таблицы.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Глобальные переменные / 25 сообщений из 100, страница 1 из 4
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]