2017-01-29 19 views
-1

これは、プログラムの実行中に表示されるエラーです。 。 。これはエラーです。制約を有効にできませんでした。 1つ以上の行に、nullでない、一意の、または外部キー制約に違反する値が含まれています

制約を有効にできませんでした。 1つ以上の行に、nullでない、一意の、または外部キー制約に違反する値が含まれています。

private void searchClassSectionSchedule_Load(object sender, EventArgs e) 
    { 
     comboBox1.DataSource = CSData(); 
     comboBox1.DisplayMember = "ClassSection"; 
     comboBox1.ValueMember = "csec_id"; 
     comboBox1.SelectedIndex = -1; 
    } 
    DataTable dt = new DataTable(); 
    //Data of ClassSection is Taken in ComboBox2 from Table "Class_Section" with the help of Stored Procedure (CSEC_View_Data) 
    private DataTable CSData() 
    { 
     string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString; 
     using (SqlConnection conn = new SqlConnection(connString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("CSEC_View_Data", conn)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       conn.Open(); 
       SqlDataReader r = cmd.ExecuteReader(); 
       dt.Load(r); 
      } 
     } 
     return dt; 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     button1.Enabled = true; 
     while (dataGridView1.RowCount > 1) 
     { 
      dataGridView1.Rows.RemoveAt(0); 
     } 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      dt = VeiwClassSectionTime(); 
      dataGridView1.DataSource = dt; 
      button1.Enabled = false; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 

    private DataTable VeiwClassSectionTime() 
    { 
     string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString; 
     using (SqlConnection conn = new SqlConnection(connString)) 
     { 
      using (SqlCommand cmd = new SqlCommand("CSEC_Time_Display", conn)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("csec_id", comboBox1.SelectedValue); 
       conn.Open(); 
       SqlDataReader reader = cmd.ExecuteReader(); 
       dt.Load(reader); 
      } 
     } 
     return dt; 
    } 
} 

このストアドプロシージャ

はgridVeiw1内のデータを表示するために使用されていると私はそれがエラーを持っていると思いますが、どこにあり、それを解決する方法を私は知りません。 。 。

ALTER PROCEDURE [dbo].[CSEC_Time_Display] 
(
    @csec_id NVARCHAR(50) 
)  
AS 
BEGIN 
    SELECT   
     ct.[ct_id] 
     ,ct.[week_day] 
     ,CONVERT(varchar(5), ct.[ct_start],108) AS 'ct_start' 
     ,CONVERT(varchar(5), ct.[ct_end],108) AS 'ct_end' 
     ,ct.[sub_code] 
     ,ct.[t_id] 
     FROM [Attendance].[dbo].[ClassTimmings] ct 
     WHERE ct.[csec_id] = @csec_id 
END 

はまた、これは、別のストアドプロシージャです:これは、ComboBox1の中でデータを送信するために使用され 、完全にプロジェクトが

ALTER PROCEDURE [dbo].[CSEC_View_Data] 
AS 
BEGIN 
    SELECT 
     s.[csec_id] 
     ,c.[c_program]+'-'+c.[c_semester]+' '+s.[csec_section] AS 'ClassSection' 
    FROM [Attendance].[dbo].[Class_Section] s 
    INNER JOIN [dbo].[Class] c ON s.[c_id] = c.[c_id] 
END 
+0

なしの違反がありますので、 n-null/unique/fk contraints私は 'CSEC_View_Data'に 'INNER JOIN'という問題があると仮定しています。クラスとClass_Sectionのデータをよく見て、C#で実行しているクエリを(ストアドプロシージャを使用して)T-SQLでレプリケートしてみてください。エラーをより迅速に追跡するのに役立ちます。 –

+0

私は、SQL Server Profilerや他のツールを使用して、何が起きているかを追跡することについて助言したいと思います。あなたの格納されたprocesは、型付きのデータセットでプライマリキーとして宣言されている列の重複データを返している可能性があります。上記のように、テーブルのデータをチェックしてみてください。 最後に、 'comboBox1.SelectedValue'が正しいデータを持っているかどうかを調べてみましょう。 –

+2

[エラーの原因と解決方法とは何か]の可能な複製(http://stackoverflow.com/questions/41923956/whats-the-reason-of-error-and-how-to-resolve) –

答えて

0

を実行している私は次のように私のコードを変更し、持っている時に働いていますパーフェクト結果

private void searchClassSectionSchedule_Load(object sender, EventArgs e) 
{ 
    comboBox1.DataSource = CSData(); 
    comboBox1.DisplayMember = "ClassSection"; 
    comboBox1.ValueMember = "csec_id"; 
    comboBox1.SelectedIndex = -1; 
} 
//Data of ClassSection is Taken in ComboBox2 from Table "Class_Section" with the help of Stored Procedure (CSEC_View_Data) 
private DataTable CSData() 
{ 
    DataTable dt = new DataTable(); 
    string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString; 
    using (SqlConnection conn = new SqlConnection(connString)) 
    { 
     using (SqlCommand cmd = new SqlCommand("CSEC_View_Data", conn)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      conn.Open(); 
      SqlDataReader r = cmd.ExecuteReader(); 
      dt.Load(r); 
     } 
    } 
    return dt; 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    button1.Enabled = true; 
    while (dataGridView1.RowCount > 1) 
    { 
     dataGridView1.Rows.RemoveAt(0); 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     dt = VeiwClassSectionTime(); 
     dataGridView1.DataSource = dt; 
     button1.Enabled = false; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 

private DataTable VeiwClassSectionTime() 
{ 
    DataTable dt = new DataTable(); 
    string connString = ConfigurationManager.ConnectionStrings["dbx"].ConnectionString; 
    using (SqlConnection conn = new SqlConnection(connString)) 
    { 
     using (SqlCommand cmd = new SqlCommand("CSEC_Time_Display", conn)) 
     { 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Parameters.AddWithValue("csec_id", comboBox1.SelectedValue); 
      conn.Open(); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      dt.Load(reader); 
     } 
    } 
    return dt; 
} 

}

関連する問題