Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Ankoo
2 / 2 / 3
Регистрация: 20.03.2015
Сообщений: 112
1

Вывод информации в DataGridView в зависимости от выбора в другом DataGridView - C# Access

08.11.2015, 11:52. Просмотров 1148. Ответов 6
Метки нет (Все метки)

В 1м DataGridView У меня предприятия, при выборе какого-то 1 предприятия, во 2й DataGridView появляются все записи с тем же ключом. Общий для все ключ [Кодпредприятия]. Попыталась реализовать, но безуспешно, при нажатие в первой таблице, во второй ничего не меняется, ошибок не выдает. Вот код вывода в 2х DataGridView
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 panel1.Visible = true;         
            try
            {
                connection.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;
                string query = "select Предприятие.[Кодпредприятия], Предприятие.[Название], Отрасли.[Отрасль], Регион.[Регион], Предприятие.[Телефон], Предприятие.[Сайт], Собственность.[Форма собственности], Специализация.[Специализация] from [Предприятие], [Отрасли], [Регион],[Собственность],[Специализация] where Предприятие.[Кодотрасль] = Отрасли.[Код]  and   [Предприятие].Кодрегион = Регион.[Код] and   [Предприятие].Кодсобственность = Собственность.[Код] and    [Предприятие].Кодспециализация = Специализация.[Код]";
                command.CommandText = query;
 
                OleDbDataAdapter da = new OleDbDataAdapter(command);
                DataTable dt = new DataTable();
                da.Fill(dt);
                dataGridView2.DataSource = dt;
                dataGridView2.Columns[0].Visible = false;//Скрывает 1й столбец
                dataGridView2.Columns[1].Width = 220;
                dataGridView2.Columns[2].Width = 180;
                dataGridView2.Columns[3].Width = 120;
                dataGridView2.Columns[4].Width = 60;
                dataGridView2.Columns[5].Width = 110;
                dataGridView2.Columns[6].Width = 90;
                dataGridView2.Columns[7].Width = 100;
                connection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка" + ex);
            }
            finally
            {
                connection.Close();
            }
 
            string trt;
            trt = dataGridView2.SelectedCells[0].Value.ToString();
 
            try
            {
                connection.Open();
                OleDbCommand command = new OleDbCommand();
                command.Connection = connection;
                string query = "select Предприятие.[Кодпредприятия], Директор.[Должность], Директор.[Имя], Директор.[Фамилия], Директор.[Отчество], Директор.[Телефон], Продукция.[Продукция] from [Предприятие], [Директор], [Продукция] where Предприятие.[КодПредприятия] = " + Convert.ToInt32(trt) ;
                command.CommandText = query;
 
                OleDbDataAdapter da = new OleDbDataAdapter(command);
                DataTable dt = new DataTable();
                da.Fill(dt);
                dataGridView3.DataSource = dt;
                dataGridView3.Columns[0].Visible = false;//Скрывает 1й столбец
                dataGridView3.Columns[1].Width = 150;
                dataGridView3.Columns[2].Width = 150;
                dataGridView3.Columns[3].Width = 150;
                dataGridView3.Columns[4].Width = 150;
                dataGridView3.Columns[5].Width = 150;
                dataGridView3.Columns[6].Width = 160;
                   
                connection.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка" + ex);
            }
            finally
            {
                connection.Close();
            }
Добавлено через 13 часов 33 минуты
При выборе значения в 1м датагридвью, сохраняю в переменную ключ [Кодпредприятия]. Как теперь по этому ключу вывести запись из второго датагривью. Во втором датагридвью есть тоже столбец [Код предприятия].
Я попыталась сделать через запрос
C#
1
 select...where Предприятие.[КодПредприятия] = " + Convert.ToInt32(trt) ;
Но мне просто во втором датадридвью столбец [кодпредприятия] приравнивается к значению из первого датагридвью
0
Миниатюры
Вывод информации в DataGridView в зависимости от выбора в другом DataGridView - C# Access  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2015, 11:52
Ответы с готовыми решениями:

Вывод информации в DataGridView в зависимости от выбора в другом DataGridView
Прошу прощения сразу же потому что видел много тем похожих, но ответа так и не могу найти. Есть два...

Отображение той или иной DataGridview в зависимости от выбора в TreeView
Есть у меня на форме элемент TreeView и в нем узлы Node1, Node2 и т.д. Также планирую сделать...

Нажав на значение (строку) из одного DataGridView поиск в другом DataGridView
Всем привет. Есть 2 DataGridView в одном только дата, а во втором дата и много других столбиков....

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

Поиск в Access по информации введенной в DataGridView
Всем привет) Создал форму, в нее поместил DataGridView(1), которую связал с Access (в Access есть...

6
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
08.11.2015, 12:21 2
Во-первых, незачем конвертировать trt в число, просто прибавить к основной части текста запроса.
Сам текст у тебя неправильный, нужно в секции where указать связи со всеми таблицами по ключам. Но даже в этом случае код может повторяться, потому что предприятие одно, а, например, видов продукции несколько.
0
Ankoo
2 / 2 / 3
Регистрация: 20.03.2015
Сообщений: 112
08.11.2015, 12:46  [ТС] 3
Где where у меня и были связи указаны по ключам, но я просто не знаю где тогда указывать, что мне надо вывести во 2м только записи с выбранным кодом. Я понимаю что во 2й код будет повторяться, просто он мне для всех вообще предприятий приравнимает код к выбранному
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
08.11.2015, 12:53 4
У тебя связи в первой выборке. Поэтому там нормально, всё к предприятию прицеплено. А во втором случае ты просто перечислил кучу таблиц, а условие только равенство кода подразумевает. Они тогда как в комбинаторике будут скомпонованы во всех возможных комбинациях.
0
Igr_ok
418 / 390 / 185
Регистрация: 04.08.2015
Сообщений: 1,072
08.11.2015, 13:32 5
Лучший ответ Сообщение было отмечено Ankoo как решение

Решение

Логика должна быть такая: Пользователь выбирает запись в 1-м гриде. При этом вы получаете значение id для 2-го грида и формируете фильтр(или создаете запрос) для 2-го грида.

Реализация:
Обрабатываете событие DataGridView_SelectionChanged. Сначала получаете строку, имеющую фокус, потом извлекаете из нее нужное значение и затем выполняете свой код для фильтрации данных.
1
Ankoo
2 / 2 / 3
Регистрация: 20.03.2015
Сообщений: 112
08.11.2015, 13:45  [ТС] 6
Да, примерно так я и думала, значение кода получаю, но как осуществить фильтрацию не пойму, думала через запрос сделать, "select...where //здесь указать условие вывода//" но в этом случае так не получается
0
nmcf
6526 / 5750 / 2621
Регистрация: 14.04.2014
Сообщений: 24,493
08.11.2015, 14:48 7
Лучший ответ Сообщение было отмечено Ankoo как решение

Решение

C#
1
2
3
4
string query =
"select Предприятие.[Кодпредприятия], Директор.[Должность], Директор.[Имя], Директор.[Фамилия], Директор.[Отчество], Директор.[Телефон], Продукция.[Продукция]
from [Предприятие], [Директор], [Продукция]
where Директор.[Код]=Предприятие.[Кодпредприятия] and Продукция.[Код]=Предприятие.[Кодпредприятия] and Предприятие.[КодПредприятия] = " + trt;
1
08.11.2015, 14:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2015, 14:48

Вывод информации в DataGridView
Задача следующая: Есть бд в MS SQL. База данных для заявок внутри предприятия. Ну типа helpdesk...

Вывод записей в DataGridView в зависимости от выбранных значений комбобоксов
Добрый день всем) У меня есть таблица "Показатели состояния при операции", т.к. показателей может...

DataGridView и Access, составить запрос для dataGridView
У меня есть БД Access, в ней таблица , а в таблице два столбца, один , другой И заполнены они, к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru