Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение связанных таблиц в БД 
:(
    Опции темы
alexprogramer
Дата 23.10.2011, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.10.2011

Репутация: нет
Всего: нет



Всем привет,

Пролистал вопросы по БД, но так и не смог найти ответа на свой.

Проблема такая:

Есть 3 связанные таблицы. Все они выводятся на форму и редактируются (через datagrid-ы). Надо сохранить все вносимые изменения.
БД локальная MySQL создана в конструкторе. Пишу в C# 2010

Код которым пытаюсь все это сделать следующий:

Код

            this.Validate();
            
            this.brokersBindingSource.EndEdit();                   //1
            this.trading_TerminalBindingSource.EndEdit();     //2
            this.clientsBindingSource.EndEdit();                     //3            

            this.tableAdapterManager.UpdateAll(this.DB_DataSet);


Изменения сохраняются только в самой первой таблице (brokers), а в остальных (1-я связанна со 2-й как 1 ко многим, 2-я связана с 3-й как один ко многим) ничего не происходит. 

Подскажите пож в чем может быть проблема и как решить. Уже несколько дней безрезультатно бьюсь (:
PM MAIL   Вверх
alexprogramer
  Дата 24.10.2011, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.10.2011

Репутация: нет
Всего: нет



Решение нашел сам к сожалению никто не помог.

Оказывается когда создаешь связь между таблицами ее обязательно надо создавать в обозревателе баз данных

Если в конструкторе позже пытаться это делать то почему то изменения не приносят должного результата.

Если у кого то похожая проблема, то откройте базу northwind и в таблицах посмотрите как сделаны связи, в ней все работает.  
PM MAIL   Вверх
deniskostin
Дата 15.11.2011, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 30.4.2009

Репутация: нет
Всего: нет



у меня проблема немного другого характера.

 имеется dataset  и 2 таблицы в нем.

происходит загрузка 2 таблиц из MS Access, связка , редактирование. но при попытке сохранить изменения вылетает ошибка "для обеспечения целостности данных необходима связная запись в таблице N_PODR"

Код

public DataSet ds = new System.Data.DataSet();

/* LOAD DATA FROM PODRAZDELENIYA */
            
            string query = @"SELECT * FROM PODR_TBL ORDER BY id";
            this.Podrazd_Adapter = new OleDbDataAdapter(query,conn);
            this.Podrazd_Adapter.Fill(ds,"PODR_TBL");
            
            this.Podrazd_CommandBuilder = new OleDbCommandBuilder(Podrazd_Adapter);
            this.Podrazd_CommandBuilder.GetUpdateCommand();
            this.Podrazd_CommandBuilder.GetDeleteCommand();
            this.Podrazd_CommandBuilder.GetInsertCommand();
            
            ds.Tables["PODR_TBL"].Columns["id"].AutoIncrement = true;
            ds.Tables["PODR_TBL"].Columns["id"].AutoIncrementStep = 1;
            ds.Tables["PODR_TBL"].Columns["id"].Unique = true;
            ds.Tables["PODR_TBL"].PrimaryKey = new DataColumn[]{ds.Tables["PODR_TBL"].Columns["id"]};
            
            /* * * * * * * * * * * * * * * * * *
             * 
             * LOAD DATA FROM SPISOK LICHNOGO SOSTAVA
             *  
             * * * * * * * * * * * * * * * * * */
            
            query = @"SELECT id, n_podr, dolzh, mesto_nah, zvanie, familie, imya, otchestvo, adress, phone, n_mar, prib, obyz_vrprib, date_prib, vrem_prib, Opozd, [zvanie]+' '+[familie] as test FROM SPISLS_TBL";
            LSostav_Adapter = new OleDbDataAdapter(query,conn);
            LSostav_Adapter.Fill(ds,"SPISLS_TBL");
            string update = @"UPDATE SPISLS_TBL SET n_podr=?, dolzh=?, mesto_nah=?, zvanie=?,"+
                            @" familie=?, imya=?, otchestvo=?, adress=?, phone=?, n_mar=?,"+
                            @" prib=?, obyz_vrprib=?, date_prib=?, vrem_prib=?,"+
                            @" Opozd=? WHERE id=?";
            
            OleDbCommand upcom = new OleDbCommand(update);
            
            upcom.Parameters.Add("n_podr",OleDbType.Integer,10,"n_podr");
            upcom.Parameters.Add("dolzh",OleDbType.VarChar,100,"dolzh");
            upcom.Parameters.Add("mesto_nah",OleDbType.VarChar,100,"mesto_nah");
            upcom.Parameters.Add("zvanie",OleDbType.VarChar,100,"zvanie");
            upcom.Parameters.Add("familie",OleDbType.VarChar,100,"familie");
            upcom.Parameters.Add("imya",OleDbType.VarChar,100,"imya");
            upcom.Parameters.Add("otchestvo",OleDbType.VarChar,100,"otchestvo");
            upcom.Parameters.Add("adress",OleDbType.VarChar,100,"adress");
            upcom.Parameters.Add("phone",OleDbType.VarChar,100,"phone");
            upcom.Parameters.Add("n_mar",OleDbType.VarChar,100,"n_mar");
            upcom.Parameters.Add("prib",OleDbType.VarChar,100,"prib");
            upcom.Parameters.Add("obyz_vrprib",OleDbType.VarChar,100,"obyz_vrprib");
            upcom.Parameters.Add("date_prib",OleDbType.VarChar,100,"date_prib");
            upcom.Parameters.Add("vrem_prib",OleDbType.VarChar,100,"vrem_prib");
            upcom.Parameters.Add("Opozd",OleDbType.VarChar,100,"Opozd");
            upcom.Parameters.Add("id",OleDbType.Integer,10,"id");
            
            LSostav_Adapter.UpdateCommand = upcom;
            
            LSostav_CB = new OleDbCommandBuilder(LSostav_Adapter);
            LSostav_CB.GetDeleteCommand();
            LSostav_CB.GetInsertCommand();
            
            ds.Tables["SPISLS_TBL"].Columns["id"].AutoIncrement = true;
            ds.Tables["SPISLS_TBL"].Columns["id"].AutoIncrementStep = 1;
            ds.Tables["SPISLS_TBL"].Columns["id"].Unique = true;
            ds.Tables["SPISLS_TBL"].PrimaryKey = new DataColumn[]{ds.Tables["SPISLS_TBL"].Columns["id"]};
            
            
            
            ds.Relations.Add("podrazd",ds.Tables["PODR_TBL"].Columns["id"],ds.Tables["SPISLS_TBL"].Columns["n_podr"]);


Podrazd_Adapter.Update(ds,"PODR_TBL");
LSostav_Adapter.Update(ds,"SPISLS_TBL");



PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0564 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.