Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
Заблокирован
1

Задать источник записей для отчета

06.09.2013, 11:26. Показов 7159. Ответов 35
Метки нет (Все метки)

Всем добрый день!
Хочется реализовать следующее, а умишек не нажил.
Есть Форма1, в ней 3 кнопки:
Кнопка1
Кнопка2
Кнопка3
есть 3 одинаковых запроса, но с разными условиями отбора
Запрос1
Запрос2
Запрос3
есть один - Отчет1
Как сделать, что бы при открытии - Отчет1, задать ему источником строк - Запрос1, если я нажму - Кнопка1
Соответственно 2 и 3
Как то видел на форуме нечто подобное, но по своему легкомыслию не сохранил ни пример ни ссылочку, сейчас жалею, а найти не могу. Поиск ни чего похожего не дал.
Вроде бы там не сильно много кода было 1 или 2 строчки.
Заранее благодарен - ПУХ
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2013, 11:26
Ответы с готовыми решениями:

Источник записей отчета
Добрый день! В таблице БД было поле типа OLE, в котором хранились документы MS WORD. Проблема...

Источник записей отчета
Добрый день! Имеется кнопка на форме, которая вызывает предварительный просмотр отчета Private...

Источник записей для формы
Возможно ли в качестве источника записей для формы использовать одновременно несколько НЕ СВЯЗАННЫХ...

Изменяем источник записей для подчиненной формы
Можно с помощью VBA изменять источник данных (таблицы) для подчиненной формы. Например в Поле со...

35
3349 / 1767 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
06.09.2013, 11:29 2
Как вариант сделать источником селект просто, а условия(Where Condition) передавать из формы отчету.
Тогда не нужны будут и запросы.
Можете показать эти самые 3 запроса?
0
Заблокирован
06.09.2013, 11:35  [ТС] 3
Цитата Сообщение от Agapov_stas Посмотреть сообщение
Можете показать эти самые 3 запроса?
Нет пока не могу, задумка появилась только час назад, все это время занимался поиском.
А как это можно сделать хотя бы на приблизительном примере? Потом наверное смогу под себя переделать.
Ну или по моему варианту вопроса.
0
3349 / 1767 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
06.09.2013, 11:39 4
Ну смотрите.
Запрос1:
SQL
1
SELECT * FROM Таблица WHERE Поле1=[Введите значение]
Запрос2:
SQL
1
SELECT * FROM Таблица WHERE Поле2=[Введите значение]
Можно сделать отчет с источником:
SQL
1
SELECT * FROM Таблица
А из формы открывать отчет с условием:
Visual Basic
1
DoCmd.OpenReport ("Отчет"), acViewPreview, , "Поле1='Значение1'"
Visual Basic
1
DoCmd.OpenReport ("Отчет"), acViewPreview, , "Поле2='Значение2'"
1
Эксперт MS Access
16342 / 6779 / 1486
Регистрация: 21.06.2012
Сообщений: 12,517
06.09.2013, 11:54 5
Другой вариант - передавать через OpenArgs при открытии отчета номер запроса (DoCmd.OpenReport "Отчет", acViewPreview, , , , "1"), который нужно использовать в качестве источника строк отчета.
А при открытии отчета подставлять источник строк в зависимости от OpenArgs.
Visual Basic
1
2
3
4
5
6
7
8
Private Sub Report_Open(Cancel As Integer)
    Select Case Me.OpenArgs
    Case 1
        Me.RecordSource = "Запрос1"
    Case 4
        Me.RecordSource = "Запрос4"
    End Select
End Sub
3
Заблокирован
06.09.2013, 11:54  [ТС] 6
Agapov_stas - Спасибо, но 1-й примемер с параметром, которые нужно вводить не подходят, т. к. это мягко говоря Утомительно и Напряжно, да и не всегда знаешь, что и в каком виде или формате нужно ввести, а тут уже все сделано, только жми кнопку.
Второй пример более похож на нужное, правда сразу возникает дополнительный вопрос,
если условий отбора в запросе 2 или 4, или же поля имеют тип данных:
1. Текстовое,
2. Числовое,
3. Логическое,
4. Дата/Время
Это нужно учитывать в процедуре? Если да, то как это будет выглядеть?
0
3349 / 1767 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
06.09.2013, 12:09 7
Цитата Сообщение от kmv-puh Посмотреть сообщение
не подходят
Тогда вариант ltv_1953.

Добавлено через 12 минут

Не по теме:

Цитата Сообщение от kmv-puh Посмотреть сообщение
но 1-й примемер с параметром
Эм..Это ВСЕ был один пример.
Я лишь привел пример запросов(которые Вы не смогли показать).Если "корень" одинаковый, то можно использовать условие Where Condition. Тогда запросы не нужны будут.
Но, если нужны запросы, тогда выше предложили вариант.

1
Заблокирован
06.09.2013, 12:18  [ТС] 8
Цитата Сообщение от Agapov_stas Посмотреть сообщение
Эм..Это ВСЕ был один пример.
В смысле, вы имеете в виду -
В форме выбираю значение в свободном Поле1, соответствующем полю в Запросе, жму кнопку1 и открывается отчет с условием соответствующим значению поля1? Или при открытии отчета вылезет формочка, где нужно будет ввести значение, как это обычно происходит при открытии Параметрического запроса?
0
3349 / 1767 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
06.09.2013, 12:22 9
Ну, я ведь не знаю как выглядит условие Вашего запроса..
Если у Вас передаются сразу значения(что скорее всего, раз для каждой кнопки своя фильтрация), то можно передавать сразу значения, если ссылки на форму, то и так можно.
Для условия Where Condition не суть важно, что передавать.
0
Заблокирован
06.09.2013, 12:29  [ТС] 10
ltv_1953 - Извиняюсь за тупой вопрос , под - Case 1, Case 4 подразумевается группа переключателей?
1
3349 / 1767 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
06.09.2013, 12:33 11
Нет, это параметр, который указывается для каждой кнопки отдельно..
0
3349 / 1767 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
06.09.2013, 12:39 12
Вот два обсуждаемых примера.
2
Вложения
Тип файла: rar Пример1.rar (15.4 Кб, 61 просмотров)
Тип файла: rar Пример2.rar (12.6 Кб, 56 просмотров)
Эксперт MS Access
16342 / 6779 / 1486
Регистрация: 21.06.2012
Сообщений: 12,517
06.09.2013, 12:40 13
Нет, это значения параметра вызова отчета - Me.OpenArgs.
1
Заблокирован
06.09.2013, 12:41  [ТС] 14
Цитата Сообщение от Agapov_stas Посмотреть сообщение
это параметр, который указывается для каждой кнопки отдельно
Стас - Всё, спасибо въехал, просто параметрический запрос навеял аналогию, тугодум знаете ли
1
Agapov_stas
06.09.2013, 12:50
  #15

Не по теме:

Цитата Сообщение от kmv-puh Посмотреть сообщение
просто параметрический запрос навеял аналогию
Хорошо, когда мысли есть...
У меня бывает часто наоборот..Сделать хочу, а в голову ничего не идет:)

0
Заблокирован
06.09.2013, 12:58  [ТС] 16
Всем спасибо за помощь.
Пока вроде бы всё.
Буду Ваять и применять у себя новые полученные знания.
0
Эксперт MS Access
26705 / 14385 / 3190
Регистрация: 28.04.2012
Сообщений: 15,783
06.09.2013, 13:01 17
Сегодняшняя интерфейсная тенденция это минимум кнопок. Только необходимые. Юзер должен видеть, что он выбирает: в комбобоксах, списках, группах, тривью и прочая. И только выбрав все, что надо, нажимается единственная кнопка, выполняющая все выбранные условия. Причем, где не выбрано, там должно стоять значение по умолчанию.Посмотрите, как сделана винда, как выбираются ее настройки.
И делать три кнопки для выполнения аналогичных запросов, отличающихся только параметрами, это интерфейсное излишество. Надо на форме задавать элементы выбора, чтобы юзер точно знал, что он выбирает, а не черные ящики с названиями Запрос1, Запрос2, Запрос3. Сделайте! И увидите насколько это удобнее. чем набор аналогичных кнопок. Предложите, скажем незнакомому человеку опробовать форму и почувствуете с какой опаской он будет нажимать ничего ему не говорящие кнопки. Да вы сами, через некоторое время, позабыв, чем отличаются запросы, будете не в лучшем расположении духа, когда придется выбирать между кнопками.
2
Заблокирован
06.09.2013, 13:51  [ТС] 18
mobile - Полностью поддерживаю и согласен со всеми Вами перечисленными доводами и рекомендациями. Сам придерживаюсь минимизации, наибольшей информативности и универсализма, когда это возможно.
Имена тех же кнопок и запросов мною были названы просто так для примера, мне нужно было понять принцип, алгоритм, как это выглядит и что и где пишется в процедурах, что происходит.
В реальной же БД, естественно ни я и ни кто другой не будет писать типа - Запрос1, Кнопка1, Отчет1 и т. п.
Ну и раз уж вы окунулись в это обсуждение, то и вы уж подсобите на примерчике (может даже есть уже готовые) типа - В начале задумка заключалась в следующем, но посчитал ее сильно сложной для себя в осуществлении, а предполагалось это так:
Есть Форма, в ней свободные элементы имеющие тип данных - допустим:
Код - Счетчик - ПолеСоСписком
Марка - Текстовое, - ПолеСоСписком
Серия - Числовое, - ПолеСоСписком
Наличие - Логическое, - Флажок
ДатаПоступления - Дата/Время - ПолеСоСписком или Календарик
Указываю 1, 2, 3 или 5 критерия и в связи с этим открывается Отчет. источником записей которого является один Запрос, но с условием отбора данных по выбраным выше условиям.
Возможно я не вполне доходчиво поясняю свою хотелку, немного позже или завтра выложу примерчик как это в моем понимании должно выглядеть.
Ну а если у кого есть готовый мли на подобии скиньте пожалуйста.
0
3349 / 1767 / 83
Регистрация: 05.08.2010
Сообщений: 4,471
06.09.2013, 13:56 19
Цитата Сообщение от kmv-puh Посмотреть сообщение
Есть Форма, в ней свободные элементы имеющие тип данных - допустим:
Код - Счетчик - ПолеСоСписком
Марка - Текстовое, - ПолеСоСписком
Серия - Числовое, - ПолеСоСписком
Наличие - Логическое, - Флажок
ДатаПоступления - Дата/Время - ПолеСоСписком или Календарик
Указываю 1, 2, 3 или 5 критерия и в связи с этим открывается Отчет. источником записей которого является один Запрос, но с условием отбора данных по выбраным выше условиям.
С такой постановкой задачи, - не смысла создавать запросы вообще.
Достаточно одной функции-фильтра по всем параметрам, которая будет проверять, выбрано ли что то на форме.
ИМХО.
0
Заблокирован
06.09.2013, 14:03  [ТС] 20
Цитата Сообщение от Agapov_stas Посмотреть сообщение
Достаточно одной функции-фильтра по всем параметрам, которая будет проверять, выбрано ли что то на форме.
Agapov_stas - А как это выглядит?
Ну и естественно не выскакивали сообщения типа - не все параметры введены если только 2 из 5 указаны или если ни чего не указал, то отчет открывается со всеми записями.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2013, 14:03

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Access 2013: источник записей для формы
День добрый. Вопрос по Аксесс ВБА: может ли источником записей для формы являться рекордсет? ...

Как через VBA сменить источник записей для неподчинённой формы ?
Как программно (нажав "кнопку18") для формы "ЗпрИДКаф_Лент" сменить источник записей с "ЗпрИДКаф_1"...

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

Как задать источник данных для отчета из кода?
Подскажите как задать в VB2010 источник данных для отчета из кода. На форме имеется грид,...


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

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

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