У меня есть два отчета: первый 'RepGetAsemblyEmployeeForDailyReport' как основной отчет и второй 'RepDailyAssemblyProductionByEmployee' как подробный отчет
В основной отчет я добавил несвязанную полосу подробностей и вставил в нее XRSubreport и установил свойства источника отчета для подробного отчета. Я следовал этой инструкции
Создание отчета с основными данными с подотчетами
в обоих отчетах хранится процедура в качестве источника данных для открытия основного отчета. Я использую этот код
private async void DailyProductionByEmployee_Click(object sender, EventArgs e)
{
RepGetAsemblyEmployeeForDailyReport reportEmployee = new RepGetAsemblyEmployeeForDailyReport();
Parameter param1 = new Parameter
{
Name = "shifttime",
Type = typeof(string),
Visible = false,
Value = form.cmbShiftTime.EditValue
};
Parameter param2 = new Parameter
{
Name = "date",
Type = typeof(DateTime),
Visible = false,
Value = Convert.ToDateTime(form.FirstDate.EditValue)//.ToString("MM/dd/yyyy");
};
reportEmployee.Parameters.Add(param1);
reportEmployee.Parameters.Add(param2);
reportEmployee.DataSource = await assembly.RepGetAsemblyEmployeeForDailyReport(Convert.ToDateTime(form.FirstDate.EditValue).ToString("MM/dd/yyyy"),
Convert.ToInt32(form.cmbShiftTime.EditValue));
form.Close();
reportEmployee.ShowRibbonPreviewDialog();
}
для генерации отчета я использую событие подотчета BeforePrint, чтобы установить источник данных следующим образом:
private async void subRepProduction_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
((XRSubreport)sender).ReportSource.DataSource = await assembly.RepAssemblyDailyProductionShiftTimeByEmployee(Convert.ToDateTime(Parameters[1].Value).ToString("MM/dd/yyyy"),
Convert.ToInt32(Parameters[0].Value));
}
Теперь, если я применяю фильтр, я не получаю никаких данных
но когда я очищаю фильтр, некоторые первые строки не отображаются, тогда все строки показывают, тогда только первая строка повторяется
Как я могу решить эту проблему, заранее спасибо.
Обновление: код, который получает данные из базы данных сервера sql
public async Task<DataTable> RepGetAsemblyEmployeeForDailyReport(string DateProduction, int ShiftTime)
{
DAL.DataAccessLayer DAL = new DAL.DataAccessLayer();
DataTable dt = new DataTable();
SqlParameter[] param = new SqlParameter[2];
param[0] = new SqlParameter("@Date", SqlDbType.NVarChar, 50)
{
Value = DateProduction
};
param[1] = new SqlParameter("@ShiftTime", SqlDbType.Int)
{
Value = ShiftTime
};
dt = await DAL.SelectData("RepGetAsemblyEmployeeForDailyReport", param);
DAL.Close();
return dt;
}