powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Like в Модуле
23 сообщений из 23, страница 1 из 1
Like в Модуле
    #32487194
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, плз, что неправильно пишу в модуле:
Function Filtr5210()
Filtr5210 = "Like ' 5290*' Or Like '5230*' Or Like '5140*' Or Like '5131*'"
End Function

Этот модуль используется как условие отбора в запросе.
Запрос игнорирует условие и выдает пустую строку.
Спасибо
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487196
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stepler Этот модуль используется как условие отбора в запросе.
Поподробнее, как используется?
...
Рейтинг: 0 / 0
Like в Модуле
    #32487201
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто в запросе по одному из полей табл.:
SELECT ДляИзмБ.*
FROM ДляИзмБ
WHERE (((ДляИзмБ.ComboDeptCode) Like FiltrVce() Or (ДляИзмБ.ComboDeptCode) Like Filtr5210()))
WITH OWNERACCESS OPTION;

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487204
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и получаешь из Like Filtr5210(): Like Like '5290*' Or Like '5230*' Or Like '5140*' Or Like '5131*'
что есть не правильно

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Like в Модуле
    #32487207
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, Sfagnum
А как правильно?
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487217
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убери лишний Like...

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Like в Модуле
    #32487220
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается тот же мячик, только в ПРОФИЛЬ...
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487222
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ф-я FiltrVce() работает нормально?

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Like в Модуле
    #32487226
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, нормально...
Если использовать одну составляющую в модуле, то тоже работает. Как добавляю "Or" с доп условием - пустая строка...
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487230
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы написал ф-ю следующим образом:
Код: plaintext
1.
2.
3.
Function Filtr5210(FieldName As String) 
Filtr5210 = FieldName &  "Like ' 5290*' Or "  & FieldName &  " Like '5230*' Or "  _
   & FieldName &  "Like '5140*' Or "  & FieldName &  " Like '5131*'"  
End Function
и юзай
Код: plaintext
1.
2.
3.
SELECT ДляИзмБ.* 
FROM ДляИзмБ 
WHERE ДляИзмБ.ComboDeptCode Like FiltrVce() Or Filtr5210(ДляИзмБ.ComboDeptCode) 
WITH OWNERACCESS OPTION; 

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Like в Модуле
    #32487235
Фотография Alexander G
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он все что возвращает функция, воспринимает как единую строку по которой надо искать.
Нужно формировать строку запроса в VBA и засовывать в SQL запроса.
...
Рейтинг: 0 / 0
Like в Модуле
    #32487238
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это равносильно Filtr5210 = "*", т.е выдается весь список целиком...
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487266
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SteplerЭто равносильно Filtr5210 = "*", т.е выдается весь список целиком... Если это мне, то подумай над критериями отбора... и вообще если не получаеттся создай сперва конструктором работающий прототип запроса, а потом унифицируй его...

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Like в Модуле
    #32487275
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том -то и дело, что просто в конструкторе при условии более расширенном всё работает, проблемма как это условие записать через модуль...
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487285
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи запрос из конструктора

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Like в Модуле
    #32487300
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это часть строки условия отбора...
SELECT ДляИзмБ.*
FROM ДляИзмБ
WHERE (((ДляИзмБ.ComboDeptCode) Like "5210*" Or (ДляИзмБ.ComboDeptCode) Like "5240*" Or (ДляИзмБ.ComboDeptCode) Like "5140*" Or (ДляИзмБ.ComboDeptCode) Like "3340*" Or (ДляИзмБ.ComboDeptCode) Like "5290*Or" Like "5130*"))
WITH OWNERACCESS OPTION;

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487309
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мдяяя..... и работает??? смущает меня вот это (ДляИзмБ.ComboDeptCode) Like "5290*Or" Like "5130*"

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Like в Модуле
    #32487321
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, конечно, это обрезок...простоя "ужал" строку условия. На самом деле там ещё порядка 20-ти параметров по такому же принципу (ДляИзмБ.ComboDeptCode) Like "ПАРАМЕТР*" Or ...
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487340
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если предложенный мною вариант не работает то попробуй последовать совету Alexander G

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
Like в Модуле
    #32487507
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй сформировать требуемое в конструкторе запросов и увидишь как треба
...
Рейтинг: 0 / 0
Like в Модуле
    #32487608
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, с конструктора запроса всё и началось....
Запросом из табл. делается выборка при определенных условиях - Часть условий: SELECT ДляИзмБ.*
FROM ДляИзмБ
WHERE (((ДляИзмБ.ComboDeptCode) Like "5210*" Or (ДляИзмБ.ComboDeptCode) Like "5240*" Or (ДляИзмБ.ComboDeptCode) Like "5140*" Or (ДляИзмБ.ComboDeptCode) Like "3340*" Or (ДляИзмБ.ComboDeptCode) Like
и т.д. (24 условия). Появилась необходимость определять условия отбора через запрос с помощью модуля, иначе говоря модуль содержит варианты условий, но НЕСКОЛЬКО параметром условий с Like. Конечно можно было бы на писать 24 модуля (по каждому параметру) и поставить их как условие в запрос, но это чушь - я хочу одним модулем задать все условия.
В принципе, я задачу решил уже другим способом, но хочеться знать, как нужно писать в модуле (в VBA) строку, содержащую условия с несколькими параметрами!!!
Модераторы-знатоки-асы !!! где вы?
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487663
ЗАпрос это инетрпретируемая строка.
Like - это часть интерпретируемой строки.
функции в SQL подставляются на этапе исполнения, т.е. после интерпретации.

Или делай
WHERE F(значение_поля) = True
(где в F проверяй Like по всем условиям, но эта проверка у тебя осуществится в VBA, а в SQL ты вернешь значение (а не строку с Лайками-Белками-Стрелками))

либо шей строку
sSQL = "Select....
WHERE " & F(имя_поля) & ";"
тогда в F ты можешь составить строку с Like для интерепретации в SQL (SQL получит "сшитую" тобой строку со всеми подстановками)

второе обычно позволяет воспользоваться индексами.(а не прогонкой по всей таблице)
...
Рейтинг: 0 / 0
Like в Модуле
    #32487667
Roalex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создай полностью строку SQL в модуле, и поменяй свойство SQL перед вызовом запроса.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Like в Модуле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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