Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 25.07.2018
Сообщений: 10
1

Параметрический запрос со сложным отбором

28.07.2018, 15:45. Показов 816. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Суть проблемы: у нас есть список показателей и данные по ним. в форме сделан список с этими показателями, сделав выбор из которого, нам по запросу вытягиваются данные. Если у данного списка параметр "отсутствует несвязанное выделение" - запрос работает норм, как только меняем параметр на "со связанным выбором" - запрос не работает, точнее пустая таблица. Исследовав данный вопрос пришел к выводу, что нужно будет прописать команду на ВБ, но после этого все равно не работает отбор. Суть кода планировалась следующая: выделяю параметры со списка и код "проставляет" их в отбор соответствующей графы запроса. Код, который у меня получился:
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
Private Sub Список_показники_AfterUpdate()
   
    Dim varItem As Variant
    Dim strTemp As String
    Dim strSQL As String
    Dim db As DAO.Database
    Dim qry As QueryDef
    
strSQL = "SELECT Показник.Код показника, Показник.Найменування показників FROM Показник "
 
    For Each varItem In Me.ActiveControl.ItemsSelected
        strTemp = strTemp & "((Показник.Код показника) = " & Me.ActiveControl.ItemData(varItem) & ") Or "
    Next
    
    strSQL = strSQL & "WHERE (" & Left(strTemp, Len(strTemp) - 4) & ");"
    
'    On Error Resume Next
    Set db = CurrentDb
    With db
        .QueryDefs.Delete "Запрос1"
        Set qry = .CreateQueryDef("Запрос1", strSQL)
    End With
 
End Sub
Прошу гуру и мастеров помочь в решении вопроса.
ПС. если можно решить данный вопрос без прописки кода ВБ - прошу подсказать как...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.07.2018, 15:45
Ответы с готовыми решениями:

Параметрический запрос со сложным отбором списка лицензиатов
Доброго времени суток! В первом вопросе параметрического запроса со сложным отбором Ув. mobile...

Запрос на выборку со сложным условием
Уважаемые Форумчане! Мне кажется, что я бьюсь над довольно стандартной задачей. Но чем больше...

Запрос с отбором по последей дате
Доброго дня всем! Есть база учета местонахождения тары, итоговая таблица с полями: НомерТары,...

Запрос с отбором нескольких параметров
Добрый день, всем! Есть таблица состоящая из столбцов: 1. ID детали 2. Количество 3. Замечание...

5
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
28.07.2018, 16:39 2
Попробуйте. Предполагается, что в БД есть сохраненный запрос с именем "Запрос1" и любым содержанием, чтобы его можно было менять.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Список_показники_AfterUpdate()
    Dim s, v, sq
    For Each v In Me.Список_показники.ItemsSelected
        s = s & "," & Me.Список_показники.ItemData(v)
    Next
    s = Mid(s, 2)
    Me.txt = s
    sq = "SELECT Показник.Код показника, Показник.Найменування показників FROM Показник " _
    & " where Показник.Код показника in (" & s & ")"
    CurrentDb.QueryDefs("Запрос1").sql = sq
End Sub
0
0 / 0 / 0
Регистрация: 25.07.2018
Сообщений: 10
29.07.2018, 08:07  [ТС] 3
Ув. mobile, не получилось, гляньте пожалуйста на базу (может у меня руки кривые...)... базу прикладываю
Вложения
Тип файла: rar Desktop.rar (334.1 Кб, 3 просмотров)
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
29.07.2018, 09:55 4
Код показника введен в sql-выражение источника списка, поскольку выбор по коду, а его нет. Исправлен характеристики списка на случай 2 столбцов. Изменен код ВБА из-за наличия пробелов в именах полей. Ранее просмотрел, не заметил.
Visual Basic
1
2
3
4
5
6
7
8
9
10
Private Sub Список_показники_AfterUpdate()
    Dim s, v, sq
    For Each v In Me.Список_показники.ItemsSelected
        s = s & "," & Me.Список_показники.Column(1, v)
    Next
    s = Mid(s, 2)
    sq = "SELECT Показник.[Код показника], Показник.[Найменування показників] FROM Показник " _
    & " where Показник.[Код показника] in (" & s & ")"
    CurrentDb.QueryDefs("Запрос1").SQL = sq
End Sub
Вложения
Тип файла: rar db1.rar (40.8 Кб, 8 просмотров)
1
0 / 0 / 0
Регистрация: 25.07.2018
Сообщений: 10
30.07.2018, 09:07  [ТС] 5
Всем доброго времени суток. Ув. mobile, огоромное спасибо - все работает!

ПС. подскажите, пожалуйста, что значит строка в Вашем коде?
Visual Basic
1
 s = Mid(s, 2)
0
Эксперт MS Access
26818 / 14497 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
30.07.2018, 19:03 6
Это удаление первой запятой до перечисления кодов. Функция Mid позволяет не использовать третий параметр (длина строки), в этом случае по умолчанию предполагается весь текст, начиная с указанного символа и до конца строки. И применяя Mid, удобнее ставить запятую впереди набора кодов, поскольку не требуется высчитывать еще и длину строки, как в Вашем коде/
0
30.07.2018, 19:03
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.07.2018, 19:03
Помогаю со студенческими работами здесь

Параметрический запрос
Помогите пожалуйста! Ситауция такая. Есть поле , в нем через запятую перечисляются имена актеров...

Параметрический запрос
Уважаемые знатоки, подскажите пожалуйста, мне нужно ввести год из даты, как это сделать?

Параметрический запрос
Здравствуйте! Подскажите, пожалуйста, как сделать параметрический запрос, чтобы при вводе данных...

Параметрический запрос
Не понимаю, как сделать запрос. Вот простой пример. Есть наименование товара, есть его количество....


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Алгоритмика
hw_wired 28.01.2025
Введение: Основы алгоритмики и её роль в информатике В современном мире программирование и алгоритмическое мышление стали неотъемлемой частью образования и профессиональной деятельности. . . .
Информационное моделирование
hw_wired 28.01.2025
Введение в информационное моделирование В современном мире информационное моделирование стало неотъемлемой частью научной, образовательной и профессиональной деятельности. Это мощный инструмент. . .
Объекты и их имена
hw_wired 28.01.2025
Введение: Основы объектного подхода и их роль в информатике В современном мире информационных технологий объектный подход стал фундаментальным принципом организации и обработки информации. Этот. . .
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru