powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выборка
17 сообщений из 17, страница 1 из 1
Выборка
    #39823006
F_Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем! Прошу подскажите, возможен ли такой вариант: есть запрос на выборку, в качестве условий отбора хочу прописать функцию Proc, функция проверяет поле со списком и если там есть значение, то выборка идет по этому значению, а если там ничего нет, то должно выбираться все.

Proc = IIf(IsNull([Forms]![Общая]![ПолеСоСписком116]), "*", [Forms]![Общая]![ПолеСоСписком116])

Если значение есть, то все работает, а вот если его нет...то и выборки нет...
Или я хочу чего-то ненормального?
С уважением
Сергей
...
Рейтинг: 0 / 0
Выборка
    #39823020
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F_Sergeyв качестве условий отбора хочу прописать функцию Proc
как вы делаете все остальные действа с базой
--только мастер и внедренные макросы
--программирование тоже применяете


F_Sergeyфункция проверяет поле со списком и если там есть значение
непонятно , вы ищете Иванова
--поле со списком,подстановка
--как же вы занесли в поле фамилию Иванов, если ее нет в справочнике
...
Рейтинг: 0 / 0
Выборка
    #39823030
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже, что меня заклинило --сама не поняла вторую часть предыдущего сообщения
естественно Иванов может быть в справочнике и не быть в основной таблице
а может его и в справочнике нет
...
Рейтинг: 0 / 0
Выборка
    #39823152
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F_Sergey,
в запросе отобразить все: ...WHERE True
отбор: ....WHERE условие
По моему лучше так (или ленточная форма-первая найденная запись выделится):
...
Рейтинг: 0 / 0
Выборка
    #39823160
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
F_Sergey,

Код: sql
1.
where IsNull([Forms]![Общая]![ПолеСоСписком116]) or Proc = [Forms]![Общая]![ПолеСоСписком116]
...
Рейтинг: 0 / 0
Выборка
    #39823168
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перед функцией IIf(IsNull([Forms]![Общая]![ПолеСоСписком116]), "*", [Forms]![Общая]![ПолеСоСписком116]) поставьте оператор Like и получите то то надо. Именно выражение Like "*" означает показать всё, а у вас получается показать "*". А звёздочек то у вас и нет, вот и пусто. И написать всё это надо в условии в самом запросе = Like IIf(IsNull([Forms]![Общая]![ПолеСоСписком116]), "*", [Forms]![Общая]![ПолеСоСписком116]).
...
Рейтинг: 0 / 0
Выборка
    #39823169
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да чуть не забыл, при моём варианте пустых (NUll) значений в выборке не окажется.
...
Рейтинг: 0 / 0
Выборка
    #39823235
F_Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! Like я использовал в самом запросе в условиях отбора, но эта конструкция не работает при переходе на другую версию офиса, с 2013 на 2016. Вот я и задался целью вместо этого варианта написать функцию и в условиях отбора на нее сослаться. Функция срабатывает когда в поле со списком есть информация, а вот звездочка "*" не работает, может можно вместо нее задать какое-то другое условие когда в поле отсутствует что-либо?
С уважением
Сергей
...
Рейтинг: 0 / 0
Выборка
    #39823348
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Geizer1Да чуть не забыл, при моём варианте пустых (NUll) значений в выборке не окажется.
Код: vbnet
1.
SELECT ... FROM ...WHERE IIf(IsNull([Forms]![Общая]![ПолеСоСписком116]); true; полеКкоторомуПрименяетсяУсловие=[Forms]![Общая]![ПолеСоСписком116])

а так окажется
...
Рейтинг: 0 / 0
Выборка
    #39823373
F_Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku, нет True не возвращает "пустое" значение...
...
Рейтинг: 0 / 0
Выборка
    #39823468
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F_Sergey,
...
Рейтинг: 0 / 0
Выборка
    #39823489
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так это выглядит в конструкторе:
...
Рейтинг: 0 / 0
Выборка
    #39823504
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот пример 2-х вариантов решения. Надо отметить что вариант с которого начинали (с оператором Like) будет всегда переберать все строки-записи поочереди, и в результате работать медленнее чем с логикой. Посмотри запросы в режиме конструктора там всё понятно, работать будут оба варианта во всех офисах.
...
Рейтинг: 0 / 0
Выборка
    #39823526
F_Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Geizer1, Спасибо, этот вариант я знаю и использую, но мне нужен вариант именно через функцию, которая в условия выборки будет возвращать либо конкретного поставщика, либо ничего, чтобы выбрать всех...
...
Рейтинг: 0 / 0
Выборка
    #39823600
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
F_SergeyGeizer1, Спасибо, этот вариант я знаю и использую, но мне нужен вариант именно через функцию, которая в условия выборки будет возвращать либо конкретного поставщика, либо ничего, чтобы выбрать всех...
Вот с возвращением значения (Null) у функций как раз и могут быть проблемы, лучше это логикой обходить. А вот значение на (Null) проверить и в условие (Null) вставить это можно.
...
Рейтинг: 0 / 0
Выборка
    #39823610
Geizer1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в базе зарезервировал символ "_" для замены им значения (Null). Конечно это не позволяет его использовать в работе как вводимое значение пользователем, но зато снимает все проблемы (Null).
...
Рейтинг: 0 / 0
Выборка
    #39823687
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F_Sergeyфункция проверяет поле со списком и если там есть значение...
А вариант с тысячами записей в которых фигурирует 200-500 фамилий(вполне реально)-в полеСоСписком окажется 200-500 строк и нужную надо будет искать в списке-не проще ли по начальным буквам,а затем в выборке при щелчке на нужной вывести подробности по ней (когда в базе будет 200-500 фамилий,то и поиск будет после поиска в списке Combo-или Ваша БД расчитана на количество фамилий которые поместятся на экран?)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Выборка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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