Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Basic / VBA


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Basic/VBA

Выпуск № 599
от 27.08.2007, 06:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 299, Экспертов: 43
В номере:Вопросов: 1, Ответов: 3


Вопрос № 99149: Здравствуйте, эксперты! Вопрос опять по ACCESS97 Мне нужно объявить в поцедуре обработки событий, что есле не определен критерий отбора - то его необходимо определить.Критериев 3: поле со списком podr1,поле со списком podr2 и флажок flag1 Я г...

Вопрос № 99.149
Здравствуйте, эксперты! Вопрос опять по ACCESS97
Мне нужно объявить в поцедуре обработки событий, что есле не определен критерий отбора - то его необходимо определить.Критериев 3: поле со списком podr1,поле со списком podr2 и флажок flag1
Я говорю:If Forms!vibor_vrem!flag1.Value = False Then
MsgBox "Установите критерий отбора!"
И работает
Потом:через Оr добавляю Forms!vibor_vrem!podr1.Value = "" и все...приехали - не работает.
Что не так делаю? Подскажите ПЛИЗ!
Отправлен: 21.08.2007, 16:12
Вопрос задала: Maychik (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Филатов Евгений Геннадьевич
Здравствуйте, Maychik!
Если нужно определить хотя бы один из трех критериев отбора, то вид такой:
If NOT ( Forms!vibor_vrem!flag1.Value = True OR Len ( Trim ( Forms!vibor_vrem!podr1.Value ) ) <> 0 OR ( ... другие выполняющиеся условия отбора ... ) )
Then
MsgBox "Установите критерий отбора!"
End If
В скобках идет перечисление условий для выбранных критериев, т.е. если выбран первый критерий, то это Forms!vibor_vrem!flag1.Value = True - поставлена галочка , если выбран второй, то Len ( Trim ( Forms!vibor_vrem!podr1.Value ) ) <> 0 - строка не пустая и т.д.
В итоге результатом операции OR в случае, если хотя бы один критерий определен будет TRUE, после инверсии оператором NOT это значение преобразуется в FALSE и сообщение не выводится.
Если ни один из указанных критериев не определен, то выражение в скобках будет FALSE, и после инверсии преобразуется в TRUE - запускается вывод сообщения.
Желательно еще добавить :
If NOT ...
Then
MsgBox "Установите критерий отбора!"
Else
... выполнение команд на обработку события ....
End If
С уважением.
Ответ отправил: Филатов Евгений Геннадьевич (статус: 8-ой класс)
Ответ отправлен: 21.08.2007, 16:49
Оценка за ответ: 5
Комментарий оценки:
Спасибо!

Отвечает: Черников Игорь Владимирович
Здравствуйте, Maychik!
Если Вы используете ListBox, то используйте его свойство ListIndex.
Он представляет собой индекс выбранного пункта списка. При выборке нескольких пунктов ListIndex представляет индекс последнего выбранного пункта. Если не выбран ни один элемент, значение ListIndex = -1. Это свойство можно использовать для выбора или удаления конкретных пунктов. Так, следующий код удаляет выбранный пункт элемента
List1.RemoveItem List1.ListIndex
Если при вызове метода RemoveItem ни один пункт списка не выбран, значение свойства ListIndex отрицательно. Попытки удалить пункт с отрицательным индексом приводят к ошибке исполнения. После удаления пункта индексы последующих пунктов соответственно перестраиваются

У Вас должно быть:
... Or podr1.ListIndex = -1...
Удачи!
---------
От каждого по способностям, каждому по труду
Ответ отправил: Черников Игорь Владимирович (статус: 4-ый класс)
Ответ отправлен: 21.08.2007, 16:53
Оценка за ответ: 5

Отвечает: Тесленко Евгений Алексеевич
Здравствуйте, Maychik!
Мне кажется, не вдаваясь в тонкости, самым простым вариантом решения Вашей проблемы будет создание функции, возвращающей логическое значение.
И уже в теле зтой функции, раздробить Ваши критерии для нахождениия лшибки.
Удачи.
Евгений.

Приложение:

Ответ отправил: Тесленко Евгений Алексеевич (статус: 9-ый класс)
Ответ отправлен: 21.08.2007, 22:11
Оценка за ответ: 5
Комментарий оценки:
Спасибо, буду пробовать


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.57 от 25.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное