powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Переменная, как условие отбора в запросе
33 сообщений из 33, показаны все 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
Переменная, как условие отбора в запросе
    #39738756
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58Дело в том, что при "поступлении Зонтиков", в программе столько всего менять приходится, что в код всё равно лезть придётся.

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

не могу прям в открытую сказать, что ты типа ясно видящий.
Но в точку.
Приём платежов...
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738769
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58MrShin,
Дело в том, что при "поступлении Зонтиков", в программе столько всего менять приходится, что в код всё равно лезть придётся.а вот это недопустимо.Одним из главных пунктов задания на проектирование БД должно быть требование неизменности кода при любых изменениях данных.При соблюдении этого требования,возможно, не возникнет вопрос,которому посвящен этот топик
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738777
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

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

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

и щас мы имеем от меня только модуль работы с фискальником ШТРИХ.
Прога собирает платежи, отдаёт чеки и со всех точек собирает платежи в единую базу. Потом выгружает ексель, дбф, текстовые файлы - кому что надо. Каждый поставщик услуг со своими заморочками. Кто во что горазд.
Ну и само собой отчёты распечатывает кому какие треба.
Народ ещё не перелез на онлайн платежи.
Даже с карточками приходят и оплачивают в кассу безналом...
Так что прогресс, для многих, тёмный лес.
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738871
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58sdku,
А почему заказчик должен заранее знать, с чем ему придётся столкнуться, при заключении договора на обслуживание с очередным поставщиком услуг для населения?
Это как такое возможно, если у каждого из имеющихся на планете поставщиков услуг - свои особенности?А потому что пользователь должен ВЫБРАТЬ значение конкретного поля в записях которые он хочет увидеть,а перед этим эта(допустим услуга или товар) должен быть занесен в таблицу (допустим услуги или товары-иначе Вы хотите увидеть то о чем в БД нет данных),а выбор должен формироваться на основе значений (а не текста)поля-тогда Вы можете отобрать "любой товар любого поставщика на планете" без редактирования кода.Я Вам предлагал подобный вариант 21740671 (кстати варианты:все услуги(товары) в список со множественным выбором,или формировать строку отбора по мере выбора, создание таблицы с готовыми перечнями,но это значительно хуже т.к. предусмотреть все варианты невозможно)
...
Рейтинг: 0 / 0
Переменная, как условие отбора в запросе
    #39738924
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
Да, спасибо, прекрасный вариант. Он меня натолкнул на мысль.

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


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