对象不包含数据库的定义,也没有扩展方法数据库 [英] Object Does not contain a defination for Database and no extension method Database

查看:84
本文介绍了对象不包含数据库的定义,也没有扩展方法数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须在C#中为Crystal Report Viewer声明一个函数,但它显示了一些错误,如; (对象不包含数据库的定义,除了'object'类型的第一个参数之外,没有扩展方法'Database'可以找到(你是否缺少using指令或汇编引用?)

我的代码如下:

  public   static   object  ConnectionForReports( object  objReport)
{
SqlConnection cn = null ;
cn = new SqlConnection(Properties.Settings.Default.CMScon);
CrystalDecisions.Shared.TableLogOnInfo logOnInfo = null ;
logOnInfo = objReport.Database.Tables [ 0 ]。LogOnInfo; // < - here
logOnInfo.ConnectionInfo.ServerName = cn.DataSource;
logOnInfo.ConnectionInfo.DatabaseName = cn.Database;
logOnInfo.ConnectionInfo.UserID = sa;
logOnInfo.ConnectionInfo.Password = SQLadmin;
objReport.Database.Tables [ 0 ]。ApplyLogOnInfo(logOnInfo); // < - 此处
返回 objReport;
}



错误显示在突出显示的行中。

解决方案

查看objReport的定义:

  public   static   object  ConnectionForReports( object  objReport)



object class没有数据库属性,因此编译器会抱怨。

你需要施放具有该属性的相应数据类型的参数是all。


我在我的类中声明了一个方法

 public static object ConnForReport (ReportDocument objReport)
{
SqlConnection cn = null;
cn = new SqlConnection(Properties.Settings.Default.CMScon);
CrystalDecisions.Shared.TableLogOnInfo logOnInfo = null;
logOnInfo = objReport.Database.Tables [0] .LogOnInfo;

logOnInfo.ConnectionInfo.ServerName = cn.DataSource;
logOnInfo.ConnectionInfo.DatabaseName = cn.Database;
logOnInfo.ConnectionInfo.UserID =sa;
logOnInfo.ConnectionInfo.Password =SQLadmin;
objReport.Database.Tables [0] .ApplyLogOnInfo(logOnInfo);
return objReport;
}





然后我在我的按钮点击事件中使用此方法,如下所示:

  protected   void  CmdPreview_Click( object  sender,ImageClickEventArgs e)
{
try
{
InquiryReports objReport = < span class =code-keyword> new InquiryReports();
string vSelectionFormula = null ;
ReportDocument objReports =(ReportDocument)MethodClass.ConnForReport(objReport);
vSelectionFormula = {CompalintView.ComplaintStatus} =' + CboCompStatus.Text + ';
InquiryRptViewer.SelectionFormula = vSelectionFormula;
InquiryRptViewer.ReportSource = objReports;
Session.Add( CR_Session,objReports);
}
catch (例外情况)
{

}

}





不要忘记在page_load事件中写下这些代码:

  protected   void  Page_Load( object  sender ,EventArgs e)
{
if (!Page.IsPostBack)
{
Session.Remove( CR_Session);
CboComplaintStatusFill();
}
else
{
InquiryRptViewer.ReportSource = Session [ CR_Session];
}
}





如果有任何查询请评论我...我在我的项目中尝试这些代码它完美地运作。感谢名单


i have to declare a function for Crystal Report Viewer in C#, but it shows me some error like; (Object Does not contain a definition for Database and no extension method 'Database' excepting a first argument of type 'object' could be find (are you missing a using directive or assembly reference?))
my code is given below

public static object ConnectionForReports(object objReport )
{
    SqlConnection cn = null;
    cn = new SqlConnection(Properties.Settings.Default.CMScon);
    CrystalDecisions.Shared.TableLogOnInfo logOnInfo = null;
    logOnInfo = objReport.Database.Tables[0].LogOnInfo; // <-- here
    logOnInfo.ConnectionInfo.ServerName = cn.DataSource;
    logOnInfo.ConnectionInfo.DatabaseName = cn.Database;
    logOnInfo.ConnectionInfo.UserID = "sa";
    logOnInfo.ConnectionInfo.Password = "SQLadmin";
    objReport.Database.Tables[0].ApplyLogOnInfo(logOnInfo); // <-- and here
    return objReport;
}


The Error shows in Highlighted line.

解决方案

Look at your definition for objReport:

public static object ConnectionForReports(object objReport )


The object class does not have a Database property, so the compiler complains.
You need to cast the parameter to the appropriate datatype which does have the property, is all.


I declare a method in my class

public static object ConnForReport(ReportDocument objReport)
{
    SqlConnection cn = null;
    cn = new SqlConnection(Properties.Settings.Default.CMScon);
    CrystalDecisions.Shared.TableLogOnInfo logOnInfo = null;
    logOnInfo = objReport.Database.Tables[0].LogOnInfo;

    logOnInfo.ConnectionInfo.ServerName = cn.DataSource;
    logOnInfo.ConnectionInfo.DatabaseName = cn.Database;
    logOnInfo.ConnectionInfo.UserID = "sa";
    logOnInfo.ConnectionInfo.Password = "SQLadmin";
    objReport.Database.Tables[0].ApplyLogOnInfo(logOnInfo);
    return objReport;
}



then i use this method in my button click event like this:

protected void CmdPreview_Click(object sender, ImageClickEventArgs e)
       {
           try
           {
           InquiryReports objReport = new InquiryReports();
            string vSelectionFormula = null;
ReportDocument objReports = (ReportDocument)MethodClass.ConnForReport(objReport);
vSelectionFormula = "{CompalintView.ComplaintStatus}='" + CboCompStatus.Text + "'";
            InquiryRptViewer.SelectionFormula = vSelectionFormula;
            InquiryRptViewer.ReportSource = objReports;
            Session.Add("CR_Session",objReports);
           }
           catch (Exception ex)
           {

           }

       }



Do Not forget to write these code on your page_load event:

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Session.Remove("CR_Session");
                CboComplaintStatusFill();
            }
            else
            {
                InquiryRptViewer.ReportSource = Session["CR_Session"];
            }
        }



If any Query so comment me... i have try these code in my project it works perfectly. Thanx


这篇关于对象不包含数据库的定义,也没有扩展方法数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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