Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523

По значению из столбца 1 дата грида 1 забрать значения из 2 столбца 2 дата грида

14.02.2015, 00:29. Показов 1931. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Суть задачи такова: Нужно взять значение из 8-го столбца первого дата грида, сравнить его с значением 0-го столбца второго дата грида и если они совпадают, в стринговые переменные записать значения 1,2,3-го второго дата грида.
На VBA я делал это так:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
 'Забор значений из таблицы заказчик
        FullOptZakazchik.ЗаказчикTableAdapter.Fill(FullOptZakazchik.ModelsDataSet.Заказчик)
        'Перебор значений
        For i = 0 To FullOptZakazchik.ModelsDataSet.Заказчик.Rows.Count - 1
            If ЗаказDataGridView(5, pos).Value = FullOptZakazchik.ModelsDataSet.Заказчик(i)(0) Then
                Imya = FullOptZakazchik.ModelsDataSet.Заказчик(i)(1)
                Fam = FullOptZakazchik.ModelsDataSet.Заказчик(i)(2)
                Otchev = FullOptZakazchik.ModelsDataSet.Заказчик(i)(3)
                Address = FullOptZakazchik.ModelsDataSet.Заказчик(i)(4)
                Exit For
            End If
        Next
Переделал этот код под свой:
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
//Работа с забором значений
                if (parentsDataGridView.RowCount != 0)
                {
                    //Цикл для перебора значений из другой таблицы(Мама)
                    for (int j = 0; j <= school_HelperDataSet.Parents.Rows.Count; j++)
                    {
                        if (сhildrenDataGridView[8, i].Value == school_HelperDataSet.Parents(j),(0))
                        {
                            Mama_Name = Convert.ToString(school_HelperDataSet.Parents[j, 1]);
                            Mama_Fam = Convert.ToString(school_HelperDataSet.Parents[j, 2]);
                            Mama_Otch = Convert.ToString(school_HelperDataSet.Parents[j, 3]);
                            break;
                        }
                        else
                        {
                            label2.Text = "Мама: " + Convert.ToString(сhildrenDataGridView[8, i].Value);
                            break;
                        }
                    }
 
                    //Прогрузка значений в поля просмотра
                    Prosmotr_Mama = Mama_Name + " " + Mama_Fam + " " + Mama_Otch;
                    label2.Text = "Мама: " + Prosmotr_Mama;
                }
                else
                {
                    label2.Text = "Мама: " + Convert.ToString(сhildrenDataGridView[8, i].Value);
                }
Однако это не правильно, где моя ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.02.2015, 00:29
Ответы с готовыми решениями:

Сохранение только определенных строк из дата грида
Здравствуйте. Есть дата грид в который переносятся данные из бд в акцессе. По дата гриду реализован поиск ...

Копирование значений одного дата грида в другой
Добрый день возникла проблемка, после напряжённых 10 часов кодинга и написания большущей проги, мозг кипит не могу понять в чём проблема. ...

Поиск строки в дата грид по значению столбца
Всем привет! Ребят, помогите вот с чем: нужно отскролить строки в датагриде до строки значение в ячейке которой соответствует значению...

23
 Аватар для chumich
2081 / 1239 / 464
Регистрация: 20.12.2014
Сообщений: 3,234
14.02.2015, 01:42
Цитата Сообщение от Darkvoid Посмотреть сообщение
Нужно взять значение из 8-го столбца первого дата грида, сравнить его с значением 0-го столбца второго дата грида и если они совпадают, в стринговые переменные записать значения 1,2,3-го второго дата грида.
А зачем через датасет? Почему просто значения ячеек нельзя сравнить? И забрать из ячеек?
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
14.02.2015, 22:25  [ТС]
Цитата Сообщение от chumich Посмотреть сообщение
А зачем через датасет? Почему просто значения ячеек нельзя сравнить? И забрать из ячеек?
Можете показать пример? А то я пробовал по всякому, и к дата грилу ссылаться, как я тока не пробовал, не работает ни один вариант
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
14.02.2015, 23:17
Darkvoid, вот держи, простой пример сравнивания столбцов таблицы:
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
        string a1 = "";
        string a2 = "";
        string a3 = "";
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
            dataGridView1.Rows.Add("1", "1", "1", "1");
            dataGridView1.Rows.Add("2", "2", "2", "2");
            dataGridView1.Rows.Add("3", "3", "3", "3");
            dataGridView1.Rows.Add("5", "5", "5", "5");
 
            dataGridView2.Rows.Add("1", "1", "1", "1");
            dataGridView2.Rows.Add("2", "2", "2", "2");
            dataGridView2.Rows.Add("4", "3", "3", "3");
            dataGridView2.Rows.Add("5", "5", "5", "5");
 
 
            for(int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                if(dataGridView1[3,i].Value == dataGridView2[0,i].Value)
                {
                    a1 = a1 + dataGridView1[1, i].Value.ToString() + " ";
                    a2 = a2 + dataGridView1[2, i].Value.ToString() + " ";
                    a3 = a3 + dataGridView1[3, i].Value.ToString() + " ";
                }
            }
 
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = a1 + a2 + a3;
        }
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
15.02.2015, 10:43  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
Darkvoid, вот держи, простой пример сравнивания столбцов таблицы:
У меня не работает=((((
Две таблицы сhildrenDataGridView и parentsDataGridView:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Соединение по ID
            for (int i = 0; i < сhildrenDataGridView.Rows.Count; i++)
            {
                if (сhildrenDataGridView[0, i].Value == parentsDataGridView[0, i].Value)
                {
                    Mama_Name = Mama_Name + parentsDataGridView[1, i].Value.ToString();
                    break;
                }
                else
                {
                    MessageBox.Show("404 Not Found!","ERROR");
                }
            }
            MessageBox.Show(Mama_Name);
Миниатюры
По значению из столбца 1 дата грида 1 забрать значения из 2 столбца 2 дата грида  
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
15.02.2015, 14:00
Darkvoid, а где вторая таблица? может там нет сходных параметров.. и вообще в цикле не нужно делать этого:
C#
1
2
3
4
                else
                {
                    MessageBox.Show("404 Not Found!","ERROR");
                }
а то при каждом щаге, если не найдет равные будет вылетать
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
15.02.2015, 19:55  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
а то при каждом щаге, если не найдет равные будет вылетать
Я в курсе, я так сделал, для теста, чтобы проверить, а есть ли собственно похожие данные
Цитата Сообщение от blackstar Посмотреть сообщение
а где вторая таблица?
Вы стебетесь? parentsDataGridView и есть вторая таблица, первая childrenDataGridView
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
15.02.2015, 19:58
Darkvoid, на скрине имел ввиду.. а может у вас там и нет одинаковых значений? пример который вам послал, отлично сравнивает.. пришлите исходную программу(ну или проект где 2 datagriview с данными)
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
15.02.2015, 20:21  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
Darkvoid, на скрине имел ввиду.. а может у вас там и нет одинаковых значений? пример который вам послал, отлично сравнивает.. пришлите исходную программу(ну или проект где 2 datagriview с данными)
Идет сравнение по ID, и там три записи и там три записи, не понимаю в чем проблема
К сообщению прикладываю exe-шник программы
Вложения
Тип файла: rar Debug.rar (760.6 Кб, 4 просмотров)
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
15.02.2015, 20:55
Darkvoid, а как там у вас поиск в проге делать? потерялся в ней
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
15.02.2015, 21:02  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
Darkvoid, а как там у вас поиск в проге делать? потерялся в ней
В текстовое поле вводим значение, потом жмем кнопку поиск, как понимаю ответа я не получу?
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
15.02.2015, 21:05
Darkvoid, ну объясните что вы ищите... я не обладаю экстрасенсорными способностями, чтобы знать что нужно искать..
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
15.02.2015, 21:11  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
Darkvoid, ну объясните что вы ищите... я не обладаю экстрасенсорными способностями, чтобы знать что нужно искать..
Мне нужно, грубо говоря, сделать так, чтобы из первой таблицы брало значений ID, сравнивало его с ID на вкладке родители и если они совпадают, то из строки на вкладке родители забрать значения 1-2-3 столбца
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
15.02.2015, 21:28
Darkvoid, по сути поиск у вас правильный.. попробуйте убрать break с условия
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
15.02.2015, 22:08  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
Darkvoid, по сути поиск у вас правильный.. попробуйте убрать break с условия
Нашел почему пустые значения выводило .ToString() нужно было дописать, однако теперь косяк, выводит без break последнее значения, с break только первое
C#
1
2
3
4
5
6
7
8
for (int i = 0; i < сhildrenDataGridView.Rows.Count; i++)
            {
                if (сhildrenDataGridView[0, i].Value.ToString() == parentsDataGridView[0, i].Value.ToString())
                {
                    Mama_Name = parentsDataGridView[1, i].Value.ToString();                  
                }
            }
            MessageBox.Show(Mama_Name);
Т.е. или первое или последнее, средние значения почему-то игнорирует=(
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
15.02.2015, 22:13
Darkvoid, ну так это понятно) перезаписывается переменная Mama_Name.. нужно делать либо массив либо:
C#
1
Mama_Name = Mama_Name   + parentsDataGridView[1, i].Value.ToString() + " ";
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
15.02.2015, 22:20  [ТС]
Цитата Сообщение от blackstar Посмотреть сообщение
Mama_Name = Mama_Name * + parentsDataGridView[1, i].Value.ToString() + " ";
Таким образом добавляет все значения со всех строк из первых столбцов, а мне нужно только 1
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
15.02.2015, 22:39
Darkvoid, а что ты хотел? так и будет выводится, потому что присваивается последнее значение в переменной, а при break обрубается цикл. записывай в массив
0
8 / 8 / 10
Регистрация: 16.10.2012
Сообщений: 523
15.02.2015, 23:20  [ТС]
blackstar, благодарю за помощь, для тех кто будет читать эту тему в будущем:
Задача: Имеются две таблицы, нужно по ID строки из первой таблицы найти соответствия во второй таблице (ID_таблица_один == ID_таблицы_два) и если найдены соответствия, то вывести в переменную значений из второго столбца таблицы.
Решение:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Индекс текущей строки
            int count = сhildrenDataGridView.CurrentRow.Index;
 
            //Соединение по ID
            for (int i = 0; i < сhildrenDataGridView.Rows.Count; i++)
            {
                try
                {
                    if (сhildrenDataGridView[0, count].Value.ToString() == parentsDataGridView[0, i].Value.ToString())
                    {
                        Mama_Name = parentsDataGridView[1, i].Value.ToString();
                    }
                }
                catch
                {
                    MessageBox.Show("Соответствия не найдены!","Ошибка!");
                }                
            }
            MessageBox.Show(Mama_Name);
Однако работает ппц криво...
Т.е. если количество записей одинаковое, то работает все красиво, но если нет, то вылетает сообщение об ошибке + предыдущий удачный результат, если бы это можно было бы как-то решить, просто в будущем будет не MessageBox использоваться, а будут выводится данные в textBox на другой форме
0
116 / 116 / 42
Регистрация: 27.02.2013
Сообщений: 899
16.02.2015, 09:41
Darkvoid, если количество строк разное в таблицах, используйте второй цикл.. создайте цикл в цкле для проверки каждой строчки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.02.2015, 09:41
Помогаю со студенческими работами здесь

Сумма столбца грида без sql
Подскажите, пожалуйста:impossible:, как подсчитать сумму столбца DBGrid'a, в TEdit не используя sql? ..... Только можно поподробнее, что и...

DataGrid and Pocket - проблема заголовка столбца у грида
Всем доброго времени суток! Никто не сталкивался с проблемой заголовка столбца у грида на покете? Dim DC As DataColumn = New...

Получить содержимое ячейки грида по номеру строки и столбца
Собсна,знаю,что можно получить номер строки и столбца элемента в гриде,если известен объект,при помощи методов Grid.GetColumn() и...

Как посчитать среднее значение одного столбца грида?
var qwer, q: real; begin for i:=1 to (stringGrid1.rowcount-1) do begin q:=strtofloat(stringgrid1.cells); ...

Как исключить ошибку при щелчке по заголовку столбца грида
Добрый день. Выделение всей строки у меня происходит так: private void MainTable_CellMouseClick(object sender,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru