-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
なしの違反がありますので、 n-null/unique/fk contraints私は 'CSEC_View_Data'に 'INNER JOIN'という問題があると仮定しています。クラスとClass_Sectionのデータをよく見て、C#で実行しているクエリを(ストアドプロシージャを使用して)T-SQLでレプリケートしてみてください。エラーをより迅速に追跡するのに役立ちます。 –
私は、SQL Server Profilerや他のツールを使用して、何が起きているかを追跡することについて助言したいと思います。あなたの格納されたprocesは、型付きのデータセットでプライマリキーとして宣言されている列の重複データを返している可能性があります。上記のように、テーブルのデータをチェックしてみてください。 最後に、 'comboBox1.SelectedValue'が正しいデータを持っているかどうかを調べてみましょう。 –
[エラーの原因と解決方法とは何か]の可能な複製(http://stackoverflow.com/questions/41923956/whats-the-reason-of-error-and-how-to-resolve) –