Страница 1 из 1

Как настраивать Relation?

Добавлено: 18 апр 2007, 09:34
Stilux
Подскажите пожалуйста как сформировать Master-Detail отчет.
Источник отчета - датасет, состоящий из двух таблиц связанных отношением один ко многим.
Если в макете отчета, в экспортированной XML- схеме, не настраивать связь между таблицами
то выводятся все подчиненные записи, а если связь настроить, вываливается Exception (Relation
для таких-то колонок уже существует...).

Как настраивать Relation?

Добавлено: 18 апр 2007, 13:38
Edward
Stilux писал(а):Подскажите пожалуйста как сформировать Master-Detail отчет.
Источник отчета - датасет, состоящий из двух таблиц связанных отношением один ко многим.
Если в макете отчета, в экспортированной XML- схеме, не настраивать связь между таблицами
то выводятся все подчиненные записи,
Вам необходимо создавать файл-схему данных xsd, который будет содержать информацию о relations в Вашем XML файле, загружать его в dataset:

Код: Выделить всё

dataSet.ReadXMLSchema("myschema.xsd")
После этого загруженные в DataSet таблицы из XML файла будут содержать необходимые связи, которые затем автоматически будут зарегистрированы в отчете при помощи RegData:

Код: Выделить всё

report.RegData("dataSetName",dataSet)
Stilux писал(а): а если связь настроить, вываливается Exception (Relation
для таких-то колонок уже существует...).
Для установки relations из кода:

Код: Выделить всё

              report.RegData(dataSet);
            report.Dictionary.Synchronize();
            StiDataRelation dataRelation = new StiDataRelation("MyRelation", report.Dictionary.DataSources["Categories"], report.Dictionary.DataSources["Products"], new System.String[]{"CategoryID"}, new System.String[] {"CategoryID"});
            report.Dictionary.RegRelations();
            report.Dictionary.Relations.Add(dataRelation);


Этот код работает без Exceptions.
Уточните, пожалуйста, какие параметры Вы еще устанавливаете в Вашем случае.

Спасибо.

Как настраивать Relation?

Добавлено: 18 апр 2007, 14:22
Stilux
Я имел в виду другое.
На форме (WindowsForm) имеется описанный выше датасет ИМЕЮЩИЙ ChildRelation!
Схема этого датасета импортирована в отчет.
Датасет регистрируется методом RegData.
После рендеринга имеем отчет, в котором для каждой основной записи выводится не дочерние записи,
а все строки дочерней таблицы, т.е. Relation игнорируется.
Не понятно куда девается Relation после экспорта в .mrt-файл.
Рабочий отчет удалось получить только так:
-в исходном датасете удаляется Relation
-в дизайнере отчета, в импортированной схеме датасета, настраивается такой-же Relation
Если оставить Relation в обоих местах, то в рантайме, получаем Exception.

Как настраивать Relation?

Добавлено: 18 апр 2007, 14:30
Edward
Вышлите, пожалуйста, тестовое приложение на Изображение или mrt файл отчета и DataSet в формате xml + xsd.

Вы можете получить эти файлы следующим образом:

Код: Выделить всё

dataSet.WriteXml("myDataSet.xml")
dataSet.WriteXmlSchema("myDataSet.xsd")
Попробуем разобраться с Вашей проблемой!

Спасибо.

Как настраивать Relation?

Добавлено: 20 апр 2007, 07:14
Stilux
Проблема разрешилась. Видимо был какой-то сбой при экспорте XSD-схемы,
таблицы импортировались, а связи - нет.
Повторный экспорт решил проблему.

Как настраивать Relation?

Добавлено: 20 апр 2007, 10:30
Edward
Дайте знать, если понадобится помощь.

Спасибо.