对象不包含数据库的定义,也没有扩展方法数据库 [英] Object Does not contain a defination for Database and no extension method Database
问题描述
我必须在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 )
Theobject
class does not have aDatabase
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屋!