获得"数据库登录错误"在水晶报表虽然浏览下一页 [英] Getting "Database Logon Error" in Crystal Report While Navigating Next Page

查看:108
本文介绍了获得"数据库登录错误"在水晶报表虽然浏览下一页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆