На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: maxim84_, juice
  
> Не получается связать таблицы
    Хотел бы научиться связывать таблицы без использования мастеров. По нажатию клавиши в двух DataGridView нужно показать связанную информацию из двух таблицы базы данных Access, но код
    ExpandedWrap disabled
          private void btnFill_Click(object sender, EventArgs e)
          {
            OleDbConnection cn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\DBtest.mdb");
            try
            {
              cn.Open();
            }
            catch
            {
              MessageBox.Show("Ошибка соединения с базой данных DBtest.mdb", "Ошибка подключения к базе",
                               MessageBoxButtons.OK, MessageBoxIcon.Error);
              Application.Exit();
            }
       
            DataSet ds = new DataSet();
            DataTable dtMain = ds.Tables.Add();
            ds.Tables[0].Columns.Add("FactorID", typeof(Int32));
            ds.Tables[0].Columns[0].Unique = true;
            ds.Tables[0].Columns.Add("FactorName", typeof(String));
            ds.Tables[0].Columns[1].Unique = true;
            ds.Tables[0].Columns.Add("FactorMemo", typeof(String));
       
            DataTable dtChaild = ds.Tables.Add();
            ds.Tables[1].Columns.Add("FactorValueID", typeof(Int32));
            ds.Tables[1].Columns[0].Unique = true;
            ds.Tables[1].Columns.Add( "FactorID", typeof(Int32));
            ds.Tables[1].Columns.Add("ValueID", typeof(Int32));
       
            ForeignKeyConstraint FactorValueKey = new ForeignKeyConstraint(ds.Tables[0].Columns[0],
                                              ds.Tables[1].Columns[1]);
            ds.Tables[1].Constraints.Add(FactorValueKey);
       
            DataRelation FactorValueRel = new DataRelation("RelFactorValue", ds.Tables[0].Columns[0],
                         ds.Tables[1].Columns[1]);
            ds.Relations.Add(FactorValueRel);
            OleDbCommand cmd = cn.CreateCommand();
            cmd.CommandText = "SELECT *FROM tblFactor";
            OleDbDataAdapter daFactor = new OleDbDataAdapter();
            daFactor.SelectCommand = cmd;
            daFactor.Fill(ds.Tables[0]);
            dataGridView1.DataSource = ds.Tables[0];
            OleDbCommand cmd2 = cn.CreateCommand();
            cmd2.CommandText = "SELECT *FROM tblValueFactor";
            OleDbDataAdapter daValueFactor = new OleDbDataAdapter();
            daValueFactor.SelectCommand = cmd2;
            daValueFactor.Fill(ds.Tables[1]);
            dataGridView2.DataSource = ds.Tables[1];
          }
    не работает, во второй таблице появляются все записи. Подскажите, пожалуйста, что я делаю неправильно. Проект прикрепил
    Прикреплённый файлПрикреплённый файлDBtest.zip (25,01 Кбайт, скачиваний: 38)
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script Execution time: 0,0714 ]   [ 20 queries used ]   [ Generated: 19.09.18, 16:48 GMT ]