Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
Vavaev
0 / 0 / 0
Регистрация: 01.07.2017
Сообщений: 25
#1

Поиск в несколько итераций - MS Access

25.09.2017, 22:39. Просмотров 182. Ответов 5
Метки нет (Все метки)

Хотелось бы выполнять поиск на лету (без создания временных таблиц) в несколько итераций.
Сначала применяем к общей таблице начальный критерий поиска. Выбираем определенный набор записей. Затем к этому набору применяем следующий критерий и сокращаем набор. И так далее по следующим критериям. Число критериев может быть различно.
Я так понял, что все это можно сделать в объекте Recordset. У него есть свойство Filter. Подскажите пожалуйста, как из объекта Recordset со свойством Filter сделать новый объект Recordset, но с набором записей усеченным фильтром, чтобы к этому новому объекту применить следующий фильтр?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.09.2017, 22:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поиск в несколько итераций (MS Access):

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

Зависимость между двумя ячейками: несколько водителей и несколЬко автомобилей
Подскажите, пожалуйста, как сделать зависимость между двумя ячейками? ...

Увеличение переменной раз в несколько итераций
Как сделать так, чтобы переменная n раз в 5 итераций увеличивалась на 1? Ну и...

Подскажите, как сделать несколько итераций в одной программе
суть такова: есть формула типа а=f(v,h)нужно, рассчитать несколько итераций по...

Решение методом простых итераций, методов итераций и хорд, методом итераций и касательных
Здравствуйте.Подскажите пожалуйста,как написать программы для решения методом...

Поиск корней нелинейных уравнений. Метод простых итераций
Найти в интервале корень уравнения: \exp ^x-{x}^{2}=0

5
corbis
541 / 270 / 48
Регистрация: 03.04.2015
Сообщений: 926
25.09.2017, 22:47 #2
Лучший ответ Сообщение было отмечено Vavaev как решение

Решение

На вскидку
Visual Basic
1
2
recorset1.Filter = "[имяПоля]=" & значениеПеременной      
Set recorset2 = recorset1.OpenRecordset
3
Vavaev
0 / 0 / 0
Регистрация: 01.07.2017
Сообщений: 25
25.09.2017, 22:53  [ТС] #3
Спасибо. Это то, что нужно!
0
Vavaev
0 / 0 / 0
Регистрация: 01.07.2017
Сообщений: 25
01.10.2017, 18:33  [ТС] #4
Рано обрадовался. Не работает.
На этой строке выдает Object doesn't support this property or method (Error 438)
Объекты объявляю как
Visual Basic
1
Dim rstData, rstData2 As ADODB.Recordset
Перый рекордсет открываю так
Visual Basic
1
2
Set rstData = New ADODB.Recordset
rstData.Open strSQL, "ODBC;DRIVER={SQL Server};DSN=Server2008;DATABASЕ=cstsk", adOpenKeyset, adLockOptimistic
Код такой
Visual Basic
1
2
rstData.Filter = "[athlete_forename] LIKE '" & search_name(1) & "%'"
Set rstData2 = rstData.OpenRecordset
Ошибка 438 в строке Set rstData2 = rstData.OpenRecordset

Добавлено через 3 минуты
А OpenRecordset это DAO что ли?
Как в ADO мою задачу выполнить?
0
mobile
Эксперт MS Access
22496 / 12814 / 2614
Регистрация: 28.04.2012
Сообщений: 14,017
01.10.2017, 19:20 #5
Цитата Сообщение от Vavaev Посмотреть сообщение
Как в ADO мою задачу выполнить?
В отличие от DAO, в ADODB после применения Filter рекордсет уже отфильтрованный. Дополнительные действия не требуются. Чтобы другой рекордсет получил отфильтрованные значения, достаточно его просто присвоить
Visual Basic
1
2
rstData.Filter = "[athlete_forename] LIKE '" & search_name(1) & "%'" 'Рекордсет уже отфильтрован
Set rstData2 = rstData
0
Vavaev
0 / 0 / 0
Регистрация: 01.07.2017
Сообщений: 25
01.10.2017, 20:18  [ТС] #6
Не получается. Второй фильтр затирает первый.
Visual Basic
1
2
3
4
5
6
7
Dim rstData, rstData1, rstData2 As ADODB.Recordset
Set rstData = New ADODB.Recordset
rstData.Open strSQL, "ODBC;DRIVER={SQL Server};DSN=Server2008;DATABASЕ=cstsk", adOpenKeyset, adLockOptimistic
rstData.Filter = "[athlete_forename] LIKE '" & search_name(1) & "%'"
Set rstData1 = rstData
rstData1.Filter = "[athlete_patronym] LIKE '" & search_name(2) & "%'"
Set rstData2 = rstData1
В результате в rstData2 оказываются записи, как будто ему передали не результат первого фильтра, а исходный рекордсет.
0
01.10.2017, 20:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2017, 20:18
Привет! Вот еще темы с решениями:

Посчитать количество проведенных итераций (метод простых итераций, Pascal -> C++)
перевести из паскаля в С++ program method_of_simple_iteration; uses crt;...

Найти количество итераций и корень уравнения методом простых итераций
Помогите с программкой. Ну совсем никак. Даже не представляю что надо писать...

Поиск по БД и вывод в несколько таблиц
Подскажите pls, ка соорудить следующее: веду поиск по 1 таблице, а вывожу...

Поиск файлов в несколько потокв
нужно реализировать поиск файлов в несколько потокв, пока без синхронизации,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru