Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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:11 |
Понятно, что возможно, я имел в виду, трудозатраты будут несопоставимы. С базой данных access не все пользователи могут работать, поэтому, чтобы получить необходимые для себя данные они могут использовать excel. Есть шаблон excel и в него нужно из запроса выгружать данные. |
Автор: Akina 26.2.2016, 17:36 |
Трудозатраты на что? На программирование? фигня, они одноразовые. На заполнение формы исходных данных и нажатие кнопки "Сформировать отчёт"? ничего, не перетрудятся. Причина? Аллергия? Религия? 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 |
Достаточно во встроенной справке 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, поменять названия заголовков как они захотят и у них все будет рабоать. Спасибо. |