Форум программистов, компьютерный форум, киберфорум
Наши страницы
MS Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
1

Выбор таблицы источника для запроса

28.01.2016, 11:19. Просмотров 1004. Ответов 26
Метки нет (Все метки)

Приветствую
И снова вопрос...
Есть несколько таблиц с одинаковыми полями но разными данными.
Эти данные нужно обработать в запросе и вставить в отчет.
Есть форма, где перед вызовом отчета предлагается выбрать таблицу источник данных, она-же и вызывает отчет.
Нужно перед вызовом отчета выбрать таблицу источник данных для запроса - отчета.
Пример в приложении.

И если не трудно, как то спрятать кнопочку отправки на печать и предварительного просмотра.
Пожалуйста.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Вложения
Тип файла: rar Выбор аблицы источника для запроса.rar (18.5 Кб, 6 просмотров)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2016, 11:19
Ответы с готовыми решениями:

Выбор таблицы источника для запроса
Приветствую Подскажите пожалуйста решение такой задачи Имеется несколько...

Выбор таблицы источника для запроса с фильтром
Приветствую Очередная проблема Как выбирать источник для запроса было решено...

Выбор источника для отчета
Форумчане, помогите с кодом: вывод отчета в формате PDF осуществляется кодом:...

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

Фильтрация запроса-источника поля со списком
Всем доброго дня! Заранее прошу прощения. если повторюсь, но увы не удалось...

26
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 11:29 2
Как я вижу решение:
Во-первых, нужно не менять таблицу непосредственно в самом запросе, который в свою очередь у вас является источником для отчета, а менять сам источник записей для отчета (свойство RowSource) в зависимости от выбранной на форме таблицы.
Во-вторых, если у вас определенное, не меняющееся количество таблиц, то можно вместо поля на форме сделать поле со списком, куда забить перечень таблиц. Если же количество таких таблиц не определено заранее (т.е. может меняться), то нужно сделать цикл по опросу всех имен таблиц в базе (с фильтрованием их по какому-то принципу, например, "если имя таблицы начинается с...") и добавлением этих имен в данный список.

Добавлено через 1 минуту
То есть фактически вам нужно будет создать две процедуры:
1. процедуру формирования списка таблиц для поля со списком на форме.
2. процедуру отработки нажатия кнопки. в этой процедуре, в зависимости от выбранной таблицы, будет меняться SQL-текст запроса, который будет подставляться в источник строк отчета.
0
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
28.01.2016, 11:34  [ТС] 3
В принципе список таблиц часто меняться не будет, скорее добавляться, поэтому можно создать и список, да, сейчас сделаю.
А вот насчет источника записей для отчета, я так понимаю, тогда нужно каждой таблице сделать свой запрос?
Оно конечно можно, но плодить запросы стоит ли?
Может можно как-то все-же решить не плодя?
Еще я вроде слышал, что можно для отчета сделать как бы вложенный запрос, где источником строк будут инструкции мускула? ...или я что то спутал.
0
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
28.01.2016, 11:42  [ТС] 4
Ну вот добавил список таблиц.
А насчет тиражирования запросов, может таки можно обойтись без этого?
0
Вложения
Тип файла: rar Выбор аблицы источника для запроса1.rar (21.4 Кб, 3 просмотров)
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 11:50 5
Цитата Сообщение от sysghost Посмотреть сообщение
А вот насчет источника записей для отчета, я так понимаю, тогда нужно каждой таблице сделать свой запрос?
Не-не) Запрос будет всегда один, просто его SQL-текст будет формироваться программно, в зависимости от выбора, сделанного в поле со списком.
То есть примерно навскидку очень примерный код:

Visual Basic
1
2
3
strSQL = "ТекстЗапроса" & Me.ИмяПоляСоСписком & "Текст запроса дальше"      ' сборка строки запроса с нужным именем таблицы
ИмяОтчета.RowsSource = strSQL     ' присвоение источнику отчета сформированной строки
DoCmd.OpenReport ИмяОтчета     ' открытие отчета
Как-то вот так я это вижу.

И никакого "тиражирования запросов") Сам запрос можете вообще в таком случае удалить из базы, его текст каждый раз будет формироваться программно в зависимости от выбора в списке, и присваиваться отчету.

Добавлено через 2 минуты
То есть изначально заходите в запрос, выбираете в меню режим "SQL", копируете весь текст, потом этот текст вставляете в переменную в коде, заменяя кругом имя таблицы на значение из списка.

Добавлено через 2 минуты
То есть не совсем так. команда присвоения отчету строки SQL в качестве источника должна происходить при открытии самого отчета, а не в коде кнопки.

Добавлено через 1 минуту
Стоп) Скорее всего в команде открытия отчета есть параметр, отвечающий за источник данных. Вот в этот параметр и подставляем сформированный текст запроса. Вот так вот правильно будет.

Добавлено через 1 минуту
В общем, сейчас старшие товарищи с форума поправят то, что я тут наконсультировал))). Но общая идея, мне кажется, должна быть именно такая)
0
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
28.01.2016, 11:51  [ТС] 6
Цитата Сообщение от Kkarn Посмотреть сообщение
То есть примерно навскидку очень примерный код:
Боюсь я сам это не доработаю, или доработаю не скоро.
Кроме того в запросе формируются вычисляемые поля и их формат представления, как в примере примерно.
Я так понимаю, нужно для этих полей посмотреть текст SQL запроса и вставить этот текст в тело источника строк для полей отчета, так?
А, я увидел Ваши дополнения.
Ну пока я не совсем понимаю, что и как, может кто покажет на примере, так мне куда понятнее и есть возможность экспериментировать.
А когда вокруг темный лес, хз куда двигать изначально.
0
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 11:58 7
sysghost, Попробую накидать в вашем примере, что я имею в виду.
0
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 12:07 8
Вот)
0
Вложения
Тип файла: rar Выбор аблицы источника для запроса1.rar (29.7 Кб, 5 просмотров)
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 12:09 9
То есть по нажатию на кнопку на форме мы формируем строку запроса, в которой имя таблицы будет подставлено из выбранного в списке. Потом идет команда открытия отчета, причем в свойство OpenArgs отчета мы передаем сформированный текст запроса.
Затем, уже при открытии запроса, на его событии загрузки происходит подстановка текста запроса в источник записей данного отчета.

Добавлено через 1 минуту
А сам запрос можете смело удалить из базы.
Цитата Сообщение от sysghost Посмотреть сообщение
Кроме того в запросе формируются вычисляемые поля и их формат представления
Не, формат представления не формируется в запросе. Формат представления вы уже настраиваете в отчете.
2
mobile
Эксперт MS Access
23338 / 13143 / 2754
Регистрация: 28.04.2012
Сообщений: 14,395
28.01.2016, 12:14 10
Лучший ответ Сообщение было отмечено sysghost как решение

Решение

Ну и я дам, хотя опоздал. Не пропадать же добру
Динамически изменяется запрос-источник отчета в коде кнопки
1
Вложения
Тип файла: rar Выбор аблицы источника для запроса1.rar (22.4 Кб, 6 просмотров)
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
28.01.2016, 12:18  [ТС] 11
Цитата Сообщение от Kkarn Посмотреть сообщение
То есть по нажатию на кнопку на форме мы формируем строку запроса, в которой имя таблицы будет подставлено из выбранного в списке. Потом идет команда открытия отчета, причем в свойство OpenArgs отчета мы передаем сформированный текст запроса.
Затем, уже при открытии запроса, на его событии загрузки происходит подстановка текста запроса в источник записей данного отчета.
Благодарю, работает, теперь уже буду разбираться что к чему на основе Ваших пояснений.
А нельзя ли кнопочку от печати спрятать, где это настраивается, в свойствах кнопки или клонтитула, где она расположена, или может её вобще в ином месте расположить?
0
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 12:20 12
mobile, Во, а я как раз забыл, как правильно сразу присвоить отчету нужный источник записей)) Как дурак передавал его через OpenArgs... Ну, сочинилось на скорую руку, и в принципе работает) Хотя, конечно, так как у вас - гораздо правильнее. Я бы даже сказал - единственно правильно.

Добавлено через 1 минуту
Цитата Сообщение от sysghost Посмотреть сообщение
А нельзя ли кнопочку от печати спрятать
Так а зачем ее прятать? Точнее, зачем ее добавлять в сам отчет, чтобы потом спрятать?).
0
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
28.01.2016, 12:22  [ТС] 13
Цитата Сообщение от mobile Посмотреть сообщение
Ну и я дам, хотя опоздал. Не пропадать же добру
Динамически изменяется запрос-источник отчета в коде кнопки
И Вам моя благодарность, два решения лучше чем одно, вот только делема, кому засчитывать лучший ответ...
Я таки Kkarn засчитаю, он первым откликнулся и пояснений кучу дал, уж извините...
0
ltv_1953
Эксперт MS Access
12896 / 5857 / 1137
Регистрация: 21.06.2012
Сообщений: 10,555
28.01.2016, 12:23 14
Цитата Сообщение от Kkarn Посмотреть сообщение
А сам запрос можете смело удалить из базы.
А вот этого делать не надо. SQL строка, переданная через OpenArgs, вроде бы не сохраниться в источнике записей отчета. Как потом отчет без источника записей изменять, если понадобится.
0
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 12:23 15
Цитата Сообщение от sysghost Посмотреть сообщение
Я таки Kkarn засчитаю, он первым откликнулся и пояснений кучу дал, уж извините...
Да я не гоняюсь абсолютно)) У mobile правильно прописана процедура передачи сформированной строки в сам отчет, без лишних танцев. Так что вы лучше возьмите его пример за основу.
1
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
28.01.2016, 12:25  [ТС] 16
Цитата Сообщение от Kkarn Посмотреть сообщение
Так а зачем ее прятать? Точнее, зачем ее добавлять в сам отчет, чтобы потом спрятать?).
Так задумывалось изначально, что будет вызываться сам отчет, и уже из него будет печать, возможно да, нужно на форме расположить, я попробую сам разобраться если что.
0
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 12:26 17
Цитата Сообщение от ltv_1953 Посмотреть сообщение
SQL строка, переданная через OpenArgs вроде бы не сохраниться в источнике записей отчета. Как потом отчет без источника записей изменять, если понадобится.
Кстати да. Но, в принципе, если отчет будет открываться только с этой кнопки, то он же все равно будет отображать нужные данные. А менять его и без источника записей можно же. В том же режиме макета, например...
0
texnik-san
шапоклякистка 8-го дня
3630 / 2191 / 389
Регистрация: 26.06.2015
Сообщений: 4,648
Записей в блоге: 1
28.01.2016, 12:27 18
Цитата Сообщение от sysghost Посмотреть сообщение
А нельзя ли кнопочку от печати спрятать, где это настраивается, в свойствах кнопки или клонтитула, где она расположена, или может её вобще в ином месте расположить?
Свойства -Макет - режим вывода - только на экран
2
sysghost
39 / 39 / 6
Регистрация: 12.01.2016
Сообщений: 399
28.01.2016, 12:27  [ТС] 19
Цитата Сообщение от Kkarn Посмотреть сообщение
Да я не гоняюсь абсолютно)) У mobile правильно прописана процедура передачи сформированной строки в сам отчет, без лишних танцев. Так что вы лучше возьмите его пример за основу.
Ок, раз Вы сами так говорите, я так и сделаю, для меня не очевидно, чей пример лучше если оба работают.
В любом случае благодарю за помощь.
0
Kkarn
871 / 263 / 47
Регистрация: 02.12.2014
Сообщений: 1,185
28.01.2016, 12:30 20
sysghost, то есть сама кнопка выводится и на печать? Если так, то где-то у нее есть свойство вывода на печать, если я не ошибаюсь... вот его и поправьте.

Добавлено через 1 минуту
texnik-san, точно, именно это я и имел в виду)
0
28.01.2016, 12:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2016, 12:30

Смена запроса как источника данных формы
Приветствую Для смены источника данных - таблицы для формы используется такая...

Слишком длинный текст для изменения в поле для запроса на создание таблицы
Приветствую Уважаемых пользователей эхотага! Помогите пожалуйста разрешить...

Обновление таблицы-источника формы
Есть две таблицы: 1. НаборЦветов 2. ВыбранныеЦвета и форма ВыбранныеЦвета...


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

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

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