【问题标题】:Edit TableAdapter CommandText getting Null ReferenceException编辑 TableAdapter CommandText 获取 Null ReferenceException
【发布时间】:2014-02-03 10:03:18
【问题描述】:

您好,我正在尝试在动态创建的DataSet 中编辑我的klientTableAdapter.CommanText TableAdapter,称为DSSchema - 这是在使用ReportViewer 创建报告时动态创建的。

string sqlcomEvent = "SELECT akce,name,surname,rodcis,(Cast([street] as nvarchar(MAX)) + ', '+ city + ', ' + ZIP) AS Adresa, odjezd, sitting, rocnik FROM dbo.klient WHERE (event=@event";

for (int a = 0; a < CommonEvents.Count(); a++)
{
    sqlcomEvent += " OR event='" + CommonEvents[a]+"'";
}
sqlcomEvent += " )AND year=@year ORDER BY SITTING";
// TODO: This line of code loads data into the 'dtourDataSet.klient' table. You can move, or remove it, as needed.
this.klientTableAdapter.Adapter.SelectCommand.CommandText = sqlcomEvent ;            
this.klientTableAdapter.Fill(this.dtourDataSet.klient,zajezd,klientClass.Rocnik());
this.reportViewer1.RefreshReport();

我相信NullReferenceException 被提出是因为我之前没有声明klientTableAdapter,但是当我添加这行var klientTableAdapter = new klientTableAdapter(); 时出现错误:

tours.TiskSchemaDoprava.klientTableAdapter is a field; but is used like a type

谁能帮我解决这个问题?

这对我来说非常有效,但我不确定是否有更聪明的方法可以做到这一点?

this.klientTableAdapter.Fill(this.dtourDataSet.klient,zajezd,klientClass.Rocnik());
this.klientTableAdapter.Adapter.SelectCommand.CommandText = sqlcomZaj;
this.klientTableAdapter.Fill(this.dtourDataSet.klient, zajezd, klientClass.Rocnik());
this.reportViewer1.RefreshReport();

【问题讨论】:

    标签: c# sql .net dataset tableadapter


    【解决方案1】:

    你有一个字段:

    this.klientTableAdapter
    

    它的类型与字段名称相同。因此,当您说new klientTableAdapter() 时,它不知道您是否指的是该字段的类型,并且由于该字段是在类中定义的,因此它正在选择该字段:并且您不能“新建”一个字段。最简单的做法是重命名该字段,并让 Visual Studio 负责在使用它的任何地方重命名它。或者对类型执行此操作并在前面给出一个大写的标准名称KlientTableAdapter,以便编译器可以消除该字段与其类型的歧义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-16
      • 1970-01-01
      • 2020-06-11
      相关资源
      最近更新 更多