2016-06-01 6 views
3

私は3つのテーブルを持っています。関係を表示しようとしています。表1には、1次IDフィールドがあり、これには、その2次IDが複数含まれている表2との関係があります。BindingSource WinFormsを使用してリレーション内にリレーションを表示する方法

IE: 
Table 1 

PID  || Name 
====================== 
123  || SomeName 


Table 2 
Second ID || PID || Code_ID 
=============================== 
1  || 123 || 55 
2  || 123 || 66 


Table 3 
Code ID || Code_Description 
=============================== 
55  || Some Description 1 
66  || Some Description 2 

私のデータセットのデータバインディングとリレーションを使用して、データグリッドビューでWindowsフォームを使用しています。私は表1のPIDと表2のPIDとの間に関係を持っています。私はその関係にデータバインディングを設定することができ、2つの中で1対多の行関係を表示します。次に、表2 Code_IDと表3 Code_IDとの間に関係を作成した。データソースとしてのPIDとデータメンバーとしての新しいCode_IDとの関係を使って別のデータバインディングを作成しました。しかし、これは表3の正しい行を1行だけ表示します。

私がしたいのは、表3に含まれている説明を表示するために、1つのPID関係にCode_IDが表示されていることです。これを行う方法はわかりません。

これが不明な場合はお詫び申し上げますが、これらのコントロールの制限された理解をもって説明することができます。私はDBプログラミングの初心者です。どんなアドバイスも大歓迎です!ありがとう。

+0

ジョイン – DDave

+0

私はSQLサーバで動作し、それにクエリ・ソリューションを持っているが、私は期待していたことで、サーバーを照会しようとしています私の最初のテーブルがリストに表示されているので、そのリストをスクロールすると、フォーム上のラベルが自動的にデータbiを介してその関連する選択肢に更新されます起訴と関係。私は1つの関係と1つの多くの関係で、しかし2つの表の間だけでこれを行うことができました。そのビジネスの一意のPIDに関連するコードのリストを作成する新しいリストが作成されましたが、別のテーブルにその説明を表示したいと考えています。 –

答えて

0

この問題に対する私のソリューションは、DataTableでSQLコマンドを使用していました。

元の問題を明確にするために、ユーザーがスクロールできるBindingSourceにバインドされたリストがあります。テーブルのエントリのリストをスクロールすると、他のテーブルの関連エントリが表示されます。この場合、それは3つのテーブルの間の関係でした。

リストBindingSourceのCurrentChangedイベントに関数を設定しました。ここでは、テーブル2とテーブル3の内部結合を使用してデータベースをクエリします。最後に条件があります(table2.PID = "bindingsource pid" {BindingSource.CurrentでDataRowViewを使用し、DataRowViewでキャストして関連性を取得しましたTABLE1ののBindingSourceのPID}

例コード誰もが、このシナリオで自分自身を発見した場合:?

private void ListBindingSource_CurrentChanged(object sender, EventArgs e) 
    { 
    DataRowView rowView = (DataRowView)ListBindingSource.Current; 
    string query = "Inner Join SQL Query Table 2 & 3 /w Where PID = rowView[PIDColumn]"; 
    SqlConnection connection = new SqlConnection("SQL Connection"); 
    connection.Open(); 
    SqlCommand cmd = new SqlCommand(); 
    cmd.Connection = connection; 
    cmd.CommandType = CommandType.Text; 
    cmd.CommandText = query; 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    DataTable SQLResultTable = new DataTable(); 
    da.Fill(SQLResultTable); 
    dataGridView1.DataSource = SQLResultTable; 
    } 
関連する問題