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

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

11.09.2016, 02:56. Показов 2747. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru