none
Как программно связь между собой деве таблицы?? RRS feed

  • Вопрос

  • Подскажите, как связать программно две таблицы??

    Создал связь между таблицами:

    Таблица Сountries на форме1,  а таблица Regions форме2. Как мне програмно в запросе показать между ними связь??

    4 марта 2013 г. 16:53

Ответы

Все ответы

  • А программно это где, в коде на C#?
    7 марта 2013 г. 14:54
    Модератор
  • А программно это где, в коде на C#?
    Так точно, в коде на С#
    7 марта 2013 г. 19:45
  • А как представлены таблицы в коде? Если просто как экзепляры классов, то достаточно перекрёстных ссылок. Если как объекты DataTable то так.
    8 марта 2013 г. 18:47
    Модератор
  • А как представлены таблицы в коде? Если просто как экзепляры классов, то достаточно перекрёстных ссылок. Если как объекты DataTable то так.

    Я приставляю таблице в коде с помощь запроса и отображаю на форме через  dataGridView, вот приставляю пример: 

    Отображение Сountries таблицы на форме1

        OleDbCommand com;
    OleDbDataAdapter adp;
    DataTable dt;
    DataView dv;

    public void LoadCountries() { try { dt = new DataTable(); OleDbDataAdapter adp = new OleDbDataAdapter("Select*from Countries", con); adp.Fill(dt); dgv_Countries.DataSource = dt.DefaultView; } catch (Exception ex) { MessageBox.Show(ex.Message); } }

    И таблицы Regions на форме2

            OleDbCommand com;
            OleDbDataAdapter adp;
            DataTable dt;
            DataView dv;
    
            public void LoadRegions()
            {
                try
                {
                    dt = new DataTable();
    
                    com = new OleDbCommand("Select*from Regions", con);
                     adp = new OleDbDataAdapter(com);
                    adp.Fill(dt);
                    
                    dgv_Regions.DataSource = dt.DefaultView;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }

    Как связать программно таблицы между собой!

    8 марта 2013 г. 20:13
  • Use INNER JOIN to join two tables.

    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog

    8 марта 2013 г. 20:15
  • Use INNER JOIN to join two tables.

    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog

    Rotin please, example of query with INNER JOIN on the example of my koda
    8 марта 2013 г. 21:59
  • You may want to create a view in the Access (Is it what you're using?) or alternatively (borrowing your code):

     OleDbCommand com;
        OleDbDataAdapter adp;
        DataTable dt;
        DataView dv;
        public void LoadCountriesWithRegions()
        {
               
                try
                {
                    dt = new DataTable();
                    OleDbDataAdapter adp = new OleDbDataAdapter("Select c.*, R.Region_Name from Countries c INNER JOIN Regions R on c.Country_id = R.Country_id", con);
                    adp.Fill(dt);
                    dgv_CountriesWithRegions.DataSource = dt.DefaultView;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Something like this. I also not sure that you setup your tables correctly. Usually one region can have many countries not one country has many regions. Although I am not sure what exactly do you mean by region. Can you show samples of data in both tables?


    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog

    8 марта 2013 г. 22:14
  • You may want to create a view in the Access (Is it what you're using?) or alternatively (borrowing your code):

     OleDbCommand com;
        OleDbDataAdapter adp;
        DataTable dt;
        DataView dv;
        public void LoadCountriesWithRegions()
        {
               
                try
                {
                    dt = new DataTable();
                    OleDbDataAdapter adp = new OleDbDataAdapter("Select c.*, R.Region_Name from Countries c INNER JOIN Regions R on c.Country_id = R.Country_id", con);
                    adp.Fill(dt);
                    dgv_CountriesWithRegions.DataSource = dt.DefaultView;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
    Something like this. I also not sure that you setup your tables correctly. Usually one region can have many countries not one country has many regions. Although I am not sure what exactly do you mean by region. Can you show samples of data in both tables?


    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog

    Here settings of information are in tables

    9 марта 2013 г. 10:51
  • I see, in this case you're correct and one country can have many regions.

    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog

    10 марта 2013 г. 1:36
  • I see, in this case you're correct and one country can have many regions.

    For every expert, there is an equal and opposite expert. - Becker's Law


    My blog

     correctly understood you, for to use connection of tables   INNER JOIN, say yet that means here it in a code " " c.*??? "*??? ", such feelings that it for the values of the key. Thank you!
    10 марта 2013 г. 12:53
  • Уважаемый пользователь!

    В вашей теме отсутствует активность в течение последних 5 дней. При отсутствии каких-либо действий в течение 2 последующих дней, тема будет переведена в разряд обсуждений. Вы можете возобновить дискуссию, просто оставив сообщение в данной теме

    21 марта 2013 г. 15:01
    Модератор
  • Привет

    Посмотрите следующие статьи о том, как можно программно добавить связь между двумя DataTable - Ограничения DataTable и Create a foreign key constraint between two DataTables in VB .NET


    Для связи [mail]

    22 марта 2013 г. 8:36