Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS Access > Найти значения по условию в одном запросе


Автор: NovPol 26.2.2016, 15:23
Здравствуйте, 

Подскажите, пожалуйста, выполнимо ли такое: Есть запрос в Access, из этого запроса надо получить 100 значений по определенным условиям и внести их в определенные ячейки в excel. Как можно создать один рекордсет внести в него все значения из запроса и уже после этого разбрасывать значения в определенные ячейки. Спасибо.

Автор: Akina 26.2.2016, 15:33
За каким фигом надо делать какие-то там фильтрации на результатах выполнения  запроса, когда можно, модифицировав его текст, сразу получить то, что нужно?

Автор: NovPol 26.2.2016, 15:56
То что нужно получить, не удасться. В excel нужно выгружать данные за разные периоды, плюс данные, которые нужны, могут меняться, каждый раз создавать новые запросы в access, чтобы они выгружали нужные данные за разные периоды не хочется (да и толком не умею), поэтому в базе данных был создан один запрос из которого нужно выгрузить данные. На сегдоняшнем этапе это намного проще.

Автор: Akina 26.2.2016, 16:06
Цитата(NovPol @  26.2.2016,  16:56 Найти цитируемый пост)
То что нужно получить, не удасться.

Если ты не умеешь, это не значит, что невозможно.

Автор: NovPol 26.2.2016, 16:11
Понятно, что возможно, я имел в виду, трудозатраты будут несопоставимы. С базой данных access не все пользователи могут работать, поэтому, чтобы получить необходимые для себя данные они могут использовать excel. Есть шаблон excel и в него нужно из запроса выгружать данные. 

Автор: Akina 26.2.2016, 17:36
Цитата(NovPol @  26.2.2016,  17:11 Найти цитируемый пост)
я имел в виду, трудозатраты будут несопоставимы

Трудозатраты на что? 
На программирование? фигня, они одноразовые.
На заполнение формы исходных данных и нажатие кнопки "Сформировать отчёт"? ничего, не перетрудятся.

Цитата(NovPol @  26.2.2016,  17:11 Найти цитируемый пост)
С базой данных access не все пользователи могут работать

Причина? Аллергия? Религия? Access не установлен?

Автор: NovPol 26.2.2016, 18:01
Access не установлен. Может и фигня сделать запрос в access и по нему уже делать, но можно ли работать с recordset? Можно ли обратившись один раз к базе данных, выбрать из нее 100 значений? Например, загрузить в recordset данные из запроса и циклом эти данные выгрузить в ячейки? Спасибо.

Автор: Akina 27.2.2016, 14:37
Всё это - да, можно.

Автор: NovPol 27.2.2016, 21:05
А подскажите, пожалуйста, как это можно сделать или где мне можно об этом прочитать, чтобы понять как это делается

Автор: Akina 29.2.2016, 09:02
Давайте DDL таблиц (лишние для логики поля можно поскипать) и чёткую постановку задачи. Тогда будет предмет для разговора.

Автор: NovPol 29.2.2016, 10:20
Во вложении пример. В этом примере попытка выполнить задачу. Задача состоит в том, чтобы из базы access выбрать по определенным критериям значения и вставить их в определенные ячейки excel. Проблема состоит в том, что когда происходит отбор, то при выборе каждого значения макрос всегда обращается к базе данных. В базе данных большой запрос, состоящий из запросов, поэтому когда макрос его открывает это занимает время. Значений, какие нужны выбрать их около сотни, поэтому если всегда обращаться к базе данных, то выполнение запроса займет очень много времени. И задача состоит в том, чтобы один раз обратиться к базе данных, записать эти данные например в recordset и после этого циклом просто раскидать значения из recordset в нужные ячейки. Хочется понять как это можно сделать и можно ли это вообще сделать. Спасибо.

Автор: Akina 29.2.2016, 11:40
Цитата(NovPol @  29.2.2016,  11:20 Найти цитируемый пост)
Хочется понять как это можно сделать

Достаточно во встроенной справке Access почитать раздел по перекрёстным запросам. Собственно то, что программно формируется в Excel, и есть результат перекрёстного запроса. Соответственно можно просто сделать источником данных диапазона в Excel этот самый перекрёстный запрос - и даже импортировать ничего не нужно будет, не говоря уж о поячеечной обработке.

Автор: NovPol 29.2.2016, 12:14
Спасибо. Перекрестный запрос можно было бы использовать, но в нем в column heading можно указывать только одно значение, а в таблице, в которую нужно загрузить данные заголовков столбцов несколько. Например, Страна1 и это страна разделяется на Регион1, Регион2.. Страна2, разделается на Регион1, Регион2... И когда формируется перекрестный запрос, то данные идут по возрастанию, а в таблице эти данные идут по другой логике. Как выход наверное можно составить несколько перекрестных запросов и выгружать их по порядку, но не проще данные из запроса загрузить куда нибудь типа рекродсет и с ним уже работать?

Автор: NovPol 29.2.2016, 12:30
И еще хотелось бы добавить, сейчас логика такая, что сначало должен идти регион3, потом регион 5, потом регион2.. Но со временем эта логика может поменяться и тогда, чтобы все верно отражалось, нужно будет менять и условия перекрестного запроса. Но во первых, не все пользователи работали с access, поэтому им что то поменять будет сложно,а во вторых доступа к access есть не у всех. А если выгружать в какой нибудь рекродсет, то пользователи, могут в excel, поменять названия заголовков как они захотят и у них все будет рабоать. Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)