Я создаю приложение на c #.У меня есть две формы, скажем, MainForm и ReportForm.Я открыл обе формы рядом.Когда некоторые данные сохраняются в базе данных на главной форме, я хочу, чтобы они автоматически отображались в форме отчета.Я использую делегаты и вызываю делегировать метод отчета, но отчет Crystal не обновляет отчет.Есть кнопка предпросмотра.Нажатие на эту кнопку показывает отчет правильно с обновленными изменениями.
Мой код Mainform -
EndSale();
if (Application.OpenForms.OfType<Reports.FullSaleReport>().Count() == 1)
{
Reports.FullSaleReport saleReport = (Reports.FullSaleReport)Activator.CreateInstance(typeof(Reports.FullSaleReport));
ShowSaleReport sale = new ShowSaleReport(saleReport.ShowReport);
sale("%", DateTime.Now.AddMonths(-1).ToShortDateString(), DateTime.Now.AddDays(1).ToShortDateString());
}
Мой код формы отчета -
public void ShowReport(string cbx, string FromDate, string ToDate)
{
String Query = "Select a.Id, a.CustomerName, Convert(varchar(12), a.SaleDate, 106) as 'SaleDate', d.ProductName + ISNULL(' ' + d.Potency, '') + ' ' + e.Description as 'Product', b.ProductQuantity, b.ProductUnitPrice, Convert(decimal(16, 2), b.ProductTotalPrice) as 'TotalPrice', b.Id as 'SaleDetailId', (Select Min(x.Id) From SaleDetailModels x Where x.SaleId = a.Id) as 'MinSaleDetailId' From SaleModels a, SaleDetailModels b, ProductModels d, ProductTypes e Where a.Id = b.SaleId and b.ProductId = d.Id and d.ProductTypeId = e.Id and a.CustomerName Like '" + cbx + "' and a.SaleDate between '" + FromDate + "' and '" + ToDate + "' Order by Id, SaleDetailId";
SqlConnection con = new SqlConnection();
con.ConnectionString = ConnectionString;
con.Open();
SqlDataAdapter dscmd = new SqlDataAdapter(Query, con);
DataSet ds = new DataSet();
dscmd.Fill(ds, "FullSale");
con.Close();
bin.Debug.Reports.rptFullSale objRpt = new bin.Debug.Reports.rptFullSale();
objRpt.SetDataSource(ds.Tables["FullSale"]);
crystalReportViewer1.ReportSource = objRpt;
crystalReportViewer1.Refresh();
}
То, что я проверяю, выполняется до подключениязакройте "con.Close ()".после этого он не может обновить отчет.cbx, fromdate и todate - это в основном комбинированные списки и указатели даты и времени в форме отчета.Он также не может принимать данные полей, поэтому я использую передачу статических данных с использованием делегата, а не фактических данных в форме отчета.
Две открытые формы похожи на это
Заранее спасибо.В ожидании любого положительного ответа
С уважением