Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2011, 07:00   #1
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию Получить id подчинённой записи используя Relations

Имеется 2 таблицы DataTable хранимые в одном DataSet, котороые связаны через Relation.
Допустим, первая таблица - tbl1, и её ид. - tbl1.id_,
а вторая таблица - tbl2, и её ид. - tbl2.id_ и внешний ключ - tbl2.id_tbl1.
Можно ли как-нибудь при добавлении в таблицу №2 записи узнать значение текущей записи в таблице №1 не передавая это значение явно?

т.е. если сигнатура метода добавления будет такой:
Код:
public bool AddRecordToTable(DataTable ATable){}
то можно ли будет получить ид. текущей записи в таблице, которая связана с ATable через Relation?
Greek9000 вне форума Ответить с цитированием
Старый 16.05.2011, 07:05   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

нет .
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 16.05.2011, 15:03   #3
Greek9000
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 151
По умолчанию

И вот как это должно было работать:
Код:
        public bool AddRecordToTable(BindingSource ABindSrc)
        {
            try
            {
                // Проверить, является ли текущая таблица дочерней
                if (ABindSrc.DataSource is BindingSource)
                {
                    // Объявить необходимые переменные
                    DataTable parTbl = null;
                    DataTable chldTbl = null;
                    
                    // Получить BindingSource текущей таблицы
                    // (он является её Master-источником данных)
                    BindingSource tmpbs =
                        (ABindSrc.DataSource as BindingSource);

                    // Получить Master-набор данных
                    DataSet ds = (DataSet)tmpbs.DataSource;

                    // Член данных подчинённой таблицы - Relation
                    string dmbr = ABindSrc.DataMember;

                    // Получить соединяющий Relation
                    DataRelation rel = ds.Relations[dmbr];

                    // Получить главную таблицу
                    parTbl = rel.ParentTable;

                    // Получить подчинённую таблицу
                    chldTbl = rel.ChildTable;

                    // Получить текущее Master-значение
                    DataRowView r = (DataRowView)(tmpbs.Current);
                    string sLinkFld =
                        rel.ParentColumns[0].ColumnName;
                    string sLinkVal =
                        r[sLinkFld].ToString();

                    // Добавить запись в подчинённую таблицу
                    DataRow dr = chldTbl.NewRow();
                    chldTbl.Rows.Add(dr);

                    // Связать привязать подчинённую 
                    // таблицу к главной
                    string sDtlFld =
                        rel.ChildColumns[0].ToString();
                    dr[sDtlFld] = sLinkVal;
                }
                else 
                {
                    DataSet ds = (DataSet)ABindSrc.DataSource;
                    DataTable dt = ds.Tables[ABindSrc.DataMember];
                    DataRow dr = dt.NewRow();
                    dt.Rows.Add(dr);
                }
                return true;
            }
            catch(Exception ex) {
                MessageBox.Show(ex.Message);
                return false;
            }
        }
Greek9000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Используя данные 2-х таблиц нужно получить 1 таблицу. Smile2007 Microsoft Office Excel 15 09.12.2010 18:54
создание формы с подчинённой таблицей aleika Microsoft Office Access 0 25.04.2010 21:14
Как получить URL загружаемой картинки (используя Indy) Vlad_55 Работа с сетью в Delphi 6 23.10.2009 18:17
как получить аттач из письма используя NMPOP3 KORN Работа с сетью в Delphi 0 02.11.2007 07:04