Вложени Mail Merge С региони

В някои сценарии може да се наложи да използвате вложени Mail Merge С региони. Вложено обединяване е функция, която ви позволява да обедините йерархични данни от вашия източник на данни във вашия шаблон за обединяване, за да попълните лесно вашия документ. По принцип йерархичните данни се представят като набор от елементи от данни, а йерархичните зависимости описват как елементите от данни са свързани помежду си (един елемент от данни е родител на друг).

Aspose.Words Позволява ви да извършвате операция Mail Merge с вложени региони. Можете да използвате тази функция, ако имате източник на данни, който е организиран в дървовидна структура и искате да изпълните операция Mail Merge, за да попълните шаблон с йерархични данни.

Какво е вложено Mail Merge

Областта Mail Merge се нарича вложена, ако имате две или повече Mail Merge региони, където един от тях е вътре в другия в йерархична форма. Имайте предвид, че всеки регион съдържа данни от една таблица.

Най-често срещаният пример за вложено Mail Merge е поръчка, която съдържа множество елементи, където трябва да свържете няколко таблици с данни и да представите информацията в шаблон.

Снимката по-долу показва два вложени региона, където регионът Order Mail Merge е родител на региона Item Mail Merge.

nested_mail_merge_with_regions

Как да обработваме Mail Merge С вложени региони

Данните, които трябва да бъдат обединени в шаблон, могат да идват от различни източници, главно релационни бази данни или XML документи. В нашия пример ще използваме файл XML, За да съхраняваме данните си и да ги зареждаме директно в DataSet.

Aspose.Words ви позволява да обработвате Mail Merge с вложени региони, като използвате релациите от данни, посочени в DataSet. Когато обектът DataSet зареди XML, той или използва предоставената схема, или я извежда от структурата на самия XML, за да постигне това. От тази структура тя създава релации между таблиците, където е необходимо.

Изображението по-долу показва как данните от таблицата Order, предадени на вложените региони за обединяване, ще бъдат свързани с таблицата Item, както и изхода, генериран по време на операцията за обединяване.

mail_merge_with_nested_regions

Както можете да видите от изходния документ, всяка поръчка от таблицата Order се вмъква в шаблона за обединяване с всички свързани с поръчката елементи от таблицата Item. Следващата поръчка ще бъде вмъкната заедно с техните артикули, докато не бъдат изброени всички поръчки и артикули. Редът на влагане Mail Merge С региони в шаблона трябва да съответства на релациите от данни между таблиците в източника на данни.

Следващият пример за код показва как да генерирате фактура, използвайки вложени Mail Merge С региони:

Как да създадете връзки с данни в вложени Mail Merge С региони

Трябва да настроите всички релации на данни в структурата родител-дете, за да изпълните вложеното Mail Merge С региони правилно. Пропускането на тази важна стъпка може да доведе до неуспех при изпълнението на вложеното Mail Merge С региони.

При извличане на данни за вложен Mail Merge от файл XML с помощта на метода ReadXml, релациите се създават автоматично в съответствие със структурата на документа XML. Трябва обаче да се уверите, че са създадени правилни отношения.

Ако Mail Merge не работи според очакванията, тогава може да се наложи да преструктурирате файла XML или изрично да създадете релации между DataTable обекти в DataSet.

А DataSet, който има свързани таблици с данни, ще използва обекта DataRelation, за да представи Релацията родител-дете между таблиците.

Следният пример за код показва как да се установи DataRelation между таблица на клиент и таблица на поръчка с помощта на обект DataRelation:

Как да създадете Релации от потребителски източник на данни

Имплементирайте интерфейса IMailMergeDataSource, За да създадете релации в структурата родител-дете на вашия потребителски източник на данни. Използвайте метода GetChildDataSource, за да върнете съответните данни на детето от текущия запис на родител.

Следващият пример показва как да създадете релации с GetChildDataSource: