2014-12-24 7 views
-1

Мне нужно объявить функцию для Crystal Report Viewer в C#, но она показывает мне некоторую ошибку: (Объект Не содержит определения для базы данных и никакого метода расширения «База данных», кроме первого аргумента типа «объект», может быть найдено (вам не хватает ссылки на директиву или сборку?)) Мой код приведен нижеОбъект Не содержит защиты для базы данных и никакого метода расширения База данных

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;** 
     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; 
} 

Ошибка отображается в выделенной строке.

+0

Начать чтение [здесь] (http://en.wikipedia.org/wiki/Strong_and_weak_typing). –

ответ

0

Я объявляю простой метод в моем классе

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) 
{ 
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); 
} 

В прошлом, не забывайте писать этот код на событии page_load:

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

Он не может найти метод ApplyLogInfo в таблице db, поскольку он не существует.

Я думаю, что вы хотите достичь, как показано ниже -

private void LogonToReport(string server, string database, 
     string ID, string password) 
     { 
     TableLogOnInfo logonInfo = new TableLogOnInfo(); 
     foreach(Table table in Report.Database.Tables) 
     { 
      logonInfo = table.LogOnInfo; 
      logonInfo.ConnectionInfo.ServerName = server; 
      logonInfo.ConnectionInfo.DatabaseName = database; 
      logonInfo.ConnectionInfo.UserID = ID; 
      logonInfo.ConnectionInfo.Password = password; 

      table.ApplyLogOnInfo(logonInfo); 
     } 
     } 
1

Проблема заключается в том

public static object ConnectionForReports(object objReport) 

objReport имеет тип object

Тип object не имеет понятия базы данных

Итак, коротко вы ми ssing подходящий тип для objReport

вам нужно будет либо объявить соответствующий тип этого параметра

т.е.

public static object ConnectionForReports(SomeMagicalType objReport) 

Или привести его к соответствующему типу

((SomeMagicalType)objReport).Database.Tables[0].LogOnInfo 

Update

Я никогда не использовал отчеты кристалл, так что это выстрел в темноте

однако ид сказать ваш SomeMagicalType должен быть ReportDocument

т.е. вы могли бы уйти с изменением в этой

public static object ConnectionForReports(ReportDocument objReport) 
+0

Когда я использую функцию ReportDocument, public static object ConnectionForReports (ReportDocument objReport) , это показывает мне еще одну ошибку logOnInfo = objReport.Database.Tables [0] .LogOnInfo; – MaroofQaiser

+0

Какая ошибка? –

+0

Ссылка на объект Не установлена ​​в экземпляр объекта – MaroofQaiser

Смежные вопросы