Произошла ошибка во время локальной обработки отчета - C # Windows Form VS2010 - PullRequest
4 голосов
/ 15 февраля 2012

Я пытаюсь использовать службы отчетов SQL Server в режиме клиента, но что-то идет не так.У меня есть две таблицы в базе данных «IEPL_Attendance_DB»: Employee (EmployeeID, EmployeeName) и EmployeeTimeIn (EID, Time_In, Date_Ref, StateFlag). Я хочу показать отчет в форме Windows (C # в Visual Studio 2010).Отчет должен быть результатом следующего запроса:

select e1.EID,e.EmployeeName,convert(varchar(5),SUM(e1.HoursConsumed)/3600)+':'+convert(varchar(5),SUM(e1.HoursConsumed)%3600/60)+':'+convert(varchar(5),(SUM(e1.HoursConsumed)%60)) as workingtime, CONVERT(VARCHAR(10),e1.Date_Ref,111) as Date_Ref
from Employee as e, EmployeeTimeIn as e1
where e.EmployeeID = e1.EID
group by e1.Date_Ref,e1.EID,e.EmployeeName;

Я нашел эту статью: http://arcanecode.com/2009/03/23/using-sql-server-reporting-services-in-client-mode/,, которая объясняет пошаговую процедуру создания отчета, но когда я запускаю свой проект, я вижуследующая ошибка в окне отчета: Экземпляр источника данных не был предоставлен для источника данных EmployeeAttendanceReport

Вот мой код:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//Add these to the standard list above
using System.Data.Sql;
using System.Data.SqlClient;
using Microsoft.Reporting.WinForms;

namespace EmployeeManager
{
public partial class Form1 : Form
{

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

        //this.reportViewer1.RefreshReport();

        // Set the processing mode for the ReportViewer to Local
        reportViewer1.ProcessingMode = ProcessingMode.Local;

        LocalReport localReport = reportViewer1.LocalReport;
        localReport.ReportPath = @"F:\Muhammad Anees\Time In\WpfApplication1\EmployeeManager\AttendanceReport.rdlc";

        DataSet dataset = new DataSet("EmployeeAttendanceReport");

        // Get the sales order data
        GetCustomerOrders(ref dataset);

        // Create a report data source for the sales order data
        ReportDataSource dsCustomers = new ReportDataSource();
        dsCustomers.Name = "EmployeeAttendanceReport_EmployeeAttendanceReport";
        dsCustomers.Value = dataset.Tables["Employee"];

        localReport.DataSources.Add(dsCustomers);

        // Refresh the report
        reportViewer1.RefreshReport();
    }

    private void GetCustomerOrders(ref DataSet dsNorthwind)
    {
        string sqlCustomerOrders = "SELECT e1.EID"
          + " ,e.EmployeeName"
          + " ,CONVERT(VARCHAR(10),e1.Date_Ref,111) as Date_Ref"
          + " ,convert(varchar(5),SUM(e1.HoursConsumed)/3600)+':'+convert(varchar(5),SUM(e1.HoursConsumed)%3600/60)+':'+convert(varchar(5),(SUM(e1.HoursConsumed)%60)) as workingtime"
          + "  FROM Employee as e, EmployeeTimeIn as e1"
          + "  WHERE e.EmployeeID=e1.EID"
          + "  GROUP BY e1.Date_Ref,e1.EID,e.EmployeeName";

        SqlConnection connection = new
          SqlConnection("Data Source=AZEEMPC; " +
                        "Initial Catalog=IEPL_Attendance_DB; " +
                        "Trusted_Connection = true;");

        SqlCommand command =
            new SqlCommand(sqlCustomerOrders, connection);

        SqlDataAdapter EmployeeAttendanceReportAdapter = new
            SqlDataAdapter(command);

        EmployeeAttendanceReportAdapter.Fill(dsNorthwind, "EmployeeAttendanceReport");

    }
}
}

Примечания:1. SQL Query работает нормально, и я могу увидеть результат этого запроса в SQL Server Management Studio.2. Вот свойства DataSet: DataSet Properties

Пожалуйста, сообщите!

Ответы [ 2 ]

9 голосов
/ 14 мая 2013

Я знаю, что уже два года, но я надеюсь, что это поможет другим

У меня возникла та же проблема ( Произошла ошибка во время локальной обработки отчета. Произошла ошибка во время обработки отчета. DatasetName ), и я обнаружил проблему со строкой соединения; Мне пришлось переключиться с использования проверки подлинности Windows на проверку подлинности SQL, тогда мой отчет сработал.

Очевидно, что имя источника данных отчета должно совпадать с именем, которое вы предоставляете через объект ReportDataSource, как предложил Брайан Найт

3 голосов
/ 15 февраля 2012

Похоже, у вас есть несоответствие между именем источника данных отчета и именем, которое вы указываете в свойстве Name вашего класса ReportDataSource.Отчет ожидает EmployeeAttendanceReport.Возможно, вы захотите изменить настройку свойства Name в своем коде на:

dsCustomers.Name = "EmployeeAttendanceReport";
...