powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с условием на основе глобальной переменной
34 сообщений из 34, показаны все 2 страниц
Запрос с условием на основе глобальной переменной
    #32602838
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго...
Есть глобальная :

Код: plaintext
Public Data_Z As Variant

Открываю отчет с присвоения значения глобальной:
Код: plaintext
1.
2.
3.
Data_Z = Me.ПолеСоСписком0
.....
открытие отчета

Отчет на основе сохраненного запроса (нада так)
Код: plaintext
Select * From Tbl1 where Data=Data_Z

Так вот почему то вот это <Data=Data_Z> не работает...
Подскажите плиз ... что поставить в запрос чтоб сработала глобальная в ЗАПРОСЕ

Заранее спасибо!
Ok.madg
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32602856
qwer22
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Напиши функцию

Public Fubction fnData_Z
fnData_Z=Data_Z
End Function

И в запросе
..Data=fnData_Z
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32603417
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604825
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ураааа, заработалаааа (Кот Матроскин)

А еще такой вопросик по ходу дела, fnData_Z, fn это есть обязательная часть имени функции, или как.

Почему спрашиваю, сам так делал, только функция называлась Param_Z и мне Акс писал ошибку, уж не помню какую.

А может просто перегрелся, жара стоит +32, мозок плавится...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604851
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, торможу... сразу надо было спросить...

Конечно запрос будет иметь несколько полей с условиями. (7, примерно...)
Можно ли соорудить функцию для возврата нескольких значений?

Пока что "додумался" до семи однотипных функций...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604884
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в функцию можно передать параметр
Public Fubction fnData_Z(param as long)
внутри поставить
Select case param
case 1
fnData_Z=Data_Z1
case 2
fnData_Z=Data_Z2
...
end select
и вызывать Where Data1=fnData_Z(1) AND Data2=fnData_Z(2) ... AND ..

а можно сделать скрытую форму с 7 полями(я предпочитаю так)
а ещё можно генерить запрос через QueryDef(DAO)/View(ADOX)
перед запуском отчёта и указывать в запросе в явном виде
(если клиент живёт на сервере в многопользовательской mdb+mdb будет кривить)
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604898
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я завожу массив и описываю Sub, который в него заносит, и Function, который из него выносит. А дальше:

перед вызовом запроса:
SetParam 7,"Vasya"

в запросе:
GetParam(7)
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604925
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буду газовать...

Кстати, Shuhard, это я до сих пор колупаю базку где ты расписывал запросы...
Как Ескуель выгружать из памяти не придумал?

ВС
Можно сделать чтоб ФОРУМ запомнил меня в двух местах?
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604935
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
madgВС
Можно сделать чтоб ФОРУМ запомнил меня в двух местах?
В каком смысле?
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604941
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Само что ни на есть прямом...

В форум захожу и с работы и с дома.
На работе в профиле поставил "запомнить" и все ОК.
Дома вечером захожу надо вводить пароль.
И наоборот.

Можно чтоб меня ФОРУМ запомнил по нескольким "адресам"?
Блажь конечно, но удобно ведь...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604947
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А. Понял. Я думал, в форуме два места. Нет, ведь запоминание происходит не на сервере, а на клиенте.
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32604952
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль однако...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32605019
Фотография Shark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Можно ли создать функцию для возврата нескольких значений?
для этого в VBA есть типы

Type MyType
Value1 as Long
value2 as string
End type

Function fnMyFunc as MyType
Dim lMyType as MyType
lMyType.Value1=5
lMyType.Value2="blabla"
fnMyFunc=lMyType
end function

Что качается префиксов в имени- использование префиксов это хороший стиль. Таблички t, поля f и тд. Так меньше шансов создать поле с именем Name и пр.
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32607183
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так... кипячу дальше :)

Ну очень хочется что бы функция вернула:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function fnAll_Z()
If Forms![ID]![F1]=True
fnAll_Z = between  100  and  300 
Else
fnAll_Z = fnWid8_Z() Or fnWid10_Z() Or fnWid11_Z() Or fnWid12_Z() Or 
fnWid13_Z() Or fnWid14_Z()
End If
End Function
И, соответственно запрос:
Код: plaintext
1.
...WHERE OW.Z1=fnWid8_Z()

Нет, я конечно понимаю, что "fnAll_Z =..." в обоих случаях выглядит бредом, но
как хотелось бы...

Wid..._Z() во всех случаях функции для передачи глобальной переменной в запрос...

Ну не стал я газовать...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32607189
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то мне цифирь по ответам не нравится, становлюсь суеверным...
Глобальные имеют имя Wid1...Wid5
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32607245
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и передай в свою функцию 7 переменных,окучь внутри верни
Boolean и поставь результат функции в Where
Код: plaintext
1.
2.
3.
4.
Public Function MyFu(PP1 As Variant, PP2 As Date,... PP7 as Long) As Boolean

...Where MyFu([P1],[P2]....[P7]) = False

...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609128
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhardну и передай в свою функцию 7 переменных,окучь внутри верни
Boolean и поставь результат функции в Where
Код: plaintext
1.
2.
3.
4.
Public Function MyFu(PP1 As Variant, PP2 As Date,... PP7 as Long) As Boolean

...Where MyFu([P1],[P2]....[P7]) = False



И, как обычно... с этого момента поподробней... :(

Объясню почему:
Окучить для меня, как для сельского жителя, совершенно определенное понятие... :)

И во вторых.
здесь:
Public Function... фигурирует РР1...
а здесь:
...Where.... уже просто Р1, да еще False...

Токмо не плюйте в меня, честно пытался весь день прокипятить этот вариант...
Хорошо, когда знаешь да забыл, а если не знаешь...
Полета мысли хватило на такого зверя

Код: plaintext
1.
2.
Public Function MyFu(Wid8 As Variant, Wid10 As Variant) As Boolean
End Function
В запросе, построитель конечно...
Код: plaintext
1.
WHERE (((Наименование.Код)= (((MyFu("«Wid8»","«Wid10»"))=False));

На брекпоинте пишет или:
Wid8="Wid8"
или
Null

:(

Вообще, конечно надо чтоб функция возвращала по условию контрла в форме:
или значения переменных Wid8...Wid14
или значения в отрезке от 1 до 300

Вопрос конечно нафиг мне это нужно?
А нужно для организации выбора "Все" в условиях запроса...

Как длинно получилось...
Кто назовет извращенцем (а может и хуже...) будет конечно прав...

Спасибо.
Ok.madg
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609200
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
давай начнём с начала:
- ты нам запрос с 7-ю полями по которым надо Where
- список глобальных переменных для Where
- логику Where
- обьяснение авторорганизации выбора "Все" в условиях запроса.../quot]

а мы тебе функцию + пример в виде mdb

P.S. под "окучить" следует понимать микшировать!

P.P.S. в функцию в виде параметров нужно передать ВСЕ поля запроса участвующие в Where
в функции организовать логику с участием этих полей запроса и глобальных переменных
результат функции подставить в Where:
select p1,p2,p3...pn
from xz
where myfu([p1],[p2],[p3]....) = false 'т.е. функция=false,а не
where Код=функция=false ' не верно
[quot автор]
WHERE Наименование.Код= (MyFu("«Wid8»","«Wid10»")=False;
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609320
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RE: Shuhard
С тобой приятно работать...
Сейчас попробую соорудить из своей базки исходник...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609329
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде бы получилось...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609336
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде бы получилось...
Использование переменных и\или функция в данном случае обязательно...
По той причине, что запросы потом, на окончательной стадии будут экспортироваться в Екс, и потом форматироваться (жирность шрифта, курсив и т.д.)
если в условиях используются ссылки на контролы форм Акса в форматировании вылезает ошибка...

Условия отбора вроде бы видны из формы, но все таки:
1. Все предприятия на определенную дату (данные есть только на 01,01,04)
2. Данные по одному предприятию на определенную дату
3. Данные по определенному ВИДУ предприятий на определенную дату.

Применением 7 переменных (Wid) и функций на их основе пункты 2 и3 осуществлены. Из примера я их выкинул дабы не демонстрировать свой идиотизм... :)

ЗЫ
Почему то мне казалось, что если присвоить переменной значение "" или ничего не присваивать это и будет "Все", однако у меня не получилось. :(

А было бы гораздо проще...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609411
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во! соорудил очередного уродца:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Function fnZ1_2()
str1 = "SELECT Наименование.Код, Наименование.Организация_вид, 1 AS 
Rang_Id, D1.Пашня , D1.Многолетние, D1.Сенокосы Наименование LEFT JOIN D1 
ON Наименование.Код = D1.ID_наименование"
If Wid8 >  0  Then
sql2 = "WHERE Наименование.Организация_вид=" & Wid8 & " "
Else
sql2 = ""
End If
fnZ1_2 = str1 + sql2
End Function

Соорудить соорудил а что теперь с ним делать не занаю...
Функция возвращает нужный Select - это хорошо!
А то что я не знаю как на основе функции соорудить запрос - плохо...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609413
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Работать не будет. Слеплено вместе наименованиеWHERE.
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609416
Фотография Темный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. исправь
sql2 = "WHERE Наименование.Организация_вид=" & Wid8 & " "
на
sql2 = " WHERE Наименование.Организация_вид=" & Wid8 & " "
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609420
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Робяты...
Я видел эту ошибку, исправил уже после отправки... :)

Но вопрос в том, что состаить запрос на основе таблицы у меня познаний хватит, а вот на основе функции....

Мне нужон именно запрос...

Ведь:
Код: plaintext
1.
Select * From fnZ1_2()

это ведь полная чушь?
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609422
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да.
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609429
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВС
Первый раз от Вас слышу (или вижу?) такое...

Обычно:
... чушь? - "Да"!
Но вот так - "....." - будет правильно\работать.

Если функция выводит правильную по синтаксису строку SQL то почему на ее основе нельзя соорудить запрос?

ЗЫ
Благими намерениями вымощена дорога... ну сами знаете куда...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609434
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Куда этот селект должен пойти? Вот туда его и нужно занести программно. Я не понимаю, в чем проблема.
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609437
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Function XCase(Cod As Long, Vid As Long) As Boolean
' 1 - все предприятия
'  2  - одно предприятие
'  3  - группа предприятий
XCase = False
Select Case Id_Grup
Case  1 : XCase = True
Case  2 : If Cod = ID_Name Then XCase = True
Case  3 : If Vid = Wid8 Or Vid = Wid10 Or Vid = Wid11 Or Vid = Wid12 Or Vid = Wid13 Or Vid = Wid14 Then XCase = True
End Select
End Function
промежуточный запрос
Код: plaintext
1.
2.
3.
SELECT Наименование.*
FROM Наименование
WHERE (((XCase([Наименование.Код],[Наименование.Организация_вид]))=True));
покоцал то ,что мешало отладки - верни сам!
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609446
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот селект( а вернее запрос по результату селекта), и еще несколько подобных, (если получится с функцией) пойдет в другой запрос, а он .... в общем долго и нудно...

А может проще?
Эта функция может вернуть два варианта:
1. С условием Where
2. И без него совсем!

Ноги у моих проблем растут из невозможности присвоить переменной ПУСТОЕ значение.

Попытка объяснить:
есть таблица с данными:
ID|Data
а;1
б;2
в;3
есть глобальная переменная П1
Присваиваем глобальной, в форме:
П1=1
Запрос:
...Where Data=П1
Получаем:
ID|Data
а;1

Ситуация поменялась, присваиваем глобальной, в форме:

П1=<ничего не присваиваем>
Запрос:
...Where Data=П1
Получаем:
ID|Data
а;1
б;2
в;3

Так вот, <ничего не присваиваем> это как будет выглядеть?
Причем запрос это именно запрос...

Блин пишу и какое-то странное ощущение что это уже когда то было...
Дежавю, мать...

Пардон за многословие...
И кто научил меня печатать всеми десятью...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609448
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shuhard смотрю внимательно.
Предыдущее запостил раньше чем увидел твой ответ...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609459
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлично работает, отличный пример!!! А могло ли быть по другому?!
Ура, ура!!!

И самое главное!
Наконец то понял как используется в функциях:
(ааа As Long, ххх As Long)

Отлично день прошел!
И до этого о форуме было отличное мнение, а теперь Shuhard забил последний гвоздь!!!

От меня Вам не избавиться!
Спасибо всем!!!

ЗЫ
А переменной всетаки можно присвоить "пустое" значение?
Уже не надо, но для общего развития...
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609465
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
madgА переменной всетаки можно присвоить "пустое" значение?
В смысле Null? Можно, если она описана как Variant.
...
Рейтинг: 0 / 0
Запрос с условием на основе глобальной переменной
    #32609506
madg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура!
На мой чайниковский взгляд проектик почти завершен, насколко хватило рук и познаний.
Отлично сработали примеры Shuhard, к одному из них был прикручен не менее отличный и полезный ВизХоковский способ записи файла От Виктоши.

Вычищу мелких блох, наведу маленько красивость и выкину базу на сайт.

После этого воскрешу "покойничка", так как осталась нерешенной проблема с выгрузкой Екса из памяти после вывода в него (Екс) запроса.
И, наверняка, найдется добрый десяток других проблем :)
Советы и ругательства будут только приветствоваться!!!

Люди не ругайте меня когда это произойдет...

Спасибо всем за внимание и заботу!
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с условием на основе глобальной переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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