2015-04-21 1 views
0

Я генерации отчета Telerik для «Количество студентов по уровню образования, области и секс»Сформировать соответствующий отчет, когда данные не в базе данных [Telerik]

Здесь SQL запроса, который я использую для создайте этот профиль

SELECT 
    [tbl_hec_ISCED].[ISCED_ID], 
    [tbl_hec_ISCED].[ISCED_Level], 
    [tbl_hec_Programme].[ISCED_ID] AS 'tbl_hec_ProgrammeISCED_ID', 
    [tbl_hec_Programme].[Programme_ID], 
    [tbl_hec_Programme].[Specialisation_ID_Number], 
    [tbl_hec_specialisation].[Rank_ID_Number], 
    [tbl_hec_specialisation].[Rank_Title], 
    [tbl_HEI_student].[Programme_ID] AS 'tbl_HEI_studentProgramme_ID', 
    [tbl_HEI_student].[Gender] 
FROM ((([tbl_HEI_student] 
FULL OUTER JOIN [tbl_hec_Programme] 
ON [tbl_HEI_student].[Programme_ID] = [tbl_hec_Programme].[Programme_ID]) 
FULL OUTER JOIN [tbl_hec_specialisation] 
ON [tbl_hec_Programme].[Specialisation_ID_Number] = [tbl_hec_specialisation].[Rank_ID_Number]) 
FULL OUTER JOIN [tbl_hec_ISCED] 
ON [tbl_hec_Programme].[ISCED_ID] = [tbl_hec_ISCED].[ISCED_ID]) 
WHERE ([tbl_HEI_student].[Gender]='Male' or [tbl_HEI_student].[Gender]='Female') and ([tbl_hec_ISCED].[ISCED_Level]='5' or [tbl_hec_ISCED].[ISCED_Level]='6'or [tbl_hec_ISCED].[ISCED_Level]='7'or [tbl_hec_ISCED].[ISCED_Level]='8') 

Я получаю пустой отчет, поскольку некоторые значения не находятся в базе данных. Я прикрепил картину этого,

здесь вид

enter image description here

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

ЗДЕСЬ ожидаемый вывод отчета

enter image description here

Как я могу решить эту проблему

+0

Для такого отчета я считаю, что проще использовать шаблонный документ с заполнителями, а затем установить их с вычисленными значениями из кода. Будет ли это применимо к вам? При необходимости я могу предоставить примерный код. –

+0

Да, пожалуйста, можете ли вы упомянуть об этом здесь в качестве ответа, я попытаюсь интегрировать, – Chathz

+0

, как вы это сделали? Прошел год. Если мой ответ помог вам, отметьте его как принятый ответ. Или, по крайней мере, поставить комментарии или повысить их, чтобы они могли помочь другим с подобными проблемами. –

ответ

0

мое предложение использовать документ слияния функциональность с помощью шаблона со всеми макет отчета уже настроил, а также (поля), которые будут заменены рассчитанными значениями.

Я использую библиотеку Aspose.Words в своих проектах, но я уверен, что есть и другие, возможно, даже отчеты Telerik. Это очень простая функциональность, поэтому любой инструмент отчетности, который может выполнять сложные вещи, должен также иметь возможность сделать это.

Вот пример кода для Aspose. Другие библиотеки будут иметь различную реализацию.

using Aspose.Words; 

void GenerateDocument(string templateFilePath, Dictionary<string, object> fieldNamesAndValues) 
{ 
    // This is our document object 
    Document output = null; 

    // Obtain the template file 
    if (File.Exists(templateFilePath)) 
    { 
     // If the template file is successfully located, use this template 
     output = new Document(templateFilePath); 
    } 

    // Merge the provided values into the appropriate fields of the template 
    output.MailMerge.Execute(fieldNamesAndValues.Keys.ToArray(), fieldNamesAndValues.Values.ToArray()); 

    // Save the document into a stream as PDF 
    MemoryStream stream = new MemoryStream(); 
    doc.Save(stream, SaveFormat.Pdf); 

    // You can then do whatever with the stream: 
    // save it or push it to the browser for download 
} 

Использование ожидаемого результата в качестве примера, давайте предположим, что эти имена ваших заполнителей (полей) для первой строки:

MALE_EDUCATION_ISCED5, MALE_EDUCATION_ISCED6, MALE_EDUCATION_ISCED7 

Вы можете сгенерировать отчет следующим образом:

Dictionary<string, object> fieldsAndValues = new Dictionary<string, object>(); 

fieldsAndValues.Add("MALE_EDUCATION_ISCED5", calculatedValue1); 
fieldsAndValues.Add("MALE_EDUCATION_ISCED6", calculatedValue2); 
fieldsAndValues.Add("MALE_EDUCATION_ISCED7", calculatedValue3); 
// and so on for other fields 

GenerateDocument("~/Templates/Report.docx", fieldsAndValues); 

Более подробную информацию о том, как добавить поля в Microsoft Word: https://support.office.com/en-us/article/7e9ea3b4-83ec-4203-9e66-4efc027f2cf3

Дополнительная информация о Aspose MailMerge: http://www.aspose.com/docs/display/wordsnet/How+to++Execute+Simple+Mail+Merge