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

Добавление произвольного количества столбцов из DB MSSQL 2008 - C#/.NET 4.x

03.10.2014, 14:55. Просмотров 466. Ответов 8
Метки нет (Все метки)

Товарищи, Привет!

Столкнулся с проблемкой в добавлении столбцов в DataGridView. Суть вопроса: Есть некоторый SQL запрос, который возвращает некоторое количество строк, это может быть 1, 2, 3 .... n строк, и мне нужно, чтобы в итоге эти строки стали столбцами в DataGridView.

Вот пример таблицы, которую я получаю из БД:

PERIODP_VOLA_VOL
001.201410.0009.980
002.201420.00021.600
003.201430.00028.900
004.201440.00041.520
005.201450.00045.982
006.201460.00055.600
007.201470.00060.900
008.201480.00076.300
009.201490.0000.000
010.2014110.1000.000
011.2014100.2000.000
012.2014120.3000.000

Первый столбец в этой таблице, содержит заголовки столбцов для DataGrid.

P.S. Искал решение на форуме, но так ничего и не нашел, если плохо смотрел, ткните пожалуйста носом. Не нужно указывать ссылки на темы где люди не знают как добавить столбец в ДатаГрид (это я умею). Мне нужно понять как добавить столбцы, если их количество заведомо неизвестно.
http://www.cyberforum.ru/ado-net/thread1132140.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2014, 14:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос .NET 4.x Добавление произвольного количества столбцов из DB MSSQL 2008 (C#):

Заполнение ListView из БД MSSQL 2008
Ребята помогите! Пытаюсь заполнить в Visual Studio 2010 (C#), ListView...

Создание резервной копии бд. mssql server 2008
Приветствую. Подскажите, можно ли как-нибудь сделать чтобы программа создавала...

Добавление строки в БД MSSql
возможно пишу не так запрос, но подобная конструкция работала в С++. В...

Как считать название столбцов в таблице БД MSSQL
Нужно считать название столбцов из таблицы в БД (MSSQL) ,например в список,...

Добавление записи в базу данных MSSQL
Добрый вечер, возникла проблема при добавлении записи в БД. У меня есть две...

8
nedel
588 / 588 / 345
Регистрация: 09.04.2014
Сообщений: 1,397
Завершенные тесты: 1
03.10.2014, 16:09 #2
Цитата Сообщение от kuzya987 Посмотреть сообщение
как добавить столбцы, если их количество заведомо неизвестно.
после того как вы получите данные из БД количество становится известным, тогда и добавляйте
Цитата Сообщение от kuzya987 Посмотреть сообщение
добавить столбец в ДатаГрид (это я умею)
Добавлено через 2 минуты
а можно и так
Displaying Vertical Rows in DataGrid View
0
kuzya987
2 / 2 / 3
Регистрация: 05.09.2010
Сообщений: 32
09.10.2014, 10:47  [ТС] #3
Цитата Сообщение от nedel Посмотреть сообщение
после того как вы получите данные из БД количество становится известным, тогда и добавляйте
Это да, но вопрос в том, что это количество может быть разным.

Цитата Сообщение от nedel Посмотреть сообщение
а можно и так
Displaying Vertical Rows in DataGrid View
Это как раз то что мне нужно, не понятно только как заголовки столбцов добавить...
0
nedel
588 / 588 / 345
Регистрация: 09.04.2014
Сообщений: 1,397
Завершенные тесты: 1
09.10.2014, 11:29 #4
Цитата Сообщение от kuzya987 Посмотреть сообщение
не понятно только как заголовки столбцов добавить...
в public DataSet FlipDataSet(DataSet my_DataSet)
C#
1
2
 for (int i = 0; i <= dt.Rows.Count; i++)
   {   table.Columns.Add(Convert.ToString(i));  }
вместо Convert.ToString(i) вставляйте свои названия dt.Rows[i][0].ToString()

Добавлено через 5 минут
Цитата Сообщение от kuzya987 Посмотреть сообщение
Это да, но вопрос в том, что это количество может быть разным.
и что мешает каждый раз удалять все предыдущие и добавлять новые вне зависимости от их количества?
0
kuzya987
2 / 2 / 3
Регистрация: 05.09.2010
Сообщений: 32
09.10.2014, 12:41  [ТС] #5
Цитата Сообщение от nedel Посмотреть сообщение
вместо Convert.ToString(i) вставляйте свои названия
Названия есть, в исходной таблице из БД, в ячейках колонки PERIOD, т.е. '001.2014', '002.2014' и т.д.

Я думал также циклом загнать и вместо Convert.ToString(i) написал dt.Rows[i][0].ToString(); со смещением на единицу, но ругается, пишет что столбец с таким именем уже есть.

Добавлено через 1 час 9 минут
Цитата Сообщение от nedel Посмотреть сообщение
и что мешает каждый раз удалять все предыдущие и добавлять новые вне зависимости от их количества?
Чёт не совсем понимаю, можешь пример написать?
0
nedel
588 / 588 / 345
Регистрация: 09.04.2014
Сообщений: 1,397
Завершенные тесты: 1
09.10.2014, 14:19 #6
Цитата Сообщение от kuzya987 Посмотреть сообщение
Чёт не совсем понимаю
1. делаешь выборку - получаешь таблицу
2. удаляеш все столбцы в DataGridView
3. добавляешь в DataGridView столько столбцов сколько строк в таблице

Добавлено через 3 минуты
Цитата Сообщение от kuzya987 Посмотреть сообщение
пишет что столбец с таким именем уже есть.
ну да, столбцы в DataTable должны иметь уникальное имя
0
kuzya987
2 / 2 / 3
Регистрация: 05.09.2010
Сообщений: 32
09.10.2014, 14:27  [ТС] #7
Цитата Сообщение от nedel Посмотреть сообщение
1. делаешь выборку - получаешь таблицу
2. удаляеш все столбцы в DataGridView
3. добавляешь в DataGridView столько столбцов сколько строк в таблице
Это циклом делать?

Цитата Сообщение от nedel Посмотреть сообщение
ну да, столбцы в DataTable должны иметь уникальное имя
Они и так уникальные, повторяющихся нет...
0
nedel
588 / 588 / 345
Регистрация: 09.04.2014
Сообщений: 1,397
Завершенные тесты: 1
09.10.2014, 17:10 #8
Цитата Сообщение от kuzya987 Посмотреть сообщение
Они и так уникальные, повторяющихся нет...
видать вы ошибаетесь
Цитата Сообщение от kuzya987 Посмотреть сообщение
но ругается, пишет что столбец с таким именем уже есть.
Добавлено через 35 секунд
Цитата Сообщение от kuzya987 Посмотреть сообщение
Это циклом делать?
а как иначе?
0
kuzya987
2 / 2 / 3
Регистрация: 05.09.2010
Сообщений: 32
10.10.2014, 10:02  [ТС] #9
Получилось:

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
 
            DataTable table = new DataTable("CH_VOLS");
            DataTable source = new DataTable();
            SQLConnectionPTB.connection.Open();
...
                //Запрос к БД
...
                SqlDataReader r1 = cs1.ExecuteReader();
                table.Load(r1);
                int c = table.Rows.Count - 1;
                source.Columns.Add("Param");
                for (int x = 0; x <= c; x++)
                {
                    source.Columns.Add(table.Rows[x][0].ToString());
                }
                DataRow r;
                for (int k = 1; k < table.Columns.Count; k++)
                {
                    r = source.NewRow();
                    r[0] = table.Columns[k].ToString();
                    for (int j = 1; j <= table.Rows.Count; j++)
                        r[j] = table.Rows[j - 1][k];
                    source.Rows.Add(r);
                }
                dgrVOLS.Columns.Clear();
                dgrVOLS.DataSource = source;
                dgrVOLS.AutoResizeColumns();
0
10.10.2014, 10:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2014, 10:02
Привет! Вот еще темы с решениями:

Добавление записи в таблицу MSSQL 2008
Почему-то, при добавлении записи в таблицу с использование ADO.NET EF не...

Обновление MSSQL 2008 R2 до SP3
Добрый день, Уважаемые форумчане. Решил обновить MSSQL 2008 R2 до SP3 ,...

Хранимые процедуры mssql server 2008
суть вопроса есть таблица log с полями id,Login,pass необходимо создать...

Увеличение длины индекса mssql 2008
Добрый день база на mssql 2008 r2 Возникла такая проблема , что не хватает...


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

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

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