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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа со связными таблицами 
:(
    Опции темы
PaZ1T1V
  Дата 14.5.2008, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 26.2.2008
Где: Багдад )

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



Доброго времени суток!

Искал по форуму + смотрел на ссылки внизуБ при создании темы, но 4то - то не сильно помогло (((

Вопрос такой есть три связные таблицы как их фильтровать по нажатию мышой на какую либо я4ейку в датагриде(например, если в первом гриде(faculty) нажали на любую я4ейку то во втором(group) будут показываться все группы етого факультета, а в третьем(только объекты определенной группы из датагрид2) )

1.Загрузка бд, конешно код 4ерт ногу сломает, мб можно сделать как нибудь по другому, да + у меня сомнения в полной правильности написанного ....

Код


private void InitTables(OleDbConnection connection, OleDbCommand cmd, string table)
        {
            connection.Open();

            OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
            
            try
            {
                adapter.Fill(tablesDataSet, table);              
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                connection.Close();
            }

            adapter.Update(tablesDataSet, table);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            OleDbConnection connection = new OleDbConnection();
            connection.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" + @"data source = C:\Temp\simpleDb_2.mdb";
            
            OleDbCommand facultyCmd = new OleDbCommand("select [F_num], [F_name], [F_kurs], [F_kolGrp] from faculty", connection);
            OleDbCommand groupCmd = new OleDbCommand("select [G_num], [F_num], [G_name], [G_prefect], [G_kolStud] from Grp", connection);
            OleDbCommand studCmd = new OleDbCommand("select [St_num], [G_num], [St_FIO], [St_adress], [St_phone] from stud", connection);
            
            InitTables(connection, facultyCmd, "faculty");
            InitTables(connection, groupCmd, "Grp");
            InitTables(connection, studCmd, "stud");

            tablesDataSet.Tables["faculty"].PrimaryKey = new DataColumn[] { tablesDataSet.Tables["faculty"].Columns["F_num"] };
            tablesDataSet.Tables["Grp"].PrimaryKey = new DataColumn[] { tablesDataSet.Tables["Grp"].Columns["G_num"] };
            tablesDataSet.Tables["stud"].PrimaryKey = new DataColumn[] { tablesDataSet.Tables["stud"].Columns["St_Fio"] };

            DataRelation relation1 = new DataRelation("facultyGroup", tablesDataSet.Tables["faculty"].Columns["F_num"],
                tablesDataSet.Tables["Grp"].Columns["F_num"]);
            tablesDataSet.Relations.Add(relation1);
            DataRelation relation2 = new DataRelation("groupStud", tablesDataSet.Tables["Grp"].Columns["G_num"],
                tablesDataSet.Tables["stud"].Columns["G_num"]);
            tablesDataSet.Relations.Add(relation2);

            F_BindingSource.DataSource = tablesDataSet.Tables["faculty"];
            G_bindingSource.DataSource = tablesDataSet.Tables["Grp"];
            St_bindingSource.DataSource = tablesDataSet.Tables["stud"];
                        
            facultyDataGrid.DataSource = F_BindingSource;
            groupDataGrid.DataSource = G_bindingSource;
            studDataGrid.DataSource = St_bindingSource;

            bindingNavigator1.BindingSource = G_bindingSource;            
        }



2.Нажатие на любой целлс

Код


private void facultyDataGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            string str;

            try
            {
                str = facultyDataGrid.Rows[e.RowIndex].Cells[0].Value.ToString();
                G_bindingSource.Filter = "F_num" + str;
               // G_bindingSource.DataSource = tablesDataSet.Tables["Grp"];
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }



знаю 4то етот код неправильный, ошибки нету, но и действий никаких не происходит ((((

Заранее спасибо, с уважением!!!
--------------------
[size=8]Atention please!!![/size]
[size=6]Кривые руки[/size]
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Veitmen
Дата 14.5.2008, 08:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Смотри сюда, тот же принцип.
PM MAIL ICQ   Вверх
PaZ1T1V
Дата 15.5.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 169
Регистрация: 26.2.2008
Где: Багдад )

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



хм, принцип то тот же да 4е то никак не полу4ается отфильтровать по клю4евому полю :(((((  smile 

DataRow select = (facultyBindingSource.Current as DataRow);
dataGridView2.DataSource = select.GetParentRows(simpleDb_2DataSet.Relations[0]);

и еще постоянно вылазиит исклю4ение "не создана ссылка на объект", хз по4ему, я базу добавляю не вру4ную а с помощью визарда

Это сообщение отредактировал(а) PaZ1T1V - 15.5.2008, 15:30
--------------------
[size=8]Atention please!!![/size]
[size=6]Кривые руки[/size]
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

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

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

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


 




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


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

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