Субрепорт с параметрами
Привет.
В отчете есть субрепорт, который берет данные из TfrxAdoQuery, который прикручен к компоненте типа TfrxAdoDatabase. Запрос получает параметр CompanyID из основного отчета, и в свойстве Master у него я поставил датасет, который на форме лежит и из которого берутся данные для основного отчета. В Params у Query забито примерно следующее:
Результат должен быть, на мой взгляд, однозначным - субрепорт должен выводить (в данном случае) все договоры по этому клиенту. Но получается какая-то фигня - у всех клиентов присутствует один и тот же договор. Где грабли?
В отчете есть субрепорт, который берет данные из TfrxAdoQuery, который прикручен к компоненте типа TfrxAdoDatabase. Запрос получает параметр CompanyID из основного отчета, и в свойстве Master у него я поставил датасет, который на форме лежит и из которого берутся данные для основного отчета. В Params у Query забито примерно следующее:
Name - CompanyID
Data Type - Integer
Value - <dsMovement."CompanyID">
Результат должен быть, на мой взгляд, однозначным - субрепорт должен выводить (в данном случае) все договоры по этому клиенту. Но получается какая-то фигня - у всех клиентов присутствует один и тот же договор. Где грабли?
Комментарии
Именно он указан у дочернего датасета?
Если вы хотите, чтобы вашим компаниям проставлялись договора, ва необходимо при каждой новой компании вызвать запрос заново.
Для этого, при печати текущей копании (например, в событии Mastedata1OnBeforePrint) надо вызвать следущий кусок кода: Здесь:
Mastedata1 - мастердата, на которой выводится информация о компаниях
AdoQuery1 - ваш запрос
CompanyID - переменная FR (например) значение которой передается в ваш запрос AdoQuery1.
Хм... Что интересно, так это то, что на некоторых категориях компаний моя схема (то есть без указанного тобой кода) работает, а на остальных - на каждом клиенте пишет одно и то же.
По идее, местный ADOQuery должен сам все открывать, присваивать и закрывать, иначе для чего нужна такая настройка параметров с указанием полей мастер-датасета. В хелпе об этом ни гугу, может, хотя бы на форуме разработчики попробуют мне ответить?
Кстати, только что попробовал вот такое:
qRubrics - эт TfrxAdoQuery. В работе выдает ошибку Left side cannot be assigned to
Да-да, именно так.
Мне нужно знать главное:
1. Достаточно ли того, что в TfrxADOQuery я прописываю мастер-датасет и в Params загоняю переменные мастер-датасета? В хелпе указано свойство MasterField, нужно ли оно, и почему я не могу его достать в инспекторе объектов?
2. Нужны ли какие-то дополнительные действия, чтобы в субрепорте извлекались данные, зависящие, предположим, от кода компании, который меняется с выводом каждого MasterData?
Если всего, что я написал, достаточно, и больше ничего делать не надо, значит, я буду искать ошибку у себя в коде.
Кстати, не советую вам использовать следущее: Если есть необходимость работать с переменной FR, используйте Set и Get: Так будет надежнее.