Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534

Смена таблиц на одной форме

17.11.2022, 20:53. Показов 2282. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, подскажите, что требуется сделать для того чтобы на одной форме при выборе таблицы из listbox, в DGV отображалась эта таблица, затем другая и так далее?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.11.2022, 20:53
Ответы с готовыми решениями:

Смена panel в одной форме
Имеется форма. В ней по кнопке "Далее" нужно поменять содержимое формы. Думаю наложить panel один на один и чтобы кнопка меняла им...

Несколько таблиц на одной ленточной форме
Здравствуйте форумчане. Создал ленточную форму на основе таблицы "склад"(qwer), добавил туда поле "кол-во" из таблицы...

Два combo из разных таблиц в одной форме
Гуру! Помогите разобраться в форме делаю сомво и поля из 1 таблицы при выборе значения в комбо обновляются соответствующие поля в форме а...

29
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
17.11.2022, 23:19
Лучший ответ Сообщение было отмечено goodrogrammer как решение

Решение

goodrogrammer, так и в чем проблема?
C#
1
2
3
4
5
6
7
8
9
10
            string connectionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=usersdb;Integrated Security=True";
            string sql = $"SELECT * FROM {listBox1.SelectedItem}";
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
            }
при этом в dataGridView1 не нужно создавать столбцы, все подтянется автоматически
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
18.11.2022, 02:09  [ТС]
AndreyVorobey, Вроде все понятно, но снова у меня не получается, нечего не происходит

Добавлено через 42 секунды
AndreyVorobey, Есть готовый пример или видео в ютубе как это выглядит. Я просто в голове представляю как я хочу сделать, а то что хочу я, в Интернете так и не нашёл.

Добавлено через 3 минуты
AndreyVorobey, Я просто не хочу делать кучу форм, а сделать listbox и в нем написать названия таблиц, при щелчке чтобы они открывались.

Добавлено через 28 минут
AndreyVorobey, Можете написать вывод таблиц из combobox в dgv используя if, else if.

Добавлено через 8 минут
AndreyVorobey, Я сделал вот так, но в программе не появляются таблицы:
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
public partial class Group1 : Form
    {
        SqlConnection sqlConnection = new SqlConnection(@"Data Source=--------;Initial Catalog=DataBook;Integrated Security=true");
        SqlDataAdapter adapter = new SqlDataAdapter();
 
        DataBase dataBase = new DataBase();
        public Group1()
        {
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            SqlDataAdapter adapter = new SqlDataAdapter();
            DataTable table = new DataTable();
 
            if (comboBox1.Text == "predmet_db")
            {
                adapter = new SqlDataAdapter("select * from predmet_db", sqlConnection);
                adapter.Fill(table);
                table.Clear();
                adapter.Fill(table);
            }
 
            else if (comboBox1.Text == "predmet01")
            {
                adapter = new SqlDataAdapter("select * from predmet01", sqlConnection);
                adapter.Fill(table);
                table.Clear();
                adapter.Fill(table);
            }
        }
    }
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
18.11.2022, 07:46
Лучший ответ Сообщение было отмечено goodrogrammer как решение

Решение

goodrogrammer, сначала Вы пишите
Цитата Сообщение от goodrogrammer Посмотреть сообщение
а сделать listbox и в нем написать названия таблиц
сразу же дальше пишите
Цитата Сообщение от goodrogrammer Посмотреть сообщение
вывод таблиц из combobox
определитесь откуда хотите брать названия таблиц.
Цитата Сообщение от goodrogrammer Посмотреть сообщение
Я сделал вот так, но в программе не появляются таблицы:
ну а где они должны появиться? тем не менее, это громоздкая конструкция и ее не нужно использовать.
вот весь код формы с использованием элемента СomboBox, в котором хранятся названия таблиц:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public partial class Group1 : Form
    {
        SqlConnection sqlConnection = new SqlConnection(@"Data Source=--------;Initial Catalog=DataBook;Integrated Security=true");
        public Group1()
        {
            InitializeComponent();
            StartPosition = FormStartPosition.CenterScreen;
        }
 
        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string sql = $"SELECT * FROM {comboBox1.Text}";
            using (SqlConnection connection = new SqlConnection(sqlConnection))
            {
                connection.Open();
                SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
            }
        }
    }
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
18.11.2022, 20:06  [ТС]
AndreyVorobey, Выдает ошибку System.ArgumentException: "Формат строки инициализации не соответствует спецификации, начиная с индекса 0."

C#
1
2
3
4
5
6
7
8
9
string querystring = $"SELECT * FROM {comboBox1.Text}";
            using (SqlConnection connection = new SqlConnection(querystring))
            {
                connection.Open();
                SqlDataAdapter adapter = new SqlDataAdapter(querystring, dataBase.getConnection());
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                dataGridView1.DataSource = ds.Tables[0];
            }
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
19.11.2022, 08:50
Лучший ответ Сообщение было отмечено goodrogrammer как решение

Решение

goodrogrammer, Вы можете более информативно подходить к делу? В каком месте ошибка? Вбецте ее в гугл и посмотрите, как не решать. Зачем писать сразу сюда по любому чиху?
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
19.11.2022, 16:17  [ТС]
AndreyVorobey, Я набрался сил и решительно пошел делать, разобрался как что и где, и все заработало. Спасибо за код выше который Вы мне написали, немного его изменив у меня все заработало.

Добавлено через 34 минуты
AndreyVorobey, Остался еще один вопрос, а как сделать обновление данных в таблицах из combobox? Я как бы хочу редактировать в DGV прямо в таблице и после этого сохранять.
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
19.11.2022, 17:25
goodrogrammer,Это для примера.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
     //Перечисление столбцов
        string[] colName = new string [] { "Столбец1", "Столбец2" };
 
        //Событие происходит после завершение редактирование ячейки
        private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            //Получаем значение после завершение
            object value = dataGridView1[e.ColumnIndex, e.RowIndex].Value;
 
            //Проверяем тип столбца
            if(value.GetType().Name == "String")
                //Заворачиваем в кавычки
                value = $"'{value}'";
 
            //Отправляем на выполнение 
            string querystring = $"UPDATE {comboBox1.Text} SET { colName[e.ColumnIndex] }={value} WHERE ....=Уникальный ключ";
        }
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
19.11.2022, 17:39  [ТС]
Kazbek17, Не понимаю что требуется указать тут "....=Уникальный ключ"?
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
19.11.2022, 18:05
goodrogrammer, А что тут не понятного, вы каким образом должны говорить базе данных, чтобы она из кучи нашла вашу запись и вставила отредактированные данные? Для этого и существуют ключи.
Читаем
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
19.11.2022, 22:36  [ТС]
Kazbek17, Случайно не в курсе ли Вы, как работает вывод таблиц из combobox в dgv используя mysql?
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
19.11.2022, 22:44
Цитата Сообщение от goodrogrammer Посмотреть сообщение
как работает вывод таблиц из combobox в dgv используя mysql?
Так же как и в Sql. Только нужно использовать другой провайдер и строку подключения. А лучше сразу начните с
EntityFrameworkCore.MySql
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
19.11.2022, 23:22  [ТС]
AndreyVorobey, Весь измотался, как будет выглядеть вывод таблиц из combobox в dgv используя mysql?

Добавлено через 2 минуты
AndreyVorobey, Все хорошо, исправил

Добавлено через 34 минуты
Kazbek17, В чем может быть проблема используя эту команду GetConnection()? Говорит что не может преобразовать из "MySql.Data.MySqlClient.MySqlConnect ion" в "string".
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
19.11.2022, 23:40
goodrogrammer, Код в студию.
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
19.11.2022, 23:41  [ТС]
Kazbek17,
C#
1
2
3
4
5
6
7
8
9
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string selectQuery = $"SELECT * FROM {comboBox1.Text}";
            db.OpenConnection();
            SqlDataAdapter adapter = new SqlDataAdapter(selectQuery, db.GetConnection());
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];   
        }
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
19.11.2022, 23:55
goodrogrammer, Причем тут sql и mysql?
C#
1
2
3
4
5
6
7
8
string ConnString = "Строка подключения";
MySqlConnection connect = new MySqlConnection(ConnString);
connect.Open();
string selectQuery = $"SELECT * FROM {comboBox1.Text}";
MySqlDataAdapter adapter = new MySqlDataAdapter(selectQuery, connect);
DataTable table = new DataTable();
adapter.Fill(dt); 
dataGridView1.DataSource =  table;
1
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
20.11.2022, 18:20  [ТС]
Kazbek17, Заработало, сделал вот так:
C#
1
2
3
4
5
6
db.OpenConnection();
            string selectQuery = $"SELECT * FROM {comboBox1.Text}";
            MySqlDataAdapter adapter = new MySqlDataAdapter(selectQuery, db.GetConnection());
            DataSet ds = new DataSet();
            adapter.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
Добавлено через 29 минут
Kazbek17, Интересует еще кнопка обновления, у Вас выше написана строка где нужно перечислять названия столбцов, а если у меня в каждой таблице названия столбцов разные? Что делать в этом случае?
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
21.11.2022, 10:53
Цитата Сообщение от goodrogrammer Посмотреть сообщение
у Вас выше написана строка где нужно перечислять названия столбцов
Так это было сделано для редактирование.
0
40 / 44 / 1
Регистрация: 19.01.2021
Сообщений: 534
21.11.2022, 10:56  [ТС]
Kazbek17, Как сделать кнопку обновления, чтобы она обновляла любую выведенную таблицу из combobox?
0
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
21.11.2022, 11:10
goodrogrammer,Ну так я вам же показал как можно редактировать данные.
Если немного подумать?
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
    Dictionary<string, string[]> Tables = new Dictionary<string, string[]>()
    {
        { "Таблица1", new string[] { "Столбец 1.1", "Столбец 1.2" } }, 
        { "Таблица2", new string[] { "Столбец 2.1", "Столбец 2.2" } }
        //и.т.д.....
    };
    
 
    //Событие происходит после завершение редактирование ячейки
    private void DataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        //Перечисление столбцов
        string[] colName = new Tables[comboBox1.Text];
        
        //Получаем значение после завершение
        object value = dataGridView1[e.ColumnIndex, e.RowIndex].Value;
 
        //Проверяем тип столбца
        if (value.GetType().Name == "String")
            //Заворачиваем в кавычки
            value = $"'{value}'";
 
        //Отправляем на выполнение 
        string querystring = $"UPDATE {comboBox1.Text} SET { colName[e.ColumnIndex] }={value} WHERE ....=Уникальный ключ";
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2022, 11:10
Помогаю со студенческими работами здесь

Просмотр на одной форме из 5 таблиц на разных формах
День добрый. помогите, пожалуйста, немного туплю. суть такова: имеется бд состоящая из главной таблицы и 5 дополнительных, необходимо при...

Как написать условие на отображение в одной форме данных из отдельных таблиц?
Есть 5 таблиц: Таб1, Таб2 ... Таб5 (с подчин. таблицами). Все таблицы (подчиненные тоже) одинаковы по кол-ву и названию полей, формату...

Добавление данных в несколько связанных таблиц и просмотр этих данных на одной форме
Здравствуйте. Задача такая. Заполняю Персону, физическое лицо. таблица Персоны(п_код, наименованиеПолное, НаименованиеСокр, телефон,...

Смена типа таблиц (engine) таблиц по-умолчанию
Возможно ли сменить тип таблиц по умолчанию в mySQL? Если да, то как =) При создании таблицы он ее создает типом, который по умолчанию...

Выбрать из таблиц с повторяющимися записями те записи, которых нет в одной из таблиц
Есть две таблицы в которых некоторые записи повторяються, надо выбрать записи которых нет в одной из таблицы!!!! Спасибо за ранее!!!


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru