Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
YarQaaaa
4 / 4 / 1
Регистрация: 12.11.2014
Сообщений: 60
Завершенные тесты: 2
1

Сохранение изменений сделанных программно в datagridview который связан с бд Access

27.05.2016, 20:26. Просмотров 797. Ответов 8
Метки нет (Все метки)

В общем, у меня есть датагрид связанный через выбор источника данных, и он полностью заблокирован для пользователя, в программе меняется значение одной из ячеек датагрида, и при попытке сохранить изменения в бд с помощью
C#
1
mainTableAdapter.Update(prodDataSet);
ничего не происходит, пытался так же программно добавлять строки в датагрид но ловил ошибку, можете подсказать как тогда правильно изменять значения ячеек чтобы они и в базу сохранялись?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2016, 20:26
Ответы с готовыми решениями:

Сохранение изменений из DataGridView в бд access
Добрый вечер, уважаемый форум. Я пишу программу WinForms, работающую с одним файлом accdb, в...

Сохранение изменений, сделанных в DGV, в БД
Здравствуйте! Я создал проектик который загружает базу данных в DataGridView и есть такая...

Сохранение изменений в dataGridView
db = new DataClasses1DataContext(); dataGridViewClientSet.DataSource = db.Clients; private void...

сохранение изменений dataGridView
Добрый день, закидывают в датагрид таблицы таким способом(в комбобоксе имя таблицы) ...

Сохранение изменений в DataGridView
здравствуйте! у меня проблема с DataGridView я немогу сохорнить то што я редактировал в...

8
Igr_ok
418 / 390 / 185
Регистрация: 04.08.2015
Сообщений: 1,072
27.05.2016, 20:44 2
Есть данные. Есть грид, который отображает эти данные и позволяет их изменять. Т.к. редактирование в гриде вы запретили, сделанные изменения не передаются в источник данных. Отсюда вывод - нужно вносить изменения непосредственно в источник данных.
0
YarQaaaa
4 / 4 / 1
Регистрация: 12.11.2014
Сообщений: 60
Завершенные тесты: 2
27.05.2016, 21:22  [ТС] 3
А как это сделать, не подскажете?
0
Igr_ok
418 / 390 / 185
Регистрация: 04.08.2015
Сообщений: 1,072
27.05.2016, 22:28 4
Подскажу, если увижу ваш код.
0
YarQaaaa
4 / 4 / 1
Регистрация: 12.11.2014
Сообщений: 60
Завершенные тесты: 2
28.05.2016, 07:53  [ТС] 5
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using System;
using System.Linq;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;
using System.Data;
 
namespace ZAMOVNIK
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Delete)
            {
                this.Close();
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 1)//если выделена одна строка
                //start if case selectedrows
            {
                     Regex reg = new Regex(@"^[А-Я][а-я]+ [А-Я].[А-Я].$");//проверка на ФИО в формате "Козак Я.С."
                     Match mt = reg.Match(FIO.Text);
                     if (mt.Success == true)
                         //start if FIO
                     {
                             reg = new Regex(@"^[+]380[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$");//проверка на моб телефон
                             mt = reg.Match(PHONE.Text);
                             if (mt.Success == true)
                             //start if PHONE
                             {
                                         reg = new Regex(@".+@.+");//проверка на мейл
                                         mt = reg.Match(MAIL.Text);
                                         if (mt.Success == true)
                                         //start if MAIL
                                         {
                                             bool err = false;
                                             try
                                             {
                                                 Convert.ToInt32(COUNT.Text);
                                             }
                                             catch
                                             {
                                                 MessageBox.Show("Некорректное количество!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                                 err = true;
                                             }
                                             if (Convert.ToInt32(COUNT.Text) != 0)
                                             {
                                                 if (err == false)
                                                 {
                                                     if (Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[2].Value) >= Convert.ToInt32(COUNT.Text))
                                                     {
                                                         if (dateTimePicker1.Value.Date > DateTime.Now)
                                                         {
                                                             //прошли все проверки, подготовка к финальной стадии
                                                             var rez = MessageBox.Show(String.Format("Подтверждаете оформления заказа с такими данными?\nФИО:{0}\nТелефон:{1}\nE-mail:{2}\nКоличество:{3}кг\nЦена заказа:{4}грн", FIO.Text, PHONE.Text, MAIL.Text, COUNT.Text, (Convert.ToDouble(COUNT.Text) * Convert.ToDouble(dataGridView1.SelectedRows[0].Cells[3].Value))), "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                                                             if (rez == DialogResult.Yes)
                                                             {
                                                                 //start save
                                                                 //{
                                                                      //здесь должно быть добавление записи в другую бд
                                                                 //}//end save
                                                                 dataGridView1.SelectedRows[0].Cells[2].Value = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[2].Value) - Convert.ToInt32(COUNT.Text);
                                                                 if ((int)dataGridView1.SelectedRows[0].Cells[2].Value == 0)
                                                                 {
                                                                     dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[0].Index);
                                                                 }
 
                                                                 //start upd Продукция
                                                                 {
                                                                     //здесь должно быть сохранение изменений из дата грида
                                                                 }//end upd Продукция
                                                                 FIO.Text = "Петров И.И.";
                                                                 PHONE.Text = "+380667234185";
                                                                 MAIL.Text = "example@gmail.com";
                                                                 COUNT.Text = "10";
                                                                 dateTimePicker1.Value = DateTime.Now;//сбрасываем поля в начальные значения
                                                             }
                                                             else
                                                             {
                                                                 FIO.Text = "Петров И.И.";
                                                                 PHONE.Text = "+380667234185";
                                                                 MAIL.Text = "example@gmail.com";
                                                                 COUNT.Text = "10";
                                                                 dateTimePicker1.Value = DateTime.Now;
                                                             }//если мы отменили, то просто сбрасываем все поля в стандартные значения
                                                         }//end date check
                                                         else
                                                         {
                                                             MessageBox.Show("Дата выполнения заказа не может быть сегодня или прошлые дни!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                                         }
                                                     }
                                                     else
                                                     {
                                                         MessageBox.Show(String.Format("Введенное количество больше доступного({0}<{1})!", dataGridView1.SelectedRows[0].Cells[2].Value, COUNT.Text), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                                     }
                                                 }
                                             }
                                             else
                                             {
                                                 MessageBox.Show("Количество не можеть быть 0!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                             }
                                         }//end if MAIL
                                         else
                                         {
                                             MessageBox.Show("E-mail введен некорректно!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                                         }
                             }//end if PHONE
                             else
                             {
                                 MessageBox.Show("Телефон был введен некорректно!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                             }
                     }//конец блока иф ФИО корректное
                     else
                     {//start if FIO
                         MessageBox.Show("ФИО было введенно некорректно!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     }//end if FIO
            }//end if case selectedrows
            else
                //start else case selectedrows
            {
                MessageBox.Show("Надо выделить одну строку в таблице!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }//end else case selected rows
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            this.mainTableAdapter.Fill(this.prodDataSet.main);
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'prodDataSet.main' table. You can move, or remove it, as needed.
            this.mainTableAdapter.Fill(this.prodDataSet.main);
 
        }
    }
}
Вот мой код, заранее извините за то как он написан
0
Igr_ok
418 / 390 / 185
Регистрация: 04.08.2015
Сообщений: 1,072
28.05.2016, 09:42 6
Как получить текущую DataRow
C#
1
2
DataRowView currentDataRowView = (DataRowView)dataGridView1.CurrentRow.DataBoundItem;
DataRow row = currentDataRowView.Row;
Предположим, что название редактируемого поля Qty. Тогда код будет выглядеть так:
C#
1
2
3
4
row["Qty"] = Convert.ToInt32(row["Qty"]) - Convert.ToInt32(COUNT.Text);
mainTableAdapter.Update(prodDataSet);
//обновить таблицу
mainTableAdapter.Fill(prodDataSet);
Чтобы в таблице не выводились записи с Qty, равным 0, добавьте в Select запрос условие
SQL
1
...where Qty>0
0
YarQaaaa
4 / 4 / 1
Регистрация: 12.11.2014
Сообщений: 60
Завершенные тесты: 2
28.05.2016, 12:38  [ТС] 7
В общем вставил то что вы написали, только "Qty" поменял на свое "Количество", и получаю вот эту ошибку(см. скрин)
0
Миниатюры
Сохранение изменений сделанных программно в datagridview который связан с бд Access  
YarQaaaa
4 / 4 / 1
Регистрация: 12.11.2014
Сообщений: 60
Завершенные тесты: 2
28.05.2016, 14:26  [ТС] 8
А, всё, это я поправил, из-за того что у меня не было первичного ключа в таблице не сгенерировались комманды Update и Delete, у меня теперь другой вопрос, а как из этой же программы дописать строку в другую бд которая в данный момент не подключена к программе?
0
Igr_ok
418 / 390 / 185
Регистрация: 04.08.2015
Сообщений: 1,072
29.05.2016, 17:53 9
Цитата Сообщение от YarQaaaa Посмотреть сообщение
а как из этой же программы дописать строку в другую бд которая в данный момент не подключена к программе?
Всё будет работать по тем же принципам, только у вас будет не один Connection, а два.
0
29.05.2016, 17:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2016, 17:53

Сохранение изменений в бд через DataGridView
Прошу помощи в написании кода. Создаю интерфейс для базы данных ms sql. База подключена через...

Linq Сохранение изменений в dataGridView
Как сделать, чтоб сохранялись изменения в dataGridView? db = new DataClasses1DataContext(str);...

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


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

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

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