hdv212
دوشنبه 24 اردیبهشت 1386, 22:00 عصر
سلام و خسته نباشید
من سه تا جدول t_books , t_sessions , t_titles دارم که به ترتیب دو به دو ارتباط master/details با هم دارن، زمانی که رکوردهای سه جدول رو به صورت کامل بازیابی میکنم مشکلی نیست، ولی زمانی که شرطی در query میذارم، یه پیغام خطا مبنی بر اینکه 'این constraint نمیتونه فعال بشه چون تمام داده ها مقادیر parent متناظرشون رو ندارند'
این کد منه :
SqlConnection con = new SqlConnection(Properties.Settings.Default.Database 1ConnectionString);
SqlCommand cmd = new SqlCommand();
SqlDataAdapter adapter = new SqlDataAdapter();
cmd.CommandText = "select * from t_books where bookName like '%" + searchText + "%'";
cmd.Connection = con;
adapter.SelectCommand = cmd;
DataSet ds = new DataSet();
SqlCommand cmd2 = new SqlCommand();
SqlDataAdapter adapter2 = new SqlDataAdapter();
cmd2.CommandText = "select * from t_sessions where sessionName like '%" + searchText + "%'";
cmd2.Connection = con;
adapter2.SelectCommand = cmd2;
SqlCommand cmd3 = new SqlCommand();
SqlDataAdapter adapter3 = new SqlDataAdapter();
cmd3.CommandText = "select * from t_titles where titleName like '%" + searchText + "%'";
cmd3.Connection = con;
adapter3.SelectCommand = cmd3;
adapter.Fill(ds, "t_books");
adapter2.Fill(ds, "t_sessions");
adapter3.Fill(ds, "t_titles");
DataRelation dataRelation;
DataRelation dataRelation2;
DataColumn dc1 = ds.Tables["t_books"].Columns["bookID"];
DataColumn dc2 = ds.Tables["t_sessions"].Columns["bookID"];
DataColumn dc3 = ds.Tables["t_sessions"].Columns["sessionID"];
DataColumn dc4 = ds.Tables["t_titles"].Columns["sessionID"];
dataRelation = new DataRelation("Relation1", dc1, dc2);
dataRelation2 = new DataRelation("Relation2", dc3, dc4);
ds.Relations.Add(dataRelation);
ds.Relations.Add(dataRelation2);
TreeNode book;
TreeNode session;
TreeNode title;
foreach (DataRow row in ds.Tables["t_books"].Rows)
{
book = new TreeNode(string.Format("{0}", (string)row["bookName"]));
book.Tag = row;
ds.Tables["t_sessions"].DefaultView.RowFilter = "bookID=" + row["bookID"];
for (int i = 0; i < ds.Tables["t_sessions"].DefaultView.Count; i++)
{
DataRowView sessionRow = ds.Tables["t_sessions"].DefaultView[i];
session = new TreeNode(string.Format("{0}", (string)sessionRow["sessionName"]));
session.Tag = sessionRow;
ds.Tables["t_titles"].DefaultView.RowFilter = "sessionID=" + sessionRow["sessionID"];
for (int j = 0; j < ds.Tables["t_titles"].DefaultView.Count; j++)
{
DataRowView titleRow = ds.Tables["t_titles"].DefaultView[j];
title = new TreeNode(string.Format("{0}", (string)titleRow["titleName"]));
title.Tag = titleRow;
session.Nodes.Add(title);
}
book.Nodes.Add(session);
}
this.treeView2.Nodes.Add(book);
}
error ای که میده اینه :
This constraint cannot be enabled as not all values have corresponding parent values.
error هم درقسمت اضافه کردن dataRelation دومی به دیتاست ایجاد میشه، اینجا :
ds.Relations.Add(dataRelation);
ds.Relations.Add(dataRelation2); error
میشه بگین مشکلمو چطوری حل کنم که چنین پیغامی نده ؟ مرسی
من سه تا جدول t_books , t_sessions , t_titles دارم که به ترتیب دو به دو ارتباط master/details با هم دارن، زمانی که رکوردهای سه جدول رو به صورت کامل بازیابی میکنم مشکلی نیست، ولی زمانی که شرطی در query میذارم، یه پیغام خطا مبنی بر اینکه 'این constraint نمیتونه فعال بشه چون تمام داده ها مقادیر parent متناظرشون رو ندارند'
این کد منه :
SqlConnection con = new SqlConnection(Properties.Settings.Default.Database 1ConnectionString);
SqlCommand cmd = new SqlCommand();
SqlDataAdapter adapter = new SqlDataAdapter();
cmd.CommandText = "select * from t_books where bookName like '%" + searchText + "%'";
cmd.Connection = con;
adapter.SelectCommand = cmd;
DataSet ds = new DataSet();
SqlCommand cmd2 = new SqlCommand();
SqlDataAdapter adapter2 = new SqlDataAdapter();
cmd2.CommandText = "select * from t_sessions where sessionName like '%" + searchText + "%'";
cmd2.Connection = con;
adapter2.SelectCommand = cmd2;
SqlCommand cmd3 = new SqlCommand();
SqlDataAdapter adapter3 = new SqlDataAdapter();
cmd3.CommandText = "select * from t_titles where titleName like '%" + searchText + "%'";
cmd3.Connection = con;
adapter3.SelectCommand = cmd3;
adapter.Fill(ds, "t_books");
adapter2.Fill(ds, "t_sessions");
adapter3.Fill(ds, "t_titles");
DataRelation dataRelation;
DataRelation dataRelation2;
DataColumn dc1 = ds.Tables["t_books"].Columns["bookID"];
DataColumn dc2 = ds.Tables["t_sessions"].Columns["bookID"];
DataColumn dc3 = ds.Tables["t_sessions"].Columns["sessionID"];
DataColumn dc4 = ds.Tables["t_titles"].Columns["sessionID"];
dataRelation = new DataRelation("Relation1", dc1, dc2);
dataRelation2 = new DataRelation("Relation2", dc3, dc4);
ds.Relations.Add(dataRelation);
ds.Relations.Add(dataRelation2);
TreeNode book;
TreeNode session;
TreeNode title;
foreach (DataRow row in ds.Tables["t_books"].Rows)
{
book = new TreeNode(string.Format("{0}", (string)row["bookName"]));
book.Tag = row;
ds.Tables["t_sessions"].DefaultView.RowFilter = "bookID=" + row["bookID"];
for (int i = 0; i < ds.Tables["t_sessions"].DefaultView.Count; i++)
{
DataRowView sessionRow = ds.Tables["t_sessions"].DefaultView[i];
session = new TreeNode(string.Format("{0}", (string)sessionRow["sessionName"]));
session.Tag = sessionRow;
ds.Tables["t_titles"].DefaultView.RowFilter = "sessionID=" + sessionRow["sessionID"];
for (int j = 0; j < ds.Tables["t_titles"].DefaultView.Count; j++)
{
DataRowView titleRow = ds.Tables["t_titles"].DefaultView[j];
title = new TreeNode(string.Format("{0}", (string)titleRow["titleName"]));
title.Tag = titleRow;
session.Nodes.Add(title);
}
book.Nodes.Add(session);
}
this.treeView2.Nodes.Add(book);
}
error ای که میده اینه :
This constraint cannot be enabled as not all values have corresponding parent values.
error هم درقسمت اضافه کردن dataRelation دومی به دیتاست ایجاد میشه، اینجا :
ds.Relations.Add(dataRelation);
ds.Relations.Add(dataRelation2); error
میشه بگین مشکلمو چطوری حل کنم که چنین پیغامی نده ؟ مرسی