powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Условие отбора Все или Конкретное
36 сообщений из 36, показаны все 2 страниц
Условие отбора Все или Конкретное
    #40119176
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Есть запрос, в одном из полей стоит условие отбора [TempVars]![имя]. Переменная задается на форме. В таблице поле числовое и имеет значения от 1 и выше. Как сделать, что при отсутствии нужного числа из переменной в таблице отображались все записи? Например, если переменная имеет число 0, то выведутся все записи, а если он а содержит число совподающее со значением поля, то отобразятся только нужные записи. Пробовал [TempVars]![имя] OR Like "*" [TempVars]![имя] Or Is Not Null Не работает. Выводятся всегда все записи независимо от переменной.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119180
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
Пробовал [TempVars]![имя] OR Like "*" [TempVars]![имя] Or Is Not Null Не работает
ты запрос в режиме SQL показывай, а не этот бред

Код: sql
1.
2.
3.
select ...
from ...
where fld=[TempVars]![имя] or [TempVars]![имя]=0 
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119186
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
SELECT people.id, people.name
FROM people
WHERE (((people.id)=[TempVars]![id]));
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119295
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak,
Код: vbnet
1.
...WHERE IIf(DCount("*","tbl","поле=" & [введите значение])>0,поле=[введите значение],True)

Если форма нужна то запрос параметра(в кв.скобках) из поля формы-если нет параметр запросится при запуске запроса.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119303
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Если вводить значение, то работает, а если указать переменную, то уже не работает.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119304
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheradak,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim Flag
Flag = Currentproject.connection.execute("SELECT Count(ID) AS [Count-ID] FROM TempVars WHERE TempVars = " &  Контрол_на_форме Или Имя_переменной & "").fields(0)
If Flag = 0 Then
' Выводим кудой надоть все записи
Else
' Выводим кудой надоть нужные записи
End If
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119315
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak,
Все зависит от того ЧТО именно Вы хотите. Зачем нужна переменная для решения задачи, Вами изложенной???
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119317
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
sdku,
Если вводить значение, то работает, а если указать переменную, то уже не работает.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119320
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vixxa
Cheradak,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Dim Flag
Flag = Currentproject.connection.execute("SELECT Count(ID) AS [Count-ID] FROM TempVars WHERE TempVars = " &  Контрол_на_форме Или Имя_переменной & "").fields(0)
If Flag = 0 Then
' Выводим кудой надоть все записи
Else
' Выводим кудой надоть нужные записи
End If


Блин, читать WHERE TempVars = WHERE имя =
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119326
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
Переменная это код предприятия, задается один раз и далее работается с ним.
У форм источник записи запрос, в котором стоит условие отбора по этому коду предприятия.
Поэтому и нужно, либо отобразить конкретное предприятия либо все, если вдруг в переменной будет код которого нет в отбираемом поле
vixxa,

Речь идет о запросе. В него код VBA не пишется.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119348
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vixxaРечь идет о запросе. В него код VBA не пишется.
А я вам и не предлагаю туда тулить код VBA.
Заранее исключаю академический интерес к написанию SQL запросов в среде (и в конструкторе запросов) access и учитывая ваш предыдущий пост:
CheradakУ форм источник записи запрос, в котором стоит условие отбора по этому коду предприятия.
предлагаю мною предложенный код (а, гораздо лучше, вами! написанный код) поставить на источник данных юзаемых вами ваших форм. И думаю надеюсь, - будет вам счастье.

P.S.
CheradakПоэтому и нужно, либо отобразить конкретное предприятия либо все, если вдруг в переменной будет код которого нет в отбираемом поле
Если не секрет, как у вас в приложении может появиться переменная, которая, якобы "это код предприятия, задается один раз и далее работается с ним" и, в то же время, "в переменной будет код которого нет в отбираемом поле" ? Я сомневаюсь извиняюсь спросить, ваши пользователи эту переменную каждый раз вводят вручную?, не выбирая из имеющихся наборов данных???
Если что, вопрос риторический!
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119350
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vixxa,

Код выбирается из списка. Например каждый пользователь видит только свое предприятие, а администратор может видеть все предприятия. Код пользователя = код предприятия. При этом администраторов может быть несколько и у каждого свой код.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119358
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheradak
vixxa,

Код выбирается из списка. Например каждый пользователь видит только свое предприятие, а администратор может видеть все предприятия. Код пользователя = код предприятия. При этом администраторов может быть несколько и у каждого свой код.

Опять таки, не вижу причин извращаться именно с запросом (подозреваю, с сохраненным, не?).
Уровень доступа к данным у вас все равно на уровне формы: "Код выбирается из списка."
Сделайте Администраторам копии форм с расширенными доступами: в список -> "видеть все предприятия", без всяких заморочек с проверками кодов предприятий, а юзерам - убрать список выбора кода, рекорсеты форм фильтровать на код пользователя/код предприятия. Хотя...
На каждом предприятии только один пользователь?: "Код пользователя = код предприятия."
Если честно, тяжеловато догадываться, что конкретно вы имеете в виду, не видя структуры базы.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119363
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vixxa,

Запрос сохранен. А вот копии форм это уже извращение, т.к. при изменении формы придется и вторую редактировать. На основании кода пользователя еще формируются десятки запросов о статистике, поэтому удобнее использовать временную переменную. И мне хотелось бы знать возможно ли решение моего вопроса, а не переделывать все.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119364
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak,
Повангуем малеха:уж не тривиальный ли поиск вы хотите организовать?
Если хотите создавать новые записи то свойство "ограничиться списком" установите в НЕТ
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119367
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheradak
vixxa,

Запрос сохранен. А вот копии форм это уже извращение, т.к. при изменении формы придется и вторую редактировать. На основании кода пользователя еще формируются десятки запросов о статистике, поэтому удобнее использовать временную переменную. И мне хотелось бы знать возможно ли решение моего вопроса, а не переделывать все.

Я пас
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119377
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku
Cheradak,
Повангуем малеха:уж не тривиальный ли поиск вы хотите организовать?

Продолжу вангование...
ТС, может это:
1.
Код: vbnet
1.
2.
3.
SELECT имя
FROM TempVars
WHERE имя = ALL (SELECT имя FROM TempVars WHERE имя = -1);


2. ...TempVars WHERE имя = " & Forms!Form1.поле & ")";
3. ...TempVars WHERE имя = " & переменная & ")";
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119436
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вы с вангованием зашли уже слишком далеко от сути вопроса
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119444
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если строить IFF, то не выполняется действие при False
Код: vbnet
1.
IIf([TempVars]![id]=[id];[TempVars]![id];>0)



Код: vbnet
1.
IIf([TempVars]![id]=[id];[TempVars]![id]) OR IIf([TempVars]![id]<>[id];[id]>0)
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119508
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
Вы с вангованием зашли уже слишком далеко от сути вопроса


это потому, что сути вопроса не было...
выложил бы пример с одной формой и 10-ю записями - получил бы сразу ответ, а так сопли и слюни скоро на вторую страницу начнут наматываться...
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119510
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak,
1. если
Код: vbnet
1.
....WHERE true

выводятся ВСЕ записи,если
Код: vbnet
1.
....WHERE условие 

отбираются записи удовлетворяющие условию,если
Код: vbnet
1.
....WHERE false 

не выводится ничего-так какого действия Вы ожидаете

2.синтаксис (читайте справку) IIF:условие,значение если условие TRUE,значение если условие FALSE. У Вас же в первом выражении третий аргумент ">0" (выводить по Вашей логике любое число >0,а какое именно: 3,5,10,20 или 1000000000) а во втором выражении во втором IIF второй аргумент условие-ну и что выводить бедной железяке по имени РС

3.Если Вы хотите конкретной помощи изложите неведомую форумчанам задачу, а не то как Вы её(неведомо что) пытаетесь криво решить
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119522
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
Как сделать, что при отсутствии нужного числа из переменной в таблице отображались все записи? Например, если переменная имеет число 0, то выведутся все записи, а если он а содержит число совподающее со значением поля, то отобразятся только нужные записи.

формы... переменные... би ор нот ту би...
посмотри пример, может навеет...
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119711
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
На основании кода пользователя еще формируются десятки запросов о статистике, поэтому удобнее использовать временную переменную. И мне хотелось бы знать возможно ли решение моего вопроса, а не переделывать все.


Если уж так хочется в любом месте засунуть код в переменную и забыть про это место, а потом использовать эту переменную в условии отбора в любом месте, то можно эту переменную в общем модуле обернуть в функцию...
Кстати, чтоб понять, что это работает:
- при старте открывается весь товар...
- выбери например овощи в списке
- закрой форму (только форму, а не базу)
- открой форму снова и будет не весь товар, а выбранные ранее овощи...
Кажется я это где-то тут уже демонстрировал...
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119744
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
В таблице поле числовое и имеет значения от 1 и выше.
не помню уже как в аксе
но логика такая
where if(переменная =0, true, поле =переменная)

если переменная равна нулю то возвращается true , и выводятся все записи
если не 0 то по условию поле =переменная
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119753
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
... Например, если переменная имеет число 0, то выведутся все записи, а если он а содержит число совподающее со значением поля, то отобразятся только нужные записи.
Как это сделать я Вам показал..
sdku
Cheradak
sdku,
Если вводить значение, то работает, а если указать переменную, то уже не работает.
Вы бы разобрались(почитали про переменные) инициализирована ли она к моменту передачи в процедуру,область видимости,время жизни.
Cheradak
sdku,
Переменная это код предприятия...
Я смутно подозреваю что "переменной" Вы обзываете значение поля-как следствие никто ничего не понимает
Необходимости же создания переменной для решения Вашей задачи нет никакой (от слова АБСОЛЮТНО)
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119787
ValK412
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheradak,

стоит проверить
не путается ли Ваш запрос с полем из глобального объекта Application.TempVars

Можно туда записывать, например
Application.TempVars!SavedValue=123
можно потом считывать, например
OldValue=Application.TempVars!SavedValue '=123

Ваше поле для запроса нужно переименовать во что-то более похожее по смыслу (KodPredpriyatiya)
Исользовать имя TempVars для чего либо (кроме сохранения значений между сеансами) - разбрасывать себе грабли под ноги
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119790
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в последнее время слишком много развелось псевдо докторов Франкенштейнов...
оригинал то хоть грамотный был, а эти новоиспеченные не могут сформулировать даже задачу и при этом ещё пытаются лепить горбатого...
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40119888
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
+100500
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40120006
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прикладываю файлик базы. На форме выбирается Отдел и пользователь, который может видеть только данные своего отдела. Так же в некоторых отделах есть администраторы, которые должны видеть информацию со всех отделов.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40120018
vixxa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cheradak,
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40120026
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
Прикладываю файлик базы. На форме выбирается Отдел и пользователь, который может видеть только данные своего отдела. Так же в некоторых отделах есть администраторы, которые должны видеть информацию со всех отделов.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Кнопка7_Click()
If Me.Поле3.Column(1) = Null Then
 MsgBox "Вы не выбрали пользователя"
Else
 If Me.Поле3.Column(3) = 1 Then
    TempVars.Add "otdel", 0
 Else
    TempVars.Add "otdel", Me.Поле1.Value
 End If
 DoCmd.OpenForm "Продукция", acNormal
End If
End Sub


Код: sql
1.
2.
3.
SELECT продукция.Код, продукция.название, продукция.отдел, отдел.название
FROM отдел INNER JOIN продукция ON отдел.Код = продукция.отдел
WHERE (((продукция.отдел)=TempVars!otdel)) Or TempVars!otdel=0;


пс
3-и с половиной дня назад ответил же ! 22408180
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40120066
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вашу задачу можно решить как-то так:при нажати кнопки "войти" создать глобальную переменную(что в дальнейшем код был попроще лучше 2 переменных) всегда и отовсюду доступную сохраняющую свое значение на протяжении всего сеанса работы (где и как её объявить и создать-читайте в справке) а выглядеть она\они должна как-то так: п1=Me.отдел; п2= Me.пользователь. При открытии формы меняйте её источник:
Код: vbnet
1.
2.
3.
4.
5.
if п2="администратор" then 
Me.RecordSource="select * from tbl where отдел=" & п1 'если за все отделы, без WHERE
else
Me.RecordSource="select * from tbl where отдел=" & п1 & " and пользователь<>" & п2 
End if 
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40120720
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

Переменная у меня глобальная. Просто в примере не изменил тип функции на Public. Эти переменные еще используются и для вывода результатов запросов на форме в поля. т.е. допустим считается количество продукции по конкретному отделу. При этом у самой формы нет источника.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40120721
Cheradak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,

Ваш пример хороший, но я не могу изменять переменную на ноль, т.к. эта переменная используется в таблице изменений. Если вдруг кто-то внес изменения в записи, то указывается переменная юзера и отдела.
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40120761
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
court,

Ваш пример хороший, но я не могу изменять переменную на ноль, т.к. эта переменная используется в таблице изменений. Если вдруг кто-то внес изменения в записи, то указывается переменная юзера и отдела.
даа ?
... а 5-ть дней назад - мог
Cheradak
Например, если переменная имеет число 0, то выведутся все записи
...
Рейтинг: 0 / 0
Условие отбора Все или Конкретное
    #40120906
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheradak
но я не могу изменять переменную на ноль
ну можешь 0 - используй "минус единицу"


where iif(x<0; true; поле =x)

если x< 0 - выведет все значения, иначе только те где поле равно х

Cheradak
Если строить IFF, то не выполняется действие при False
Код: vbnet
1.
IIf([TempVars]![id]=[id];[TempVars]![id];>0)


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


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