powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / менять условие where из формы
18 сообщений из 18, страница 1 из 1
менять условие where из формы
    #39306735
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую,
Хотел бы спросить у меня в условии where есть логика и/или, можно ли ее менять из формы?
например
where field1=field2 and field3=field4
можно ли and поменять на or прямо из формы?
...
Рейтинг: 0 / 0
менять условие where из формы
    #39306781
Retvisanможно ли and поменять на or прямо из формы? Например на форме для этого есть флажок F1, тогда:
Код: plsql
1.
2.
3.
where ([Forms]![ИмяФормы]!F1=False and field1=field2 and field3=field4) 
Or ([Forms]![ИмяФормы]!F1=True and field1=field2)  
Or ([Forms]![ИмяФормы]!F1=True and field3=field4)
...
Рейтинг: 0 / 0
менять условие where из формы
    #39306946
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ),

неплохая идея,но я хотел бы иметь все возможные варианты для этого я сделал создание запроса, но вылетает ошибка в создании запроса "не совпадение типов"

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Dim StrSql As String
Dim Desiro1 As Database
Dim KL_filter As QueryDef
Dim tokpriemnik_bereg_s As String
Dim bereg_110v_s As String
Dim v110_zazemlen_s As String
Dim zazemlen_pm_s As String
Dim pm_tm_s As String

Set Desiro1 = CurrentDb
Desiro1.QueryDefs.Refresh
For Each KL_filter In Desiro1.QueryDefs
If KL_filter.Name = "KL_filter" Then
End If
Next KL_filter

If (tokpriemnik_bereg = 1) Then tokpriemnik_bereg_s = "OR" Else tokpriemnik_bereg_s = "AND"
If (bereg_110v = 1) Then bereg_110v_s = "OR" Else bereg_110v_s = "AND"
If (v110_zazemlen = 1) Then v110_zazemlen_s = "OR" Else bereg_110v_s = "AND"
If (zazemlen_pm = 1) Then zazemlen_pm_s = "OR" Else zazemlen_pm_s = "AND"
If (pm_tm = 1) Then zazemlen_pm_s = "OR" Else pm_tm_s = "AND"

Next KL_filter


StrSql = "SELECT KL.ID, KL.Opisanie_id, KL.Sort, KL.[Nomer dokumenta], KL.Punkt, KL.Titel, KL.Mesto, KL.[Vagon A_kod], " & _
"KL.[Vagon B_kod], KL.[Vagon C_kod], KL.[Vagon D_kod], KL.[Vagon E_kod], [Sostoyanie poezda].[Akkumulyatornaya batareya 110 V], " & _
"[Sostoyanie poezda].[Pnevmaticheskij tormoz], [Sostoyanie poezda].[Pnevmosnabzhenie cherez pitatelnuyu magistral], " & _
"[Sostoyanie poezda].[Aktivnaya kabina mashinista], [Sostoyanie poezda].[Energosnabzhenie cherez vneshnee pitanie], " & _
"[Sostoyanie poezda].Tokopriemnik, [Sostoyanie poezda].[Stoyanochnyj pruzhinnyj tormoz], [Sostoyanie poezda].[Elektropoezd zazemlen]" & _
"FROM [Sostoyanie poezda] INNER JOIN KL ON [Sostoyanie poezda].[Sostoyanie poezda_id]=KL.Opisanie_id" & _
"WHERE (((KL.[Nomer dokumenta]) Like " * " & (Forms!KL_for_KL_LISTE!nomer_instr) & " * ")" & _
"And" &(([Sostoyanie poezda].Tokopriemnik) Like " * " & (Forms!KL_for_KL_LISTE!vysok_napr) & " * ")" & _
"& tokpriemnik_bereg_s &" & "(([Sostoyanie poezda].[Energosnabzhenie cherez vneshnee pitanie]) Like " * " & _ (Forms!KL_for_KL_LISTE!bereg_napr) & " * ")" & " & bereg_110v_s & _
" & "(([Sostoyanie poezda].[Akkumulyatornaya batareya 110 V]) Like " * " & (Forms!KL_for_KL_LISTE!akum_napr) & " * ")" & " & _ v110_zazemlen_s & " & "(([Sostoyanie poezda].[Elektropoezd zazemlen]) Like " * " & _
(Forms!KL_for_KL_LISTE!zazem) & " * "))" & " & zazemlen_pm_s & " & _
"(([Sostoyanie poezda].[Pnevmaticheskij tormoz]) Like " * " & (Forms!KL_for_KL_LISTE!tm_vozd) & " * ")" & " & pm_tm_s & _
" & "(([Sostoyanie poezda].[Pnevmosnabzhenie cherez pitatelnuyu magistral]) Like " * " & (Forms!KL_for_KL_LISTE!pm_vozd) & " * ")"
Set KL_filter = Desiro1.CreateQueryDef("KL_filter", StrSql)
DoCmd.OpenQuery "KL_filter", acViewNormal
KL_filter.Close



можете подсказать в чем ощибка?
...
Рейтинг: 0 / 0
менять условие where из формы
    #39306954
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Retvisan,

ошибка вылетает в строке запроса
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307094
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Retvisan,

немного апну тему,мне кажется я совершил ошибку в том, что не совсем верно определил текст запроса. Т.е. мне нужно объеденить текст и переменную в новую переменную. Как это сделать правильно ?
С делаю так
Код: vbnet
1.
2.
3.
4.
5.
6.
Dim f as string
Dim i as string
Dim d as string
f="world"
i="!"
d="hello" & f & i


Это верно или нет?
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307096
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RetvisanПриветствую,
Хотел бы спросить у меня в условии where есть логика и/или, можно ли ее менять из формы?....
Может чего-то не понимаю, но почему не так?
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307115
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
объясню сразу, что я делаю, потому что пост получился не информативным. У меня есть в форме список,который ссылается на запрос, и я хочу при помощи полей со списком фильтровать его, т.е. в самом запросе есть ссылки на контролы в форме(кусок кода ниже и выше), изменяя запрос я меняю логику и/или между полями со списком,для этого я сделал блоки переключателей как и ты

все так) ты в принципе сделал тоже самое что и я, просто ты все условие where перевел в переменную, кстати я понял, что ошибка кроется не в переменных, а в коде sql
в этом куске
Код: vbnet
1.
(((KL.[Nomer dokumenta]) Like " * " & (Forms!KL_for_KL_LISTE!nomer_instr) & " * ")" &


т.е. сейчас мой запрос в части where выглядит так
where [столбец таблицы] like [контрол формы] & [переменная or/and] & [столбец таблицы] like [контрол формы]

видимо ошибка кроется в like и МИФ выдает мне ошибку)

можешь посмотреть правильно ли я сделал лайк или нет?
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307135
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Retvisan,

не хочет миф мне делать эту часть запроса
Код: vbnet
1.
Like " * " & (Forms!KL_for_KL_LISTE!nomer_instr) & " * ")"


почему?
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307137
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Retvisan,

не нравятся ему звезды и кавычки
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307143
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Retvisan,
Код: vbnet
1.
"SELECT...FROM ...WHERE ПолеЗапроса like'*" & Forms!ИмяФормы!ИмяПоля & "*'"


посмотрите в конструкторе запрос с LIKE и увидите апострофы (не кавычки)
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307150
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,
kod chyt' nize skrin s oshibkoi

WHERE (((KL.[Nomer dokumenta]) like '*" & Forms!KL_for_KL_LISTE!nomer_instr & "*'

ne pomoglo....
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307157
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RetvisanС делаю так
Код: vbnet
1.
2.
3.
4.
5.
6.
Dim f as string
Dim i as string
Dim d as string
f="world"
i="!"
d="hello" & f & i



Это верно или нет?
Ну если цель - получить строку "helloworld!", то верно :)
Пробелы и кавычки - главная причина ошибок при работе со строками.

Retvisan
Код: vbnet
1.
Like " * " & (Forms!KL_for_KL_LISTE!nomer_instr) & " * ")"


Вот зачем здесь лишние пробелы? Ведь Акцесс будет их искать в вашей строке.

RetvisanWHERE (((KL.[Nomer dokumenta]) like '*" & Forms!KL_for_KL_LISTE!nomer_instr & "*'
Ну и скобки - наше все. Поставьте себе Notepad+ или что-то подобное, что сразу показывает парные скобки, ошибок будет меньше.
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307171
Retvisan....МИФ выдает мне ошибку...

.....не хочет миф мне делать эту часть запроса....

....не нравятся ему звезды и кавычки....Кто такой МИФ ????
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307174
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МИФический МИФ,

VBA
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307184
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin,

не получилось сделать так как я хотел( да и невозможно), придется выкручиваться с тем что имею, но вцелом получилось неплохо)
спасибо!!!!
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307187
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Retvisan
.....WHERE (((KL.[Nomer dokumenta]) like '*" & Forms!KL_for_KL_LISTE!nomer_instr & "*'

ne pomoglo....и не поможет:открывающихся скобок ТРИ а закрывающихся ОДНА
сделайте как Вам сказано-именно так: 19651593
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307196
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Retvisan,

Код: vbnet
1.
" WHERE KL.[Nomer dokumenta] LIKE '*" & Forms!KL_for_KL_LISTE!nomer_instr & "*' and [Sostoyanie poezda].Tokopriemnik Like ' * " & Forms!KL_for_KL_LISTE!vysok_napr & " * '" & tokpriemnik_bereg_s & "[Sostoyanie poezda].[Energosnabzhenie cherez vneshnee pitanie] Like ' * " & Forms!KL_for_KL_LISTE!bereg_napr & " * '" & bereg_110v_s & "[Sostoyanie poezda].[Akkumulyatornaya batareya 110 V] Like ' * " & Forms!KL_for_KL_LISTE!akum_napr & " * '" & v110_zazemlen_s & "[Sostoyanie poezda].[Elektropoezd zazemlen] Like ' * " & Forms!KL_for_KL_LISTE!zazem & " * '" & zazemlen_pm_s & "[Sostoyanie poezda].[Pnevmaticheskij tormoz] Like ' * " & Forms!KL_for_KL_LISTE!tm_vozd & " * '" & pm_tm_s & "[Sostoyanie poezda].[Pnevmosnabzhenie cherez pitatelnuyu magistral] Like ' * " & Forms!KL_for_KL_LISTE!pm_vozd & " * '"""


еще одна проблема появилась
когда я в запрос вставляю переменные из VBA, то вылетает ошибка синтаксиса
...
Рейтинг: 0 / 0
менять условие where из формы
    #39307197
Retvisan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sdku,

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


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