Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / менять условие where из формы / 18 сообщений из 18, страница 1 из 1
09.09.2016, 16:20
    #39306735
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
Приветствую,
Хотел бы спросить у меня в условии where есть логика и/или, можно ли ее менять из формы?
например
where field1=field2 and field3=field4
можно ли and поменять на or прямо из формы?
...
Рейтинг: 0 / 0
09.09.2016, 17:20
    #39306781
менять условие where из формы
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
10.09.2016, 00:40
    #39306946
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
Анатолий ( Киев ),

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

Код: 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
10.09.2016, 00:56
    #39306954
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
Retvisan,

ошибка вылетает в строке запроса
...
Рейтинг: 0 / 0
10.09.2016, 18:17
    #39307094
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
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
10.09.2016, 18:57
    #39307096
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
RetvisanПриветствую,
Хотел бы спросить у меня в условии where есть логика и/или, можно ли ее менять из формы?....
Может чего-то не понимаю, но почему не так?
...
Рейтинг: 0 / 0
10.09.2016, 21:52
    #39307115
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
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
11.09.2016, 00:27
    #39307135
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
Retvisan,

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


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

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


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

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

ne pomoglo....
...
Рейтинг: 0 / 0
11.09.2016, 07:53
    #39307157
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
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
11.09.2016, 11:08
    #39307171
менять условие where из формы
Retvisan....МИФ выдает мне ошибку...

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

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

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

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

ne pomoglo....и не поможет:открывающихся скобок ТРИ а закрывающихся ОДНА
сделайте как Вам сказано-именно так: 19651593
...
Рейтинг: 0 / 0
11.09.2016, 14:34
    #39307196
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
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
11.09.2016, 14:35
    #39307197
Retvisan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
менять условие where из формы
sdku,

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


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