|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Добрый день. Вызываю в процедуре функцию, передаю ей параметр - не работает. Останавливаю функцию - параметр передается, но не отрабатывается. Уходит все время на True. Причем если задавать параметр текстовым, то все работает. Если тип любой другой - не работает. Что делаю не так? Код: vbnet 1. 2. 3.
Код: vbnet 1. 2. 3. 4.
Код: vbnet 1. 2. 3. 4.
Public Function ColorFT(Color_FT As Boolean) Select Case Color_FT Case Color_FT = False ... Case Color_FT = True ... End Select End Function ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 13:18 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
БанджоPublic Function ColorFT(Color_FT As Boolean) Select Case Color_FT Case Color_FT = False ... Case Color_FT = True ... End Select End Functionкрасное - убрать ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 13:40 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Здесь тоже - все красное убрать.Банджо Код: vbnet 1. 2. 3.
Код: vbnet 1. 2. 3. 4. 5.
Код: vbnet 1. 2. 3. 4. 5.
Public Function ColorFT(Color_FT As Boolean) Select Case Color_FT Case Color_FT = False ... Case Color_FT = True ... End Select End Function ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 13:51 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
8772красное - убрать Да... чет я совсем того.. спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 14:19 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
__Michelle, да, я так тоже писал, но поскольку не работало, уже полный код вставил, думаю что ж такое.. (. Теперь верну короткий. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 14:20 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
__Michelle, а вот Dim Color_FT As Boolean почему убрать? Ее ж надо объявить? Или в самой функции достаточно? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 14:22 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Банджо__Michelle, а вот Dim Color_FT As Boolean почему убрать? Ее ж надо объявить? Или в самой функции достаточно????!!! Это совершенно разные Color_FT. То, что объявлено в общей области, нигде, судя по коду, не используется. Дополнительно; В процедурах обработки событий Вход/Выход только вызов функции? Тогда почему не прописать это не в VBA, а просто в конструкторе =ColorFT(True)/=ColorFT(False) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 14:42 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Mina Anna Mazzini__Michelle, и все-таки хотелось бы услышать начальника транспортного цеха... 18335125 18355293 .))) По второму пункту - абсолютно согласна с 8772. Просто не стала убирать из текста ТС, ведь уже было сказано. По первому - отвечу чуть позже, сейчас срочно убегаю... ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 17:07 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Удивительное дело! Собралась ответить, а исходного сообщения-то и нет... Что такое, неужели новый виток Звездных Войн? Ощущение странноватое: то ли зыбучие пески, то ли Кафка... Может, модераторам стоит оставлять пометку типа "Очищено по такой-то причине..."? Но, к делу. Mina Anna Mazzini, 1. Сначала уточнения и дополнения по второму пункту - там Select Case для всего двух вариантов, True и False, поэтому я бы ограничилась конструкцией If Color_FT Then ...... Else ...... End If 2. Так. Только что для ответа по первому пункту хотела освежить в памяти его формулировку. Но там тоже все стерто. Господа модераторы, что это? Ладно, попробую, как помню. - Сначала было о том, что, согласно best practice, нужно не If z = True Then, а If z Then. Да. Именно так всегда и делаю. Но там шла речь о баге Access, нейтрализовывался который добавлением "= True". То есть, это была вынужденная мера. - Потом предлагалось использовать CBool(z). Вообще-то там дело было не в том, что неверно распознается z как Boolean, ведь программа отрабатывала нормально. Но в конце не закрывался Access. Но проверить бы не мешало. Только для этого нужно найти машину с Acc97, так как это его баг. И чтобы ситуация воспроизводилась. Пока не удалось. Даже поставила на ноутбук Acc97, но ошибка не возникает, может, потому, что Win 7. Но я об этом помню, при возможности проверю. Надеюсь, текст дойдет по назначению.))) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2015, 23:57 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
__MichelleНо там шла речь о баге Access, нейтрализовывался который добавлением "= True".Баг? Ну незнаю... ИМХО, дело в неправильном написании. Код: vbnet 1.
VBA многое "прощает"... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 05:31 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Панург__MichelleНо там шла речь о баге Access, нейтрализовывался который добавлением "= True".Баг? Ну незнаю... ИМХО, дело в неправильном написании. Код: vbnet 1.
VBA многое "прощает"...Явное указание Me, как и явное указание Value , не является обязательным . У меня их отсутствие никогда не приводило к погрешностям в работе программы. Однако, при возможности, проверю и эту версию. Хотя бы для того, чтобы ее исключить. Но только для Value, так как баг проявляется при Parent, забыла сразу пояснить. Что касается "баг-не баг", то вот, пожалуйста, что об этом на rusimport, hiprog, cyberforum: http://am.rusimport.ru/MsAccess/topic.aspx?ID=107 Не закрывается окно Access. Официальная ошибка Microsoft. http://hiprog.com/index.php?option=com_content&task=view&id=146 Не закрывается окно ACCESS... Это действительно глюк, но исправимый. http://www.cyberforum.ru/ms-access/thread473289.html это ошибка самого Microsoft Access. И, конечно, на sql.ru Аccess не закрывается Речь идет о баге. При этом в статьях по этим ссылкам практически везде используют полный синтаксис типа Me.Parent.chkBox (правда, без Value). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 08:54 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
__MichelleЯвное указание Me, как и явное указание Value , не является обязательным .То, что свойство Value в данном случае необязательно к употреблению соглашусь, т.е. это свойство по умолчанию. Просмотрев по диагонали вышеприведённые ссылки, ещё больше укрепился во мнении, что требуется делать так 18356933 . Видимо там действительно баг со свойством по умолчанию. Получают не свойство контрола, а сам контрол, ИМХО. Сами же себе раскладываем грабли... Никогда не игнорирую обращение внутри класса к самому себе через Me. Мне нетрудно написать пару-тройку знаков. Да и код становится структурированным и легкочитаемым. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 09:31 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
[quot Панург]__MichelleВидимо там действительно баг со свойством по умолчанию. Получают не свойство контрола, а сам контрол, ИМХО. Мне кажется, тогда возникла бы ошибка времени выполнения. Но этого не было. И только в самом конце - окно Access висит, закрывается только из диспетчера задач. Жаль, что пока негде проверить. Вдруг, Вы правы... Тогда действительно мой подход "все, что можно игнорировать - игнорировать" нужно заменить на Ваш "все, что можно указать - указать". Интересно, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 09:50 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
У меня ошибка в цитировании. Правильно так:ПанургВидимо там действительно баг со свойством по умолчанию. Получают не свойство контрола, а сам контрол, ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 09:52 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
__MichelleЯвное указание Me, как и явное указание Value , не является обязательным . Это верно. НО... Во-первых, явное их указание конкретизирует требуемый объект. Устранение неоднозначности - всегда благо. Попробуйте загрузить несколько экземпляров формы (особенно MDI) и обращаться к её контролам без указания родительского экземпляра - не ёкнет? Во-вторых, надеяться на умолчания как минимум опасно. Представьте, что мы отсабклассили контрол - где гарантия, что свойство по умолчанию таковым и останется? Эти самые "необязательно" мной, например, однозначно воспринимаются как "медвежья услуга". Такая же, как неявное описание переменных или неявное приведение типов. Легко можно получить практически неловимый косяк, просто потому, что сработала спрятанная от тебя логика - оно надо? со своей бы не запутаться. Кстати, по тем же (и некоторым другим) причинам я всегда рекомендую не экономить объектные переменные. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 10:30 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
__MichelleТогда действительно мой подход "все, что можно игнорировать - игнорировать" нужно заменить на Ваш "все, что можно указать - указать". Интересно, конечно.Ну уж нет, фанатизма такого у меня нет. Я широко использую сокращение кода на свойствах по умолчанию. Более того, сам прописываю такие свойства в классах, когда часто приходится пользоваться определённым свойством самописного класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 10:37 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Akina, хорошо сказал! Полностью поддерживаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 10:39 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
ТруА то я что-то не могу соотнести с жизнью... Если речь идет об As Object, то меня их вообще нет. За крайне редким исключением, когда я пишу, к примеру, какую-нибудь универсальщину, и не знаю - какой контрол будет передан в обрабатывающую ф-ция.Не пользуешься поздним связыванием? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 10:43 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
ТруПанургпропущено... Не пользуешься поздним связыванием? Практически нет.Значит и Object ненужен, хватит Control . Часто использую конструкцию With ... End With вместо Object . ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 10:52 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Очень интересное и полезное для меня обсуждение. Спасибо всем! Конечно, хотелось бы знать и применять позднее связывание. При переводе из одной версии в другую часто приходится вручную переопределять отвалившиеся библиотеки. При позднем связывании этого не потребуется? Еще интересует, работает ли оно в MDE? Я пока совершенно не представляю, что это такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2015, 17:49 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Возвращаюсь к обсуждаемому выше багу прошлых лет - зависанию окна Access при завершении работы, если в программе использовалась конструкция If Parent.z Then, где Parent.z - флажок в родительском окне. Нашлась машина, где эту ситуацию удалось воспроизвести. Проверила предложения по исправлению от Mina Anna Mazzini - использовать CBool(Parent.z) и Панург - использовать Parent.z.Value. Результат: оба способа прекрасно действуют - Access не зависает. Вот что значит, уметь зреть (зрить?) в корень! P.S. Но жаль, что некоторые сообщения на эту тему здесь удалены. Было что-то интересное от Mina Anna Mazzini о разнице в трактовке флажка VB и VBA. P.P.S. Ну, и заодно. В теме Помогите составить SQL-запрос также было удалено сообщение Mina Anna Mazzini с вопросом, почему в качестве фиктивной таблицы предлагается использовать msysobjects, а не к.-л. реальную таблицу запроса. Вроде пустяк, ответ, видимо, что-то вроде "так исторически сложилось"... А вот и нет. У ТС с msysobjects не сработало, а с таблицей запроса - да. Почему, так и повисло в воздухе... Понимаю, что чистится под горячую руку, но все же, не в ущерб бы общему смыслу... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 12:49 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
__Michelle... Результат: оба способа прекрасно действуют - Access не зависает. ... Особливо прекрасно, когда значение флажка Null. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 16:13 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
Predeclared, Ну не знаю, я всегда ставлю значение по умолчанию - чаще всего требуется False. Но ведь при Null, без Nz(...) всегда будет Invalid use of Null, независимо от версии Access, это будет стандартная ошибка времени исполнения. Это к рассматриваемому вопросу не относится. А баг, о котором речь, был характерен для Acc97, у меня под Win XP, под Win 7 не обнаруживается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 16:45 |
|
Не отрабатывается параметр в функции
|
|||
---|---|---|---|
#18+
__Michelle... Но ведь при Null, без Nz(...) всегда будет Invalid use of Null, независимо от версии Access, ... Не всегда. Во всяком случае не на моем А2003 SP3. В варианте от Панург, например: Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 18:32 |
|
|
start [/forum/topic.php?fid=45&msg=39092068&tid=1614283]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 332ms |
total: | 469ms |
0 / 0 |