Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51

Добавление записи в DataGridView, расположенном на одной форме, через другую форму

09.05.2014, 16:23. Показов 4536. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть форма "Пациенты", на ней datagridview, данные в datagridview загружаются из таблицы БД, на форме есть кнопки: сохранить, удалить, добавить, все стандартно) При нажатии на кнопку "Добавить" появляется другая форма для добавления нового пациента. Пациента добавляю, форма редактирования закрывается, но новая запись появляется в 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
 public partial class Patient_form : Form
    {
        public Patient_form()
        {
            InitializeComponent();
        }
 
        //создаем подключение
        public SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Users\\Elena\\Desktop\\ГОСЫ и ДИПЛОМ\\07.04.2014\\DB1.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
        SqlCommand cmd = new SqlCommand();
 
        SqlDataAdapter da = new SqlDataAdapter();
        public DataSet ds1; 
        SqlCommandBuilder cb;
 
        private void Patient_form_Load(object sender, EventArgs e)
        {
            ds1= new DataSet();
            // открываем соединение
            con.Open();
            cmd = new SqlCommand("SELECT * FROM Patient", con);
            da = new SqlDataAdapter(cmd);
 
            // заполняем Dataset адаптером
            da.Fill(ds1, "Patient");
            dataGridView1.DataSource = ds1;
            dataGridView1.DataMember = "Patient";
 
            //присваиваем заголовки столбцам DataGridView
            dataGridView1.Columns[0].HeaderText = "Номер";
            dataGridView1.Columns[1].HeaderText = "Фамилия";
            dataGridView1.Columns[2].HeaderText = "Имя";
            dataGridView1.Columns[3].HeaderText = "Отчество";
            dataGridView1.Columns[4].HeaderText = "Дата рождения";
 
            //задаем ширину столбцов
            dataGridView1.Columns[0].Width = 80;
            dataGridView1.Columns[1].Width = 140;
            dataGridView1.Columns[2].Width = 140;
            dataGridView1.Columns[3].Width = 160;
            dataGridView1.Columns[4].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
 
            
 
            // делаем первый столбец DataGridView дрстпным только для чтения
            dataGridView1.Columns[0].ReadOnly = true;
 
            //делаем привязки
            textBox1.DataBindings.Add("Text", ds1, "Patient.ID_patient");
            textBox2.DataBindings.Add("Text", ds1, "Patient.SurName");
            textBox3.DataBindings.Add("Text", ds1, "Patient.Name");
            textBox4.DataBindings.Add("Text", ds1, "Patient.PatronymicName");
            dateTimePicker1.DataBindings.Add("Text", ds1, "Patient.Date_of_birth" );
            
            
            cb = new SqlCommandBuilder(da);
            con.Close();
        }
 
        //открытие формы на добавление нового пациента
        private void button2_Click(object sender, EventArgs e)
        {
            Patient_add_form patientaddfrm = new Patient_add_form();
            patientaddfrm.Show();
        } }

Код формы добавления нового пациента:

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
private void Patient_add_form_Load(object sender, EventArgs e)
        {
            
 
           con.Open();
           cmd = new SqlCommand("SELECT * FROM Patient", con);
           da = new SqlDataAdapter(cmd);
 
            // заполняем Dataset адаптером
            da.Fill(ds1, "Patient");
            con.Close();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text !="" && textBox4.Text !="" && dateTimePicker1.Value !=null)
            {
 
                con.Open();
                SqlCommand cmd = new SqlCommand("INSERT INTO Patient (ID_patient, SurName, Name, PatronymicName, Date_of_birth) VALUES (@Id, @SurName, @Name, @Pat, @Date)", con);
                cmd.Parameters.AddWithValue("@Id", textBox1.Text);
                cmd.Parameters.AddWithValue("@SurName", textBox2.Text);
                cmd.Parameters.AddWithValue("@Name", textBox3.Text);
                cmd.Parameters.AddWithValue("@Pat", textBox4.Text);
                cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Value);
 
                cmd.ExecuteNonQuery();
                da.Update(ds1, "Patient");
                ds1.AcceptChanges();
                con.Close();
 
 
                this.Close();
            }
            else
            {
                MessageBox.Show("Ошибка! Поля не заполнены!");
            }
        }
Миниатюры
Добавление записи в DataGridView, расположенном на одной форме, через другую форму  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.05.2014, 16:23
Ответы с готовыми решениями:

Добавление новой записи через другую форму без grid
Вообщем, дошла до этого момента и пока не получается сдвинуться. Работаю в 6-м фоксе. Существует много форм. В одной из форм пусть form1...

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

При нажатии на одной из записи в первом DataGridView открыть новую форму с другим DataGridView
Здравствуйте,форумчане. Нужна Ваша помощь.Суть такова... у меня есть форма с DataGridView(список товаров) и есть вторая форма с др...

4
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
09.05.2014, 17:17
У тебя неверный подход. Ты второй формой вносишь изменения сразу в БД и, естественно, ранее считанный набор данных первой формы ничего об этом не знает. Надо добавлять введённую информацию в имеющийся набор и потом давать команду сохранения из первой формы, когда диалог закроется.
1
 Аватар для FedorF
56 / 1 / 1
Регистрация: 11.06.2012
Сообщений: 51
09.05.2014, 17:57  [ТС]
Попробовала сделать так:

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
public partial class Patient_add_form : Form
    {
 
        
 
        public Patient_add_form()
        {
            InitializeComponent();
            
        }
 
 
        Patient_form patfrm;
 
       // добавление новой записи
       private void button1_Click(object sender, EventArgs e)
        {
            
            if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text !="" && textBox4.Text !="" && dateTimePicker1.Value !=null)
            {
 
               patfrm.con.Open();
                SqlCommand cmd = new SqlCommand("INSERT INTO Patient (ID_patient, SurName, Name, PatronymicName, Date_of_birth) VALUES (@Id, @SurName, @Name, @Pat, @Date)", patfrm.con);
                cmd.Parameters.AddWithValue("@Id", textBox1.Text);
                cmd.Parameters.AddWithValue("@SurName", textBox2.Text);
                cmd.Parameters.AddWithValue("@Name", textBox3.Text);
                cmd.Parameters.AddWithValue("@Pat", textBox4.Text);
                cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Value);
 
                cmd.ExecuteNonQuery();
                patfrm.da.Update(patfrm.ds1, "Patient");
                patfrm.ds1.AcceptChanges();
                patfrm.con.Close();
 
 
                this.Close();
            }
            else
            {
                MessageBox.Show("Ошибка! Поля не заполнены!");
            }
        }
nmcf, вы это имели в виду?

Цитата Сообщение от nmcf Посмотреть сообщение
потом давать команду сохранения из первой формы, когда диалог закроется
Можете, пожалуйста, пояснить, как это?

Добавлено через 7 минут
Кажется поняла, сейчас попробую)
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
09.05.2014, 17:59
Я тебе в ЛС написал.
0
42 / 15 / 1
Регистрация: 06.12.2019
Сообщений: 429
20.06.2020, 20:10
FedorF, Скинь проект пожалуйста )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.06.2020, 20:10
Помогаю со студенческими работами здесь

Добавление одной формы в другую форму
Добрый день! Есть некая библиотека, которая получает данные по COM порту и выводит их в свою форму. Сейчас стоит задача внедрить эту...

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

Вытянуть из базы некоторые столбцы на одной форме, и скопировать их в другую форму
помогите пожалуйста) необходимо вытянуть из базы некоторые столбци на одной форме , и скопировать их в другую форму

По нажатии кнопке в форме frm надо записать данные в DataGridView, расположенном на Form1
Есть 2 формы - Form1 и Form2 При запуске программы: Application.Run(new Form1()); В ходе работы создаю объект: Form2 frm...

Поиск в форме через другую форму
Прошу подсказать мне каким образом можно реализовать задачу: Есть форма(Форма0) поиска с двумя полями. При вводе в первое поле...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru