Вопрос № 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 Комментарий оценки: Спасибо, буду пробовать