powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Переменная, как условие отбора в запросе
25 сообщений из 33, страница 1 из 2
Переменная, как условие отбора в запросе
    #39736396
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Условие отбора запроса выглядит вот так:
Код: vbnet
1.
Like "*Рога*" Or Like "*Справки*" Or Like "*Копыта*" Or Like "*Шапки*"  



Подскажите, как в запросе использовать переменную, вместо этой строки.
Что-то типа
Код: vbnet
1.
VIBORKA = "Like '*Рога*' Or Like '*Справки*' Or Like '*Копыта*' Or Like '*Шапки*'" 



Ещё одно условие, другого запроса:
Код: vbnet
1.
Not Like "*Рога*" And Not Like "*Справки*" And Not Like "*Копыта*" And Not Like "*ШАПКИ*"



или присвоить эту последовательность функции строкового типа, и использовать её в качестве условия отбора.
Код: vbnet
1.
2.
3.
  MyFunction() As string

MyFunction = "Like '*Рога*' Or Like '*Справки*' Or Like '*Копыта*' Or Like '*Шапки*'" 


------------------------------------------------------------------------
Спасибо за ответ.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736398
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переменная существует для VBA-кода и не существует для SQL. Так что просто формируй SQL-строку запроса с использованием нужного значения переменной - а потом выполняй.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736399
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если запрос - это статический запрос, то модифицируй его QueryDef. И потом не сохраняй...
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736402
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, спасибо за ответ,
но ведь я могу передать в запрос переменную, используя функцию строкового типа:

Код: vbnet
1.
2.
3.
  MyFunction() As string

MyFunction = "Рога"
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736403
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, или вот так.

Код: vbnet
1.
2.
3.
4.
  MyFunction() As string
Dim переменная  As string
 переменная   = "Рога"
MyFunction = переменная  
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736404
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу... как ОДИН параметр. А тебе их надо четыре. Потому как в SQL твоё условие будет выглядеть не так, как ты показываешь переменную:
час58
Код: vbnet
1.
Like "*Рога*" Or Like "*Справки*" Or Like "*Копыта*" Or Like "*Шапки*"

а вот так:
Код: sql
1.
[поле] Like "*Рога*" Or [поле] Like "*Справки*" Or [поле] Like "*Копыта*" Or [поле] Like "*Шапки*"
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736406
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
Ага....
блин.
По очереди передавать условия отбора?
и по очереди смотреть результат...
4 раза...

только так, да?
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736408
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просто у меня запрос "KTI_GKH_QUE"
в нём условие отбора в виде строки, которую я хочу впихнуть в переменную
а затем этот запрос используется в коде.

Код: vbnet
1.
    If PAY_VID_NAME = "ЖКХ" And DCount("*", "KTI_GKH_QUE", "KOD_TIPA_IZVESHENIYA = '" & KTI & "'") <> 0 Then



И код получается без наворотов.
Просто смотрю, есть ли в результатах запроса искомое или нет.
А если формировать SQL строку запроса, то как с ней потом работать?
Или как работать с результатом ей работы?
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736417
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58, у функций есть аргументы.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736421
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko,

Это хорошо.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736433
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58А если формировать SQL строку запроса, то как с ней потом работать?
тебе же ответили в первом сообщении
AkinaТак что просто формируй SQL-строку запроса с использованием нужного значения переменной - а потом выполняй.
Что еще и расшифровать ?
Я вообще то думал, что человек научившийся ездить на велосипеде автоматически умеет ездить на самокате...
Ты ж летом всех пытал на тему как спрятать все запросы в код?
А чем это отличается от того?
- Создаешь плюшевый (временный от балды) сохраненный запрос
- Потом через qs.SQL меняешь ему текст с готовой кучей лайков
- Потом работаешь как с обычным сохраненным запросом, как будто он у тебя уже был...
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736435
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

Хорошо, что хоть ты помнишь, что было летом....
Я блин, так часто кодю, что забываю как это делается.
:-)

---------------
Спасибо тебе. Попробую переварить и применить.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736456
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58По очереди передавать условия отбора?
и по очереди смотреть результат...
4 раза...

только так, да?Начать с того, что внимательно посмотреть на данные. Вот тебе точно позарез необходим LIKE? У тебя точно ПОДстрока? или "Рога", "Копыта" и т.п. - это точное и полное значение поля искомой записи?
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736462
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,
VBA использовать категорически низя?
Вариант на VBA
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736475
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,

Код: vbnet
1.
2.
MyFunction() As String
MyFunction = "Рога" & "Справки" & "Копыта" & "Шапки"


Код: sql
1.
WHERE MyFunction() Like "*" & поле & "*"
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736538
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Это подстрока. В ней не только конкретно "рога". Там может быть любое предложение, но оно содержит подстроки типа рога, шапка, справки.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39736539
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

Спасибо за пример.
Попробую так сделать.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738355
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,

Есть ещё 1 вариант. Создаёте отдельную таблицу, ну скажем " tblParameter ". Пускай у этой таблице будет 2 поля: Report, Parameter .
Я не знаю как называется Ваш отчёт для которого фильтруете данные, ну пусть будет "Отчёт № 1". В данную таблицу добавите записи типа так:
Код: sql
1.
2.
3.
4.
5.
6.
INSERT INTO tblParameter (Report, Parameter)
SELECT * FROM
(SELECT 'Отчёт № 1' AS Report, '*Рога*' AS Parameter FROM MSysObjects WHERE Id = 2
UNION ALL SELECT 'Отчёт № 1' AS Report, '*Справки*' AS Parameter FROM MSysObjects WHERE Id = 2
UNION ALL SELECT 'Отчёт № 1' AS Report, '*Копыта*' AS Parameter FROM MSysObjects WHERE Id = 2
UNION ALL SELECT 'Отчёт № 1' AS Report, '*Шапки*' AS Parameter FROM MSysObjects WHERE Id = 2) AS Data;


А потом можете использовать в запросах эти параметры вот таким образом:
Код: sql
1.
2.
SELECT T.*
FROM Table1 AS T INNER JOIN tblParameter AS P ON (T.поле LIKE P.Parameter) AND (P.Report = 'Отчёт № 1')


Правда запрос станет НЕ обновляемым . Если же Вам нужен обновляемый запрос, то тогда нужно будет изменить текст запроса чуть-чуть по другому (правда будет работать запрос чуть-чуть медленнее):
Код: sql
1.
2.
SELECT * FROM Table1
WHERE EXISTS (SELECT Parameter FROM Table1 AS T, tblParameter AS P WHERE T.Поле LIKE P.Parameter AND P.Report = 'Отчёт № 1');



Ну и в будущем можете записи таблицы менять " tblParameter " как угодно. Соответственно будете получать разное количество записей.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738357
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,

Прошу прощения, во 2-запросе слегка ошибся. :)
Код: sql
1.
2.
SELECT T.* FROM Table1 AS T
WHERE EXISTS (SELECT Parameter FROM tblParameter AS P WHERE T.Поле LIKE P.Parameter AND P.Report = 'Отчёт № 1');
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738361
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
studieren
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738362
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,
Спасибо всем за помощь.
Задача стояла - править набор в одном месте, а не во всех случаях его использования в коде.

делал так:

Фот функция, в которой хранятся наборы
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Function FUN_NABORI_PAY(PAY_VIDS As String) As Integer
  
  FUN_NABORI_PAY = 0
  
Select Case PAY_VIDS
Case "Рога",  "Справки", "Копыта", "Шапки"
  FUN_NABORI_PAY = 1
Case "Кепки"
  FUN_NABORI_PAY = 2  
Case "Штаны", "Шорты","Треники"
  FUN_NABORI_PAY = 3  
Case Else ' Билеты  Ксерокс
  FUN_NABORI_PAY = 0
End Select

End Function



И использование функции в личных целях:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
    Select Case FUN_NABORI_PAY(PAY_VIDS)
    
    Case 1
      True
    Case Else
       False
    End Select
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738516
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58Фот функция, в которой хранятся наборы
Ну вообще такие задачи не хардкодят обычно, а хранят все в таблицах и вытаскивают запросами
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738666
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShinНу вообще такие задачи не хардкодят обычно, а хранят все в таблицах и вытаскивают запросами

Да может он несказанно рад, что без него никак, всяко бывает, на зонтики перейдут - опять позовут, опять денежка...
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738714
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,
Золотые слова!!!
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738721
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShin,
Дело в том, что при "поступлении Зонтиков", в программе столько всего менять приходится, что в код всё равно лезть придётся.
Вроде всё предусмотрел, вроде думал отдам программу и пользывайтесь, но они мне сразу сказали - наивный вы програмер Сергей.
И ведь - как в воду глядели.
Такие выкрутассы придумывают с каждым новым видом рогов и копыт, что добавить одно слово-позицию в набор - это мне будет как два пальца обласкать.
Как та так.
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Переменная, как условие отбора в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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