获得"数据库登录错误"在水晶报表虽然浏览下一页 [英] Getting "Database Logon Error" in Crystal Report While Navigating Next Page
问题描述
我在ASP.NET和C#(数据集)开发下面code水晶报表,
我在报告中我正在得到妥善第1页多页,但同时浏览下一页我收到登录错误。
公共部分类WSDayBookReport:System.Web.UI.Page
{
SQLClass sqlfunc =新SQLClass();
DayBookDataSet DSET =新DayBookDataSet();
的ReportDocument的RDoc;
}
保护无效的Page_Load(对象发件人,EventArgs的发送)
{
}
保护无效激发Page_Unload(对象发件人,EventArgs的发送)
{
尝试
{
rdoc.Close();
rdoc.Dispose();
的RDoc = NULL;
}
赶上(异常前)
{
}
}
公共无效OpeningStock()
{
字符串QRY =选择i.ItemGroupID,ig.ItemGroup code作为的ItemGroup code,SUM(iss.RegularStock)由于OpeningStock从ItemStock国际空间站项目我的ItemGroup IG那里ig.ItemGroupID = i.ItemGroupID和ISS .ItemID = i.ItemId由i.ItemGroupID组,ig.ItemGroup code;
sqlfunc.GetDataFromDT(dset.ItemGroupStock,QRYsqlcon);
VAR Q1 =从dset.ItemGroupStock.AsEnumerable IGS()
选择IGS;
的foreach(在第一季度VAR水库)
{
res.ConsumedStock = 0;
res.ClosingStock = 0;
}
dset.AcceptChanges();
//Response.Write(dset.ItemGroupStock.Rows.Count.ToString()+=打开股票);
}
公共无效loadUser()
{
字符串QRY =选择pp.PersonnelParticularID作为用户名,pp.PersonnelName为username从WineOrder禾,WineOrderDetail WOD,PersonnelParticular PP,IG的ItemGroup,项目在哪里pp.PersonnelParticularID = wo.IssuedToPersonnelID AND ig.ItemGroupID = i.ItemGroupID我。项目编号= wod.ItemID AND wod.IsOrderCancelled = 0和wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate ='+ Convert.ToDateTime(txtDate.Text)的ToString(MM / DD / YYYY)+'群通过pp.PersonnelParticularID,pp.PersonnelName
sqlfunc.GetDataFromDT(dset.UserMaster,QRYsqlcon);
QRY =选择pp.PersonnelParticularID作为用户名,ig.ItemGroupID,SUM(wod.OrderQty)由于ConsumptionQty从WineOrder禾,WineOrderDetail WOD,IG的ItemGroup,项目我,PersonnelParticular页,其中pp.PersonnelParticularID = wo.IssuedToPersonnelID AND ig.ItemGroupID = i.ItemGroupID和i.ItemID = wod.ItemID AND wod.IsOrderCancelled = 0和wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate ='+ Convert.ToDateTime(txtDate.Text)的ToString(MM / DD / YYYY )+'基团由ig.ItemGroupID,pp.PersonnelParticularID;
sqlfunc.GetDataFromDT(dset.UserConsume,QRYsqlcon);
}
保护无效btnSubmit_Click(对象发件人,EventArgs的发送)
{
DSET =新DayBookDataSet();
OpeningStock();
loadUser();
//输入的日期后,扣除新RU入门...
数据表dtTemp =新的DataTable();
字符串qry2 =从RegularStock RS SELECT SUM(rs.Quantity)作为数量,i.ItemGroupID,项目在哪里i.ItemID = rs.ItemID和rs.RSDate> ='+ Convert.ToDateTime(txtDate.Text)的ToString (MM / DD / YYYY)+'集团通过i.ItemGroupID
sqlfunc.GetDataFromDT(dtTemp,qry2sqlcon);
如果(dtTemp.Rows.Count大于0)
{
的for(int i = 0; I< dtTemp.Rows.Count;我++)
{
VAR Q5 =从dset.ItemGroupStock.AsEnumerable IGS()
哪里igs.ItemGroupID == Convert.ToInt32(dtTemp.Rows [I] [1]的ToString())
选择IGS;
的foreach(在Q5 VAR水库)
{
res.OpeningStock - = Convert.ToDecimal(dtTemp.Rows [I] [0]的ToString());
}
}
}
//从输入的日期添加cosumed股票。
dtTemp =新的DataTable();
字符串QRY =选择ig.ItemGroupID,SUM(wod.OrderQty)由于ConsumptionQty从WineOrder禾,WineOrderDetail WOD,IG的ItemGroup,项目在哪里ig.ItemGroupID = i.ItemGroupID AND i.ItemID = wod.ItemID和wo.IssuedToPersonnelID是不是null,wod.IsOrderCancelled = 0和wod.WineOrderId = wo.WineOrderId和wo.WineOrderDate> ='2015年10月1日由ig.ItemGroupID集团;
sqlfunc.GetDataFromDT(dtTemp,QRYsqlcon);
如果(dtTemp.Rows.Count大于0)
{
的for(int i = 0; I< dtTemp.Rows.Count;我++)
{
VAR Q5 =从dset.ItemGroupStock.AsEnumerable IGS()
哪里igs.ItemGroupID == Convert.ToInt32(dtTemp.Rows [I] [0]的ToString())
选择IGS;
的foreach(在Q5 VAR水库)
{
res.OpeningStock + = Convert.ToDecimal(dtTemp.Rows [I] [1]的ToString());
}
}
}
dset.AcceptChanges();
在dset.UserConsume.AsEnumerable VAR qry10 =从我们的()
我们一群由us.ItemGroupID为G
新选择
{
TOTAL = g.Sum(X => x.ConsumptionQty)
IG = g.Key
};
的foreach(在qry10 VAR水库)
{
//Response.Write(res.IG.ToString()+ - + res.TOTAL.ToString()+----------);
(VAR qrry =从dset.ItemGroupStock.AsEnumerable IGS)
其中,igs.ItemGroupID == res.IG
选择IGS;
的foreach(在qrry VAR RES2)
{
res2.ClosingStock = res2.OpeningStock - res.TOTAL;
}
}
的RDoc =新的ReportDocument();
rdoc.Load(使用Server.Mappath(〜/报告/ WSDayBookRpt.rpt));
rdoc.SetDataSource(DSET);
CrystalReportViewer1.DataBind();
CrystalReportViewer1.ReportSource =的RDoc;
CrystalReportViewer1.RefreshReport();
}
}
请帮我..
我已经使用会话尝试,但在我不能够后第2页浏览,如果我用写导航页码其工作正常...
感谢和问候,
更新
公共部分类WSDayBookReport:System.Web.UI.Page{
SQLClass sqlfunc =新SQLClass();
的ReportDocument的RDoc =新的ReportDocument();
保护无效的Page_Load(对象发件人,EventArgs的发送)
{
如果(Page.IsPostBack)
{
如果(会话[CRpt]!= NULL)
{
的RDoc =(的ReportDocument)会议[CRpt];
}
CrystalReportViewer1.ReportSource =的RDoc;
CrystalReportViewer1.RefreshReport();
}
其他
{
//'NOT回传
}
} 保护无效激发Page_Unload(对象发件人,EventArgs的发送)
{
如果(会话[CRpt]!= NULL)
{
Session.Remove(CRpt);
}
会话[CRpt] =的RDoc;
}保护无效btnSubmit_Click(对象发件人,EventArgs的发送)
{
DayBookDataSet DSET =新DayBookDataSet();
// OpeningStock();
字符串QRY =选择i.ItemGroupID,ig.ItemGroup code作为的ItemGroup code,SUM(iss.RegularStock)由于OpeningStock从ItemStock国际空间站项目我的ItemGroup IG那里ig.ItemGroupID = i.ItemGroupID和ISS .ItemID = i.ItemId由i.ItemGroupID组,ig.ItemGroup code;
sqlfunc.GetDataFromDT(dset.ItemGroupStock,QRYsqlcon);
VAR Q1 =从dset.ItemGroupStock.AsEnumerable IGS()
选择IGS;
的foreach(在第一季度VAR水库)
{
res.ConsumedStock = 0;
res.ClosingStock = 0;
}
// loadUser();
QRY =选择pp.PersonnelParticularID作为用户名,pp.PersonnelName作为从WineOrder用户名禾,WineOrderDetail WOD,PersonnelParticular PP,IG的ItemGroup,项目在哪里pp.PersonnelParticularID = wo.IssuedToPersonnelID AND ig.ItemGroupID = i.ItemGroupID和i.ItemID = wod.ItemID和wod.IsOrderCancelled = 0和wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate ='+ Convert.ToDateTime(txtDate.Text)的ToString(MM / DD / YYYY)+'GROUP BY pp.PersonnelParticularID,pp.PersonnelName
sqlfunc.GetDataFromDT(dset.UserMaster,QRYsqlcon);
如果(dset.UserMaster.Rows.Count == 0)
{
lblStatus.Text =没有选定的日期消费。
CrystalReportViewer1.ReportSource = NULL;
如果(会话[ssnRdoc]!= NULL)
{
Session.Remove(ssnRdoc);
} 返回;
}
其他
{
lblStatus.Text =;
} //用户消费
QRY =选择pp.PersonnelParticularID作为用户名,ig.ItemGroupID,SUM(wod.OrderQty)由于ConsumptionQty从WineOrder禾,WineOrderDetail WOD,IG的ItemGroup,项目我,PersonnelParticular页,其中pp.PersonnelParticularID = wo.IssuedToPersonnelID AND ig.ItemGroupID = i.ItemGroupID和i.ItemID = wod.ItemID AND wod.IsOrderCancelled = 0和wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate ='+ Convert.ToDateTime(txtDate.Text)的ToString(MM / DD / YYYY )+'基团由ig.ItemGroupID,pp.PersonnelParticularID;
sqlfunc.GetDataFromDT(dset.UserConsume,QRYsqlcon);
dset.AcceptChanges();
ViewState.Add(vsDset,DSET);
//输入的日期后,扣除新RU入门...
数据表dtTemp =新的DataTable();
字符串qry2 =从RegularStock RS SELECT SUM(rs.Quantity)作为数量,i.ItemGroupID,项目在哪里i.ItemID = rs.ItemID和rs.RSDate> ='+ Convert.ToDateTime(txtDate.Text)的ToString (MM / DD / YYYY)+'集团通过i.ItemGroupID
sqlfunc.GetDataFromDT(dtTemp,qry2sqlcon);
如果(dtTemp.Rows.Count大于0)
{
的for(int i = 0; I< dtTemp.Rows.Count;我++)
{
VAR Q5 =从dset.ItemGroupStock.AsEnumerable IGS()
哪里igs.ItemGroupID == Convert.ToInt32(dtTemp.Rows [I] [1]的ToString())
选择IGS;
的foreach(在Q5 VAR水库)
{
res.OpeningStock - = Convert.ToDecimal(dtTemp.Rows [I] [0]的ToString());
}
}
}
//从输入的日期添加cosumed股票。
dtTemp =新的DataTable();
QRY =选择ig.ItemGroupID,SUM(wod.OrderQty)由于ConsumptionQty从WineOrder禾,WineOrderDetail WOD,IG的ItemGroup,项目在哪里ig.ItemGroupID = i.ItemGroupID AND i.ItemID = wod.ItemID和wo.IssuedToPersonnelID不NULL并且wod.IsOrderCancelled = 0和wod.WineOrderId = wo.WineOrderId和wo.WineOrderDate> ='+ Convert.ToDateTime(txtDate.Text.Trim())的ToString(MM / DD / YYYY)+'通过ig.ItemGroupID组;
sqlfunc.GetDataFromDT(dtTemp,QRYsqlcon);
如果(dtTemp.Rows.Count大于0)
{
的for(int i = 0; I< dtTemp.Rows.Count;我++)
{
VAR Q5 =从dset.ItemGroupStock.AsEnumerable IGS()
哪里igs.ItemGroupID == Convert.ToInt32(dtTemp.Rows [I] [0]的ToString())
选择IGS;
的foreach(在Q5 VAR水库)
{
res.OpeningStock + = Convert.ToDecimal(dtTemp.Rows [I] [1]的ToString());
}
}
}
dset.AcceptChanges();
在dset.UserConsume.AsEnumerable VAR qry10 =从我们的()
我们一群由us.ItemGroupID为G
新选择
{
TOTAL = g.Sum(X => x.ConsumptionQty)
IG = g.Key
};
的foreach(在qry10 VAR水库)
{
(VAR qrry =从dset.ItemGroupStock.AsEnumerable IGS)
其中,igs.ItemGroupID == res.IG
选择IGS;
的foreach(在qrry VAR RES2)
{
res2.ClosingStock = res2.OpeningStock - res.TOTAL;
}
}
ViewState.Add(vsDset,DSET);
rdoc.Load(使用Server.Mappath(〜/报告/ WSDayBookRpt.rpt));
rdoc.SetDataSource(DSET);
CrystalReportViewer1.DataBind();
CrystalReportViewer1.ReportSource =的RDoc;
CrystalReportViewer1.RefreshReport();
会话[CRpt] =的RDoc;
}
}
您CrystalReportViewer控件可能是失去对回发的ReportDocument。你将不得不这样做如下:
在页面级声明你的ReportDocument对象
的ReportDocument的RDoc =新的ReportDocument();
在Page_Load事件从Session对象加载的ReportDocument
保护无效的Page_Load(System.Object的发件人,发送System.EventArgs){
如果(Page.IsPostBack){
如果(Session.Item(CRpt)!= NULL){
的RDoc = Session.Item(CRpt);
}
CrystalReportViewer1.ReportSource =的RDoc;
CrystalReportViewer1.RefreshReport();
}其他{
不回传
如果(Session.Item(CRpt)!= NULL){
Session.Remove(CRpt);
}
Session.Add(CRpt的RDoc);
}
}
在btnSubmit按钮创建和您的ReportDocument添加到会话
保护无效btnSubmit_Click(对象发件人,EventArgs的发送){ //填充报告
rdoc.SetDataSource(DSET);
CrystalReportViewer1.ReportSource =的RDoc;
Session.Add(CRpt的RDoc);
}
除此之外,如果你需要特定的帮助,确定LogOnInfo,那么你也可以检查此SO张贴报告要求数据库登录设置上的数据表数据源
I have Developed Below Code for Crystal Report in ASP.NET and C# (Dataset), I have Multiple Pages in report i am getting 1st page Properly but while Navigating next page i am getting logon error.
public partial class WSDayBookReport : System.Web.UI.Page
{
SQLClass sqlfunc = new SQLClass();
DayBookDataSet dset = new DayBookDataSet();
ReportDocument rdoc;
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Page_Unload(object sender, EventArgs e)
{
try
{
rdoc.Close();
rdoc.Dispose();
rdoc = null;
}
catch (Exception ex)
{
}
}
public void OpeningStock()
{
string qry = "select i.ItemGroupID, ig.ItemGroupCode As ItemGroupCode, Sum(iss.RegularStock) As OpeningStock from ItemStock iss, Item i, ItemGroup ig where ig.ItemGroupID = i.ItemGroupID AND iss.ItemID = i.ItemId group by i.ItemGroupID,ig.ItemGroupCode";
sqlfunc.GetDataFromDT(dset.ItemGroupStock, qry, "sqlcon");
var q1 = from igs in dset.ItemGroupStock.AsEnumerable()
select igs;
foreach (var res in q1)
{
res.ConsumedStock = 0;
res.ClosingStock = 0;
}
dset.AcceptChanges();
//Response.Write(dset.ItemGroupStock.Rows.Count.ToString() + "=Opening Stock");
}
public void loadUser()
{
string qry = "select pp.PersonnelParticularID As UserID, pp.PersonnelName As UserName from WineOrder wo, WineOrderDetail wod, PersonnelParticular pp, ItemGroup ig, Item i where pp.PersonnelParticularID = wo.IssuedToPersonnelID AND ig.ItemGroupID = i.ItemGroupID AND i.ItemID = wod.ItemID AND wod.IsOrderCancelled = 0 AND wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate ='" + Convert.ToDateTime(txtDate.Text).ToString("MM/dd/yyyy") + "' group by pp.PersonnelParticularID,pp.PersonnelName";
sqlfunc.GetDataFromDT(dset.UserMaster, qry, "sqlcon");
qry = "select pp.PersonnelParticularID As UserID,ig.ItemGroupID, sum(wod.OrderQty) As ConsumptionQty from WineOrder wo, WineOrderDetail wod, ItemGroup ig, Item i, PersonnelParticular pp where pp.PersonnelParticularID = wo.IssuedToPersonnelID AND ig.ItemGroupID = i.ItemGroupID AND i.ItemID = wod.ItemID AND wod.IsOrderCancelled = 0 AND wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate='" + Convert.ToDateTime(txtDate.Text).ToString("MM/dd/yyyy") + "' group by ig.ItemGroupID, pp.PersonnelParticularID";
sqlfunc.GetDataFromDT(dset.UserConsume, qry, "sqlcon");
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
dset = new DayBookDataSet();
OpeningStock();
loadUser();
//Deducting new RU Entry after the entered date...
DataTable dtTemp = new DataTable();
string qry2 = "select Sum(rs.Quantity) As Qty,i.ItemGroupID from RegularStock rs, Item i where i.ItemID = rs.ItemID AND rs.RSDate>='" + Convert.ToDateTime(txtDate.Text).ToString("MM/dd/yyyy") + "' Group by i.ItemGroupID";
sqlfunc.GetDataFromDT(dtTemp, qry2, "sqlcon");
if (dtTemp.Rows.Count > 0)
{
for (int i = 0; i < dtTemp.Rows.Count; i++)
{
var q5 = from igs in dset.ItemGroupStock.AsEnumerable()
where igs.ItemGroupID == Convert.ToInt32(dtTemp.Rows[i][1].ToString())
select igs;
foreach (var res in q5)
{
res.OpeningStock -= Convert.ToDecimal(dtTemp.Rows[i][0].ToString());
}
}
}
//Adding cosumed stock from the entered date.
dtTemp = new DataTable();
string qry = "select ig.ItemGroupID, sum(wod.OrderQty) As ConsumptionQty from WineOrder wo, WineOrderDetail wod, ItemGroup ig, Item i where ig.ItemGroupID = i.ItemGroupID AND i.ItemID = wod.ItemID AND wo.IssuedToPersonnelID is not null AND wod.IsOrderCancelled = 0 AND wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate>='10-01-2015' group by ig.ItemGroupID";
sqlfunc.GetDataFromDT(dtTemp, qry, "sqlcon");
if (dtTemp.Rows.Count > 0)
{
for (int i = 0; i < dtTemp.Rows.Count; i++)
{
var q5 = from igs in dset.ItemGroupStock.AsEnumerable()
where igs.ItemGroupID == Convert.ToInt32(dtTemp.Rows[i][0].ToString())
select igs;
foreach (var res in q5)
{
res.OpeningStock += Convert.ToDecimal(dtTemp.Rows[i][1].ToString());
}
}
}
dset.AcceptChanges();
var qry10 = from us in dset.UserConsume.AsEnumerable()
group us by us.ItemGroupID into g
select new
{
TOTAL = g.Sum(x => x.ConsumptionQty),
IG = g.Key
};
foreach (var res in qry10)
{
//Response.Write(res.IG.ToString() +"-"+res.TOTAL.ToString()+ "----------");
var qrry = from igs in dset.ItemGroupStock.AsEnumerable()
where igs.ItemGroupID == res.IG
select igs;
foreach (var res2 in qrry)
{
res2.ClosingStock = res2.OpeningStock - res.TOTAL;
}
}
rdoc = new ReportDocument();
rdoc.Load(Server.MapPath("~/Report/WSDayBookRpt.rpt"));
rdoc.SetDataSource(dset);
CrystalReportViewer1.DataBind();
CrystalReportViewer1.ReportSource = rdoc;
CrystalReportViewer1.RefreshReport();
}
}
Please Help me out .. i have tried using session but in that i am not able to navigate after 2nd Page and if i use to write page number for navigation its working properly...
Thanks And Regards,
UPDATE
public partial class WSDayBookReport : System.Web.UI.Page
{
SQLClass sqlfunc = new SQLClass();
ReportDocument rdoc = new ReportDocument();
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
if (Session["CRpt"] != null)
{
rdoc =(ReportDocument) Session["CRpt"];
}
CrystalReportViewer1.ReportSource = rdoc;
CrystalReportViewer1.RefreshReport();
}
else
{
// 'NOT POSTBACK
}
}
protected void Page_Unload(object sender, EventArgs e)
{
if (Session["CRpt"] != null)
{
Session.Remove("CRpt");
}
Session["CRpt"]=rdoc;
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
DayBookDataSet dset = new DayBookDataSet();
//OpeningStock();
string qry = "select i.ItemGroupID, ig.ItemGroupCode As ItemGroupCode, Sum(iss.RegularStock) As OpeningStock from ItemStock iss, Item i, ItemGroup ig where ig.ItemGroupID = i.ItemGroupID AND iss.ItemID = i.ItemId group by i.ItemGroupID,ig.ItemGroupCode";
sqlfunc.GetDataFromDT(dset.ItemGroupStock, qry, "sqlcon");
var q1 = from igs in dset.ItemGroupStock.AsEnumerable()
select igs;
foreach (var res in q1)
{
res.ConsumedStock = 0;
res.ClosingStock = 0;
}
// loadUser();
qry = "select pp.PersonnelParticularID As UserID, pp.PersonnelName As UserName from WineOrder wo, WineOrderDetail wod, PersonnelParticular pp, ItemGroup ig, Item i where pp.PersonnelParticularID = wo.IssuedToPersonnelID AND ig.ItemGroupID = i.ItemGroupID AND i.ItemID = wod.ItemID AND wod.IsOrderCancelled = 0 AND wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate='" + Convert.ToDateTime(txtDate.Text).ToString("MM/dd/yyyy") + "' group by pp.PersonnelParticularID,pp.PersonnelName";
sqlfunc.GetDataFromDT(dset.UserMaster, qry, "sqlcon");
if (dset.UserMaster.Rows.Count == 0)
{
lblStatus.Text = "No Consumption on selected date.";
CrystalReportViewer1.ReportSource = null;
if (Session["ssnRdoc"] != null)
{
Session.Remove("ssnRdoc");
}
return;
}
else
{
lblStatus.Text = "";
}
//user consumption
qry = "select pp.PersonnelParticularID As UserID,ig.ItemGroupID, sum(wod.OrderQty) As ConsumptionQty from WineOrder wo, WineOrderDetail wod, ItemGroup ig, Item i, PersonnelParticular pp where pp.PersonnelParticularID = wo.IssuedToPersonnelID AND ig.ItemGroupID = i.ItemGroupID AND i.ItemID = wod.ItemID AND wod.IsOrderCancelled = 0 AND wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate='" + Convert.ToDateTime(txtDate.Text).ToString("MM/dd/yyyy") + "' group by ig.ItemGroupID, pp.PersonnelParticularID";
sqlfunc.GetDataFromDT(dset.UserConsume, qry, "sqlcon");
dset.AcceptChanges();
ViewState.Add("vsDset", dset);
//Deducting new RU Entry after the entered date...
DataTable dtTemp = new DataTable();
string qry2 = "select Sum(rs.Quantity) As Qty,i.ItemGroupID from RegularStock rs, Item i where i.ItemID = rs.ItemID AND rs.RSDate>='" + Convert.ToDateTime(txtDate.Text).ToString("MM/dd/yyyy") + "' Group by i.ItemGroupID";
sqlfunc.GetDataFromDT(dtTemp, qry2, "sqlcon");
if (dtTemp.Rows.Count > 0)
{
for (int i = 0; i < dtTemp.Rows.Count; i++)
{
var q5 = from igs in dset.ItemGroupStock.AsEnumerable()
where igs.ItemGroupID == Convert.ToInt32(dtTemp.Rows[i][1].ToString())
select igs;
foreach (var res in q5)
{
res.OpeningStock -= Convert.ToDecimal(dtTemp.Rows[i][0].ToString());
}
}
}
//Adding cosumed stock from the entered date.
dtTemp = new DataTable();
qry = "select ig.ItemGroupID, sum(wod.OrderQty) As ConsumptionQty from WineOrder wo, WineOrderDetail wod, ItemGroup ig, Item i where ig.ItemGroupID = i.ItemGroupID AND i.ItemID = wod.ItemID AND wo.IssuedToPersonnelID is not null AND wod.IsOrderCancelled = 0 AND wod.WineOrderId = wo.WineOrderId AND wo.WineOrderDate>='" + Convert.ToDateTime(txtDate.Text.Trim()).ToString("MM/dd/yyyy") + "' group by ig.ItemGroupID";
sqlfunc.GetDataFromDT(dtTemp, qry, "sqlcon");
if (dtTemp.Rows.Count > 0)
{
for (int i = 0; i < dtTemp.Rows.Count; i++)
{
var q5 = from igs in dset.ItemGroupStock.AsEnumerable()
where igs.ItemGroupID == Convert.ToInt32(dtTemp.Rows[i][0].ToString())
select igs;
foreach (var res in q5)
{
res.OpeningStock += Convert.ToDecimal(dtTemp.Rows[i][1].ToString());
}
}
}
dset.AcceptChanges();
var qry10 = from us in dset.UserConsume.AsEnumerable()
group us by us.ItemGroupID into g
select new
{
TOTAL = g.Sum(x => x.ConsumptionQty),
IG = g.Key
};
foreach (var res in qry10)
{
var qrry = from igs in dset.ItemGroupStock.AsEnumerable()
where igs.ItemGroupID == res.IG
select igs;
foreach (var res2 in qrry)
{
res2.ClosingStock = res2.OpeningStock - res.TOTAL;
}
}
ViewState.Add("vsDset", dset);
rdoc.Load(Server.MapPath("~/Report/WSDayBookRpt.rpt"));
rdoc.SetDataSource(dset);
CrystalReportViewer1.DataBind();
CrystalReportViewer1.ReportSource = rdoc;
CrystalReportViewer1.RefreshReport();
Session["CRpt"]= rdoc;
}
}
Your CrystalReportViewer control is probably loosing the ReportDocument on PostBack. You will have to do it as follows:
Declare your ReportDocument object at page level
ReportDocument rdoc = new ReportDocument();
In the Page_Load event load your ReportDocument from Session object
protected void Page_Load(System.Object sender, System.EventArgs e) {
if (Page.IsPostBack) {
if (Session.Item("CRpt") != null) {
rdoc = Session.Item("CRpt");
}
CrystalReportViewer1.ReportSource = rdoc;
CrystalReportViewer1.RefreshReport();
} else {
'NOT POSTBACK
if (Session.Item("CRpt") != null) {
Session.Remove("CRpt");
}
Session.Add("CRpt", rdoc);
}
}
On the btnSubmit create and add your ReportDocument to Session
protected void btnSubmit_Click(object sender, EventArgs e) {
//Populate Report
rdoc.SetDataSource(dset);
CrystalReportViewer1.ReportSource = rdoc;
Session.Add("CRpt", rdoc);
}
Besides this if you need specific help in setting LogOnInfo then you may also check this SO post Report asking for database login on setting DataTable as DataSource
这篇关于获得&QUOT;数据库登录错误&QUOT;在水晶报表虽然浏览下一页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!