Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 154

Создание запроса в access vba

11.09.2016, 02:56. Показов 2867. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
приветствую,
У меня есть в форме есть список,который ссылается на запрос, и я хочу при помощи полей со списком фильтровать его, т.е. в самом запросе есть ссылки на контролы в форме(кусок кода ниже и выше), изменяя запрос я меняю логику и/или между полями со списком,для этого я сделал блоки переключателей
вот код
Visual Basic
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
ошибка происходит в коде sql
в этом куске
(((KL.[Nomer dokumenta]) Like " * " & (Forms!KL_for_KL_LISTE!nomer_instr) & " * ")" &

vba не нравятся звезды и кавычки и амперсанд
в чем пробдема? при обычном создании запроса все работает

Добавлено через 23 минуты
номер ошибки #13 Type Mismatch
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2016, 02:56
Ответы с готовыми решениями:

Создание запроса Access VBA
Всем привет... Имеются две таблицы Локальная и вторая на сервере SQL Server... пробовал их объединить..но к что то не так...я в...

Создание запроса VBA
Как сформировать запрос с параметрами из VBA, что бы он в таком виде был.

Ошибка при выполнении запроса в коде на VBA Access
Здравствуйте. Делаю в БД на аксесс форму для вывода данных. На форме есть комбобокс, где выбирается значение для условия отбора в запросе....

28
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,673
11.09.2016, 04:41
Студворк — интернет-сервис помощи студентам
выведется вся таблица (включая Null)
а если написать LIke'**' то выберется не вся таблица - строки с null будут убраны из выборки
1
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 154
11.09.2016, 04:47  [ТС]
я имею ввиду что полчуить запрос такого вида как для where вне зависимости от значения комбобокса
(((KL.[Nomer dokumenta]) Like " * " & (Forms!KL_for_KL_LISTE!nomer_instr) & " * ")"
я не могу?
0
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,673
11.09.2016, 05:00
Лучший ответ Сообщение было отмечено Федо как решение

Решение

да
строка Where будет постоянно меняться
( а она у вас и так постоянно меняется)
1
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 154
11.09.2016, 05:07  [ТС]
понял) спасибо за помощь из дождливого СПб)
0
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,673
11.09.2016, 05:09
ГОсподи - не спится же Вам
ответный реверанс
Пожалуйста из солнечной Хакасии
0
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 154
11.09.2016, 16:35  [ТС]
Visual Basic
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, то вылетает ошибка синтаксиса

Добавлено через 1 час 30 минут
Разобрался) заменил все переменными)
0
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 154
11.09.2016, 21:24  [ТС]
беда не приходит одна))

Visual Basic
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
42
43
44
45
46
47
48
49
DoCmd.SetWarnings False
 
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
Dim nomer_instr_var As String
Dim vysok_napr_var As String
Dim bereg_napr_var As String
Dim akum_napr_var As String
Dim zazem_var As String
Dim tm_vozd_var As String
Dim pm_vozd_var As String
 
Set Desiro1 = CurrentDb
Desiro1.QueryDefs.Refresh
For Each KL_filter In Desiro1.QueryDefs
If KL_filter.Name = "KL_filter" Then
Desiro1.QueryDefs.Delete KL_filter.Name
End If
 
Next KL_filter
 
If Me.tokpriemnik_bereg = 1 Then tokpriemnik_bereg_s = " OR " Else tokpriemnik_bereg_s = " AND "
If Me.bereg_110v = 1 Then bereg_110v_s = " OR " Else bereg_110v_s = " AND "
If Me.v110_zazemlen_s = 1 Then v110_zazemlen_s = " OR " Else bereg_110v_s = " AND "
If Me.zazemlen_pm = 1 Then zazemlen_pm_s = " OR " Else zazemlen_pm_s = " AND "
If Me.pm_tm = 1 Then zazemlen_pm_s = " OR " Else pm_tm_s = " AND "
 
CurrentDb.Execute "Delete * FROM KL_filter_table"
 
nomer_instr_var = "KL.[Nomer dokumenta] LIKE '*" & Forms!KL_for_KL_LISTE!nomer_instr & "*'"
vysok_napr_var = "[Sostoyanie poezda].Tokopriemnik Like '*" & Forms!KL_for_KL_LISTE!vysok_napr & "*'"
bereg_napr_var = "[Sostoyanie poezda].[Energosnabzhenie cherez vneshnee pitanie] Like '*" & Forms!KL_for_KL_LISTE!bereg_napr & "*'"
akum_napr_var = "[Sostoyanie poezda].[Akkumulyatornaya batareya 110 V] Like '*" & Forms!KL_for_KL_LISTE!akum_napr & "*'"
zazem_var = "[Sostoyanie poezda].[Elektropoezd zazemlen] Like '*" & Forms!KL_for_KL_LISTE!zazem & "*'"
tm_vozd_var = "[Sostoyanie poezda].[Pnevmaticheskij tormoz] Like '*" & Forms!KL_for_KL_LISTE!tm_vozd & "*'"
pm_vozd_var = "[Sostoyanie poezda].[Pnevmosnabzhenie cherez pitatelnuyu magistral] Like '*" & Forms!KL_for_KL_LISTE!pm_vozd & "*'"
 
strSQL = "INSERT INTO KL_filter_table 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 " & nomer_instr_var & " AND " & vysok_napr_var & tokpriemnik_bereg_s & bereg_napr_var & bereg_110v_s & akum_napr_var & v110_zazemlen_s & zazem_var & zazemlen_pm_s & pm_vozd_var & pm_tm_s & tm_vozd_var
Set KL_filter = Desiro1.CreateQueryDef("KL_filter", strSQL)
 
DoCmd.OpenQuery "KL_filter"
DoCmd.SetWarnings True
почему сейчас ошибка вылетает?
Миниатюры
Создание запроса в access vba  
0
4089 / 1469 / 401
Регистрация: 07.08.2013
Сообщений: 3,673
12.09.2016, 00:46
OR и AND
видимо цепочка собирается настолько непонятная что у акса крышу рвет
1
0 / 0 / 0
Регистрация: 17.03.2016
Сообщений: 154
12.09.2016, 00:53  [ТС]
разобрался) так и было)

Добавлено через 23 секунды
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.09.2016, 00:53

Проверка SQL-запроса в VBA и отчет из Access в Excel
Здравствуйте! Учусь писать SQL-запросы и VBA, нужна помощь с проверкой на ошибки. Схема данных Имеется форма договоры, с...

Запуск запроса к таблице на SQL server через VBA access 2007
Здравствуйте! дано: база данных аксес 2007, к ней прилинкованы две таблицы с sql server...

Создание запроса в MS Access
Помогите составить запрос: "Определите из какого из представленных городов учится наибольшее число студентов и выведите информацию о...

Создание запроса в Access
Добрый день! Требуется создать базу данных по иерархической файловой системе: создать 2 таблицы - Папки(Уникальный идентификатор...

Создание запроса в access
Всем привет! Мне нужна помощь в создании запроса в access, нужно сделать так, чтобы запрос выдавал в одном блоке рабочие номера...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru