2012-07-25 1 views
6

を「プロパティまたは列にバインドすることはできません」私は、表示ボタンを押したときに私はエラーを取得するC#でデータベースに取り組んでいます:データソースエラー:

Error:
Cannot bind to the property or column LastName on the DataSource. Parameter name: dataMember

コード:

private void Display_Click(object sender, EventArgs e) 
{ 
    Program.da2.SelectCommand = new SqlCommand("Select * From Customer", Program.cs); 
    Program.ds2.Clear(); 
    Program.da2.Fill(Program.ds2); 
    customerDG.DataSource = Program.ds2.Tables[0]; 

    Program.tblNamesBS2.DataSource = Program.ds.Tables[0]; 

    customerfirstname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "FirstName")); 
    customerlastname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "LastName")); //Line Error occurs on. 
} 

私が最後の2行をコメントアウトすると、それが適切に表示されます。

+1

姓が正しく入力されていることを確認しましたか? – Stig

+2

これは、そのテーブルに 'LastName'という列がないことを意味します。 – leppie

+0

非常に奇妙なことに、私のSQLサーバーマネージャーでは、列名は実際に入力したものと同じ "LastName"です。私はちょうどそれが動作する最後の行をコメントアウトする場合、FirstNameは正しいと私はLastNameと同じ方法で綴ります。 – KHAN

答えて

6

それはあなたのDataTableが

Program.da2.Fill(Program.ds2); 

..あなたがDS2とあなたのデータセットを満たし、あなたのケースで...

をあなたのデータベースにあるカラム名の姓を見つけていないと、あなたはあなたのデータソースを結合していることこのような 'プログラム' に..

Program.tblNamesBS2.DataSource = Program.ds.Tables[0]; 

それはこれを好きなはずです。..

あなたが 'ds' にバインドされているProgram.tblNamesBS2から値を探しているため、 'ds'に列が存在しないためです。

customerfirstname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "FirstName"));  
    customerlastname.DataBindings.Add(new Binding("Text", Program.tblNamesBS2, "LastName")); 
+0

これはなぜでしょうか?それはFirstNameを見つけることができ、LastNameは正しく綴ります。 – KHAN

5

NULLオブジェクトにバインドすると、このエラーも発生します。

0

私は同じ問題を抱えていました。これは、両方のテーブルの列に同じ列名が付いていたためです。例:

  1. データベース名はAssetsでした。
  2. 最初のテーブル名はPropertyで、2番目のテーブル名はPlantsでした。
  3. 両方の表の最初の列名はasset_numberでした。 上記で説明したエラーが発生しましたが、私の言うことはasset_numberです。

ソリューション:テーブルPlantsの列名をasset_number1に変更しても問題はありませんでした。 (新しい列をやり直すために古い列をすべて削除する必要がありました)