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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите как связать две таблицы 
:(
    Опции темы
Doss
Дата 20.11.2007, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Помогите всязать две таблицы, работаю в 2005 Studio, в 2003 идет и в моем нет? Кажется что то с DATAGrid...! Помогите если можно с примером...спосибо!!!!


Код
 public partial class Form1 : Form
    {
        string ConnectionString = @"Provider=""Microsoft.Jet.OLEDB.4.0"";Data Source=""D:\Programs\Code на C# с диска (Разоаботка Windows приложений)\RBProduct.mdb"";User ID=Admin;Jet OLEDB:Encrypt Database=False";
        string commandText = @"SELECT [Адрес поставщика],[Код поставщика], Поставщик, Телефон FROM Поставщики";

        string commandText2 = @"SELECT [Код поставщика],[Код продукта], Наименование, [Цена,$] FROM Товары";
        public Form1()
        {
            InitializeComponent();
           
           
            //Соединение...
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = ConnectionString;
            conn.Open();

//==================================================================
            //SQL -запросы
            OleDbCommand myCommand = conn.CreateCommand();
            myCommand.CommandText = commandText;


            OleDbDataAdapter dataAdapter = new OleDbDataAdapter();
            dataAdapter.SelectCommand = myCommand;
            DataSet ds = new DataSet();
            dataAdapter.TableMappings.Add("Table", "Поставщики");
            dataAdapter.Fill(ds);
            dataGridView1.DataSource = ds.Tables["Поставщики"].DefaultView;
            
//=================================================================
//Добавляю объект для второй таблицы(Товары)


           OleDbCommand myCommand2 = new OleDbCommand();
           myCommand2.Connection = conn;
           myCommand.CommandText = commandText2;
            
            
           OleDbDataAdapter dataAdapter2 = new OleDbDataAdapter();
           dataAdapter2.SelectCommand = myCommand2;
           dataAdapter2.TableMappings.Add("Table","Товары");
           dataAdapter2.Fill(ds);//Если все ниже коментирую все выходит...конечно без второй таблицы
            
            DataRelation dataRelation;
            DataColumn dataColumn1;
            DataColumn dataColumn2;
            dataColumn1 = ds.Tables["Поставщики"].Columns["Код поставщика"];
            dataColumn2 = ds.Tables["Товары"].Columns["Код поставщика"];
            dataRelation = new DataRelation("Товары этого поставщика", dataColumn1, dataColumn2);

            ds.Relations.Add(dataRelation );

            DataViewManager dsview = ds.DefaultViewManager;
            dataGridView1.DataSource = dsview;
            dataGridView1.DataMember = "Поставщики";
            conn.Close();
        }
    }


PM MAIL   Вверх
thomas
Дата 20.11.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Doss
Приветствую.
А что собственно нужно получить в результате?
Отобразить в DataGridView товары конкретного поставщика?
Или отображать данные на поставщиков с применением навигации по записям и для выбранного поставщика отображать товары(в DataGridView)?

В первом случае использовать прямой запрос к БД с использованием JOIN.
Во втором BindingNavigator и BindingSource.(если работаем с дизайнером) Sql-команду с условием на выборку товаров для конкретного поставщика. При смене поставщиков применять Refresh() для DataGridView, выводящего товары на экран, а в ДатаСет удалять и создавать соответствующую табличку по новой.

Это сообщение отредактировал(а) thomas - 21.11.2007, 00:43


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Doss
Дата 21.11.2007, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Ну кто-нибудь......подскажите?
PM MAIL   Вверх
thomas
Дата 21.11.2007, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

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



Doss
Что подсказать, то?  smile 
Связь в ДатаСет ты добавил. Код правильный.
Но вот для чего ты добавил эту связь совершенно не понятно.
Что ты хочешь этм сделать
Код

DataViewManager dsview = ds.DefaultViewManager;
dataGridView1.DataSource = dsview;
dataGridView1.DataMember = "Поставщики";

Ты и так своих поставщиков уже отобразил
Код

dataGridView1.DataSource = ds.Tables["Поставщики"].DefaultView;





--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Doss
Дата 22.11.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



НУ да, поставщиков то я отобразил, а если хочу отбразить товары конкретного поставщика, т.е если выбрал одного поставщика и хоу посмотреть коки у него товары, то кликаю на нем или возле него на + и выжу его товары на этой же форме...спосибо за содействие...
PM MAIL   Вверх
Gesha
Дата 26.11.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Doss
Вариант №1
После клика на поставщике делать запрос по его ID и выводить его в таблицу

Вариант №2
Делать фильтр по датасету
Код

                DataGridViewТовары.DataSource = DataTableТовары;
                ((DataTable)DataGridViewТовары).DefaultView.RowFilter = "ID=" + IDПоставщика.ToString();


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

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

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

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


 




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


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

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