Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 31.07.2017
Сообщений: 4

Объединение таблиц в dataGridView

31.07.2017, 15:46. Показов 6789. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как объединить две несвязные таблицы в одном dataGridView? Одна таблица из MS SQL, а другая загружается в формате .xls. Объединение должно быть реализовано по номеру телефона.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.07.2017, 15:46
Ответы с готовыми решениями:

Объединение таблиц
Подскажите, пожалуйста, как в данном случае правильно объединить таблицы с помощью join? oleDbCommand = new OleDbCommand( ...

Объединение таблиц
Вот есть запрос, который объединяет две таблицы var qq = "SELECT Sotrudniki.ID_sotrudnika, Sotrudniki.FIO,...

Объединение таблиц из БД в DGV
В общем такая проблема, БД на MS Access и в ней куча таблиц с одинаковыми данными, можно ли как-то объединить все таблицы и засунуть в одну...

10
Эксперт .NET
 Аватар для Usaga
14291 / 9376 / 1352
Регистрация: 21.01.2016
Сообщений: 35,332
31.07.2017, 16:07
Elena_Sch, данный контрол ничего ни с чем объединять не умеет. Вам это нужно сделать самостоятельно, в коде, и уже готовое подсунуть DataGridView-у.
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
31.07.2017, 17:36
Если объединяете таблицы достаточно большого обьема (свыше нескольких тысяч строк каждая) - имеет смысл тогда загружать обе таблицы на сервер - и делать процесс именно там, так как шарп не предназначен для этого - пойдут тормоза.
0
0 / 0 / 0
Регистрация: 31.07.2017
Сообщений: 4
01.08.2017, 11:37  [ТС]
А если попробовать с помощью reportViewer? Тоже не получится реализовать?
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
01.08.2017, 16:14
Определитесь с тем, что хотите сделать.
Пока что для меня это звучит как "сферический конь в вакууме".
т.е. есть 2 таблицы... а какие поля - они одинаковые или разные?
- как объединять хотите - просто добавить одну ко второй или есть общее поле
В общем - более узкие вопросы задавайте - получите более четкие ответы.
0
0 / 0 / 0
Регистрация: 31.07.2017
Сообщений: 4
01.08.2017, 16:16  [ТС]
Есть две таблицы в каждой из которых есть один одинаковый столбец, к одной таблице нужно добавить другую, с учетом сопоставления данных.
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
01.08.2017, 16:23
Linq Join вижу только этот вариант, если таблички маленькие, или же загрузка на сиквел и join средствами сиквела с последующей загрузкой результата в шарп. Пробуйте.
0
 Аватар для Aferuga
645 / 529 / 324
Регистрация: 20.05.2015
Сообщений: 1,471
04.08.2017, 03:37
Для начала загрузить данные хотя бы DataTable.
Цитата Сообщение от Elena_Sch Посмотреть сообщение
Есть две таблицы в каждой из которых есть один одинаковый столбец, к одной таблице нужно добавить другую, с учетом сопоставления данных.
Если соотношение один-ко-одному
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
           basaDataContext rt = new basaDataContext();
            //здесь в basa загружаем данные из Excel
            var basa2 = (from i in rt.tbl
                         join a in basa on i.number equals a.number
                         select new
{
//здесь указываем необходимые поля из обеих таблиц
}
  dataGridView1.DataSource = basa2;

З. Ы. А не проще загрузить данные из Excel в таблицу MS SQL, а дальше уже обрабатывать как одну базу
0
0 / 0 / 0
Регистрация: 31.07.2017
Сообщений: 4
04.08.2017, 11:02  [ТС]
try
{
string constr = @"Provider=Microsoft.ACE.OLEDB.12.0 ata Source=" + textBox1.Text + ";Extended Properties= "Excel 12.0;HDR=Yes;IMEX=1";";
OleDbConnection con = new OleDbConnection(constr);
OleDbDataAdapter sda = new OleDbDataAdapter("SELECT [Номер телефона], [Дата заключения контракта], [Абонент], [Дата рождения], [Адрес], [Контактная информация], [Паспортные данные], [ИНН] FROM [" + comboBox1.SelectedValue + "]", con);
DataTable dt = new DataTable();

sda.Fill(dt);

foreach (DataRow row_excel in dt.Rows) // бежим по таблице excel
{
foreach (DataGridViewRow row_sql in dataGridView1.Rows) // бежим по таблице sql
{
if (row_excel["номер телефона"] == row_sql["номер телефона"])
{
SetMergedRowValue(row_excel, row_sql, 4);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}





Ругнулся на типы объектов

Добавлено через 16 секунд
try
{
string constr = @"Provider=Microsoft.ACE.OLEDB.12.0 ata Source=" + textBox1.Text + ";Extended Properties= "Excel 12.0;HDR=Yes;IMEX=1";";
OleDbConnection con = new OleDbConnection(constr);
OleDbDataAdapter sda = new OleDbDataAdapter("SELECT [Номер телефона], [Дата заключения контракта], [Абонент], [Дата рождения], [Адрес], [Контактная информация], [Паспортные данные], [ИНН] FROM [" + comboBox1.SelectedValue + "]", con);
DataTable dt = new DataTable();

sda.Fill(dt);

foreach (DataRow row_excel in dt.Rows) // бежим по таблице excel
{
foreach (DataGridViewRow row_sql in dataGridView1.Rows) // бежим по таблице sql
{
if (row_excel["номер телефона"] == row_sql["номер телефона"])
{
SetMergedRowValue(row_excel, row_sql, 4);
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}





Ругнулся на типы объектов
0
360 / 287 / 76
Регистрация: 21.06.2016
Сообщений: 1,115
04.08.2017, 11:25
У объектов DataTable есть стандартный метод Merge() - лучше воспользуйтесь им, а не занимайтесь разрисовкой грида. И не нужно будет никаких тормознутых вложенных циклов плодить на гриде. Вот, как пример - кусочек живого проекта
C#
1
2
3
4
dt.PrimaryKey = new DataColumn[] { dt.Columns["filialId"], dt.Columns["lagerId"] };
            dtInvoiceDetails.PrimaryKey = new DataColumn[] { dtInvoiceDetails.Columns["filialId"], dtInvoiceDetails.Columns["lagerId"] };
            dtInvoiceDetails.Merge(dt);
            gDetails.DataSource = dtInvoiceDetails;
в котором dt и dtInvoiceDetails - разные таблицы, на которых нужно создать первичный ключ (без него Merge() не работает), а потом простое присвоение результата в датасорс грида gDetails. Лишние кусочки проверок убрал для более легкого понимания. Пользуйтесь подпилив под себя.
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
04.08.2017, 15:54
Цитата Сообщение от Elena_Sch Посмотреть сообщение
C#
1
if (row_excel["номер телефона"] == row_sql["номер телефона"])
Как минимум, нужно писать
C#
1
if (row_excel["номер телефона"].ToString() == row_sql["номер телефона"].ToString())
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.08.2017, 15:54
Помогаю со студенческими работами здесь

Объединение нескольких таблиц в одну
Доброго времени суток Уважаемые друзья нужна Ваша помощь Задачка такая Есть несколько таблиц U1 (Id, Name) , U2 (Id, Name)...

Нужен запрос на объединение таблиц
Нужно объединить таблицы получение, спецодежда, работники из базы данных, и посчитать стоимость каждого получения со скидкой (в таблице...

Объединение таблиц БД посредством LINQ
В базе данных хранятся следующие таблицы: //Заранее извиняюсь за такое отображение таблиц, надеюсь будет понятно Books --------- ...

Объединение полей из разных таблиц
Вот у меня на скриншотах, 3 таблицы, мне нужно объеденить их, чтоб например на новой форме у меня показало иванова, со всех таблиц

Объединение таблиц в Access и вывод в DataGridView
Обьестните что к чему и в вывести в с# в грид


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru