powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / in (15,36897,56489) vs in (Select ...) ?
5 сообщений из 5, страница 1 из 1
in (15,36897,56489) vs in (Select ...) ?
    #32634491
SRG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SRG
Гость
Для одного fXID :

1. select * from t_Y where fYID in (15,36897,56489)

2. select * from t_Y where fYID in (Select fYID from t_X where fXID = forms!foX!fXID)

Первый запрос выполняется быстрее, чем второй. Но если я подставлю строку в RecordSource формы, то при изменении fXID для обновления формы в первом случае нужно изменять form.RecordSource, а во втором всего лишь вызвать form.Requery. Я написал функцию funYID_list(lngXID as long), которая БЫСТРО возвращает список значений для поля fYID, разделенный запятыми. Пытаюсь её подставить в SQL:
select * from t_Y where fYID in (funYID_list(forms!foX!fXID))

НО... То ли лыжи не едут ... :(
Подскажите, можно ли ВООБЩЕ в запрос подставить функцию или поле с перечислением. Или как еще можно выкрутиться?

ЗЫ:Изменять каждый раз form.RecordSource очень не хочется .
А97
...
Рейтинг: 0 / 0
in (15,36897,56489) vs in (Select ...) ?
    #32634509
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"select * from t_Y where fYID in (funYID_list(" & forms!foX!fXID & "))"
...
Рейтинг: 0 / 0
in (15,36897,56489) vs in (Select ...) ?
    #32634614
SRG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SRG
Гость
Не. Не работает:

forms!foX!fXID =13
"funYID_list(" & forms!foX!fXID & ")"=funYID_list(13)="13;27644;58132"

запрос In (13;27644;58132) возвращает 9 записей
запрос in(funYID_list(" & forms!foX!fXID & "))" возвращает 0 записей
...
Рейтинг: 0 / 0
in (15,36897,56489) vs in (Select ...) ?
    #32634629
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор... в первом случае нужно изменять form.RecordSource, а во втором всего лишь вызвать form.Requery ...

И там и там одна строка (при условии, что у вас уже функция отписана).
Чем вам не нравиться подменять RecordSource - я всегда так деляю!
Код: plaintext
me.recordsource = "Select * From ... Where id in (" & my_func1(me.xid) & ")"
+
Разделять надо запятыми , а не ; (вот!!!)
...
Рейтинг: 0 / 0
in (15,36897,56489) vs in (Select ...) ?
    #32634722
SRG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SRG
Гость
1. Тем, что .Requery выполняется быстрее - не тратится время на разбор SQL инструкции (парсинг, оптимизацию всяческую и т.д. ...) - эт мы проходили :)
2. при вызове me.recordsource ="..." сбрасываются свойства .filter (.filteron) и .orderby (.orderbyon). Для того, чтоб их снова установить, тратим опять же время (см.п.1)

Насчет "Разделять надо запятыми, а не ; (вот!!!)" - Да я не спорю. Просто у меня в настройках системы стоит разделитель ";", а строку "13;..." я скопировал не из кода, а из бланка в конструкторе запросов :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / in (15,36897,56489) vs in (Select ...) ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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