powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с условием на основе глобальной переменной
25 сообщений из 34, страница 1 из 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
25 сообщений из 34, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Запрос с условием на основе глобальной переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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