编辑TableAdapter CommandText获取Null ReferenceException

时间:2014-02-03 10:03:19

标签: c# sql .net dataset tableadapter

您好我正在尝试编辑名为klientTableAdapter.CommanText的动态创建的TableAdapter DataSet DSSchema - 这是使用{{1}创建报告时动态创建的}。

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(); 被引发了,因为我之前没有声明过klientTableAdapter,但是当我添加这行NullReferenceException时,我收到错误:

var klientTableAdapter = new klientTableAdapter();

有人可以帮我解决这个问题吗?

这对我来说非常合适,但我不确定是否有更聪明的方法吗?

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

1 个答案:

答案 0 :(得分:0)

你有一个字段:

this.klientTableAdapter

它的类型与字段名称相同。所以当你说new klientTableAdapter()时,它不知道你是否指的是字段的类型,并且因为字段是在类中定义的,它正在选择字段:并且你不能'新'领域。最简单的方法是重命名字段,让Visual Studio在任何地方使用它来重命名。或者对类型执行此操作并在前面KlientTableAdapter给出带有大写的标准名称,以便编译器可以根据其类型消除字段的歧义。