Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Выборка  [new]
F_Sergey
Member

Откуда:
Сообщений: 42
Добрый день всем! Прошу подскажите, возможен ли такой вариант: есть запрос на выборку, в качестве условий отбора хочу прописать функцию Proc, функция проверяет поле со списком и если там есть значение, то выборка идет по этому значению, а если там ничего нет, то должно выбираться все.

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

Если значение есть, то все работает, а вот если его нет...то и выборки нет...
Или я хочу чего-то ненормального?
С уважением
Сергей
5 июн 19, 17:50    [21902832]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4599
F_Sergey
в качестве условий отбора хочу прописать функцию Proc

как вы делаете все остальные действа с базой
--только мастер и внедренные макросы
--программирование тоже применяете


F_Sergey
функция проверяет поле со списком и если там есть значение

непонятно , вы ищете Иванова
--поле со списком,подстановка
--как же вы занесли в поле фамилию Иванов, если ее нет в справочнике
5 июн 19, 18:05    [21902853]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
ПЕНСИОНЕРКА
Member

Откуда: Владимирская обл
Сообщений: 4599
похоже, что меня заклинило --сама не поняла вторую часть предыдущего сообщения
естественно Иванов может быть в справочнике и не быть в основной таблице
а может его и в справочнике нет
5 июн 19, 18:11    [21902866]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
F_Sergey,
в запросе отобразить все: ...WHERE True
отбор: ....WHERE условие
По моему лучше так (или ленточная форма-первая найденная запись выделится):

К сообщению приложен файл (tmp.rar - 22Kb) cкачать
6 июн 19, 00:13    [21903034]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
Swa111
Member

Откуда:
Сообщений: 104
F_Sergey,

where IsNull([Forms]![Общая]![ПолеСоСписком116]) or Proc = [Forms]![Общая]![ПолеСоСписком116]
6 июн 19, 00:33    [21903043]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
Geizer1
Member

Откуда: Томск
Сообщений: 58
Перед функцией IIf(IsNull([Forms]![Общая]![ПолеСоСписком116]), "*", [Forms]![Общая]![ПолеСоСписком116]) поставьте оператор Like и получите то то надо. Именно выражение Like "*" означает показать всё, а у вас получается показать "*". А звёздочек то у вас и нет, вот и пусто. И написать всё это надо в условии в самом запросе = Like IIf(IsNull([Forms]![Общая]![ПолеСоСписком116]), "*", [Forms]![Общая]![ПолеСоСписком116]).
6 июн 19, 02:03    [21903054]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
Geizer1
Member

Откуда: Томск
Сообщений: 58
Да чуть не забыл, при моём варианте пустых (NUll) значений в выборке не окажется.
6 июн 19, 02:11    [21903055]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
F_Sergey
Member

Откуда:
Сообщений: 42
Добрый день! Like я использовал в самом запросе в условиях отбора, но эта конструкция не работает при переходе на другую версию офиса, с 2013 на 2016. Вот я и задался целью вместо этого варианта написать функцию и в условиях отбора на нее сослаться. Функция срабатывает когда в поле со списком есть информация, а вот звездочка "*" не работает, может можно вместо нее задать какое-то другое условие когда в поле отсутствует что-либо?
С уважением
Сергей
6 июн 19, 09:23    [21903147]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
Geizer1
Да чуть не забыл, при моём варианте пустых (NUll) значений в выборке не окажется.
SELECT ... FROM ...WHERE IIf(IsNull([Forms]![Общая]![ПолеСоСписком116]); true; полеКкоторомуПрименяетсяУсловие=[Forms]![Общая]![ПолеСоСписком116])
а так окажется
6 июн 19, 12:02    [21903333]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
F_Sergey
Member

Откуда:
Сообщений: 42
sdku, нет True не возвращает "пустое" значение...
6 июн 19, 12:34    [21903367]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
F_Sergey,

К сообщению приложен файл. Размер - 37Kb
6 июн 19, 14:18    [21903524]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
вот так это выглядит в конструкторе:

К сообщению приложен файл. Размер - 11Kb
6 июн 19, 14:32    [21903550]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
Geizer1
Member

Откуда: Томск
Сообщений: 58
Вот пример 2-х вариантов решения. Надо отметить что вариант с которого начинали (с оператором Like) будет всегда переберать все строки-записи поочереди, и в результате работать медленнее чем с логикой. Посмотри запросы в режиме конструктора там всё понятно, работать будут оба варианта во всех офисах.

К сообщению приложен файл (Выборки.rar - 46Kb) cкачать
6 июн 19, 14:49    [21903584]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
F_Sergey
Member

Откуда:
Сообщений: 42
Geizer1, Спасибо, этот вариант я знаю и использую, но мне нужен вариант именно через функцию, которая в условия выборки будет возвращать либо конкретного поставщика, либо ничего, чтобы выбрать всех...
6 июн 19, 15:09    [21903627]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
Geizer1
Member

Откуда: Томск
Сообщений: 58
F_Sergey
Geizer1, Спасибо, этот вариант я знаю и использую, но мне нужен вариант именно через функцию, которая в условия выборки будет возвращать либо конкретного поставщика, либо ничего, чтобы выбрать всех...

Вот с возвращением значения (Null) у функций как раз и могут быть проблемы, лучше это логикой обходить. А вот значение на (Null) проверить и в условие (Null) вставить это можно.
6 июн 19, 16:53    [21903753]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
Geizer1
Member

Откуда: Томск
Сообщений: 58
Я в базе зарезервировал символ "_" для замены им значения (Null). Конечно это не позволяет его использовать в работе как вводимое значение пользователем, но зато снимает все проблемы (Null).
6 июн 19, 17:04    [21903771]     Ответить | Цитировать Сообщить модератору
 Re: Выборка  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 6263
F_Sergey
функция проверяет поле со списком и если там есть значение...

А вариант с тысячами записей в которых фигурирует 200-500 фамилий(вполне реально)-в полеСоСписком окажется 200-500 строк и нужную надо будет искать в списке-не проще ли по начальным буквам,а затем в выборке при щелчке на нужной вывести подробности по ней (когда в базе будет 200-500 фамилий,то и поиск будет после поиска в списке Combo-или Ваша БД расчитана на количество фамилий которые поместятся на экран?)
6 июн 19, 18:48    [21903944]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить