С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для King_of_Arthur
1 / 1 / 5
Регистрация: 25.04.2013
Сообщений: 165

Сохранение внесенного значения в DVG

20.03.2014, 07:15. Показов 929. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте у меня есть таблица которая заполняется sql запросом, у этой таблицы есть пустое поле в которое нажатием клавиши мыши добавляется + и производится занесение некоторых данных.
У меня вопрос как сделать чтоб + сохранялись и при повторном открытии таблицы они отображались
Вот код добавления в ячейку +
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
        private void LechNaz_Load(object sender, EventArgs e)
        {
            dataGridView.CellMouseClick += new DataGridViewCellMouseEventHandler(dataGridView_CellMouseClick);  
        }
 
        // ставим плюсики
        void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (e.RowIndex >= 0)//это чтоб при нажатии на заголовок все нормально было
            {
                dataGridView["Column10", e.RowIndex].Style.Font = new Font("Tahoma", 12, FontStyle.Bold);
                dataGridView["Column10", e.RowIndex].Style.ForeColor = Color.Fuchsia;
                dataGridView["Column10", e.RowIndex].Style.Alignment = DataGridViewContentAlignment.BottomCenter;
                if (e.ColumnIndex == 0)//это чтоб при нажатии на ячейки других столбцов все нормально было
                {
                    if (dataGridView["Column10", e.RowIndex].Value == null)
                    {
                        dataGridView["Column10", e.RowIndex].Value = "+";
                        var connectionString = ConfigurationManager.ConnectionStrings["PLOT"].ConnectionString;
                        FbConnection connection = new FbConnection(connectionString);
                        connection.Open();
                        FbCommand comm = connection.CreateCommand();
                        comm.CommandText = "RS_MED";
                        comm.CommandType = CommandType.StoredProcedure;
                        comm.Parameters.Add("ID", FbDbType.Integer).Direction = ParameterDirection.Output;
                        comm.ExecuteNonQuery();
                        int ID = (int)(comm.Parameters["ID"].Value);
                        int Kolr = int.Parse(Kolp) * int.Parse(Doz);
                        FbDataAdapter da = new FbDataAdapter();
                        DataTable dt = new DataTable("Update");
                        da.UpdateCommand = new FbCommand();
                        da.UpdateCommand.CommandText = "Update MED_RS set otd=@OTD,DT=@Dt,KOLR=@Kolp,FIN=@Fin,UID=@Uid,price=@price where UIM=@Uim";
                        da.UpdateCommand.CommandType = CommandType.Text;
                        da.UpdateCommand.Parameters.Add("@Kolp", SqlDbType.Float).Value = Kolr;
                        da.UpdateCommand.Parameters.Add("@Fin", SqlDbType.Int).Value = int.Parse(Fin);
                        da.UpdateCommand.Parameters.Add("@Dt", SqlDbType.DateTime).Value = Dt;
                        da.UpdateCommand.Parameters.Add("@Otd", SqlDbType.Int).Value = int.Parse(Otd);
                        da.UpdateCommand.Parameters.Add("@Uim", SqlDbType.Int).Value = int.Parse(Uim);
                        da.UpdateCommand.Parameters.Add("@Uid", SqlDbType.Int).Value = int.Parse(Uid);
                        da.UpdateCommand.Parameters.Add("@price", SqlDbType.Float).Value = float.Parse(price); 
                        da.UpdateCommand.Connection = connection;
                        da.UpdateCommand.ExecuteNonQuery();
                        connection.Close();
                    }
                    else
                    {
                        dataGridView["Column10", e.RowIndex].Value = null;
                    }
                }
                if (dataGridView["Column10", e.RowIndex].Value == null)
                {
                }
            }
        }
Заранее спасибо всем)))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2014, 07:15
Ответы с готовыми решениями:

Импорт из Excel в DVG и сохранение в SQL
Импортирую из Excel в DVG следующим образом: private void button2_Click(object sender, EventArgs e) { if...

Настройка IP телевидения на DVG-5402SP
Всем привет! В общем устал уже звонить в этот ростелеком, ничего толком не знают. Помогите настроить на маршрутизаторе DVG-5402SP,...

Возня с DVG 6008S Dlink
Доброго вам времени суток, товарищи. Мне на тестирование прислали железо DVG 6008S и DVG 5112S. Суть задачи в том чтобы создать...

4
 Аватар для dimsaratov
356 / 295 / 78
Регистрация: 02.10.2013
Сообщений: 476
Записей в блоге: 5
22.03.2014, 10:08
Не совсем верная логика работы DGV предназначен для отображения и ввода данных в DataTable и поэтому все операции по обновлению базы данных нужно производить над DT
Любые действия между БД—DGV нужно производить по алгоритму:
1 определяем DataAdapter
2 формируем в DA процедуры Выборки(SelectCommand)
Вставки(InsertCommand)
Обновления(UpdateCommmand)
Удаления(DeleteCommand)
3 Определяем таблицу DataTable
4 Заполняем таблицу из БД
DataAdapter.Fill(DataTable)
5 Привязываем таблицу к DataGridView
DGV.DataSource=DataTable
После всего этого спокойно работаем с(в) DGV который самостоятельно обновляет все нужные строки и столбцы DT
когда мы наработались выполняем команду сохранить изменения
DataAdapter.Update(DataTable)
0
 Аватар для King_of_Arthur
1 / 1 / 5
Регистрация: 25.04.2013
Сообщений: 165
24.03.2014, 10:53  [ТС]
А как мне быть с + его в бд не надо заносить

Добавлено через 13 часов 16 минут
или как сделать я например делаю проверку если поле в БД не пустое то в dataGridView ставим +
у меня есть пример на делфи а как в C# я не знаю
Delphi
1
2
3
4
if KolR <> 0 then begin
          OSGrid1.Cells[10, i]:=MsTag;
          OSGrid1.CellFont[10, i]:=Label19.Font;  // +
       end;
0
 Аватар для King_of_Arthur
1 / 1 / 5
Регистрация: 25.04.2013
Сообщений: 165
07.08.2014, 07:43  [ТС]
сделала
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int i = -1;//для номера строки таблицы 
                    
                        while (fdr.Read())
                        { 
                            i++;
                        Kolp = Convert.ToString(fdr["KOLP"]);
                        Fin = Convert.ToString(fdr["FIN"]);
                        Dt = Convert.ToString(fdr["DT"]);
                        Otd = Convert.ToString(fdr["OTD"]);
                        Uid = Convert.ToString(fdr["Uid"]);
                        Doz = Convert.ToString(fdr["DOZ"]);
                        Uil = Convert.ToString(fdr["UIL"]);
                        Uim = Convert.ToString(fdr["UIM"]);
                        Kol = Convert.ToInt32(fdr["KOLR"]);
 
                        if (Kol != 0)
                        {
                            dataGridView.Rows[i].Cells["Column10"].Value = "+";
                        }
                    }
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
07.08.2014, 16:07
King_of_Arthur, тут два решения:
1) используйте не DataGridViewTextBoxColumn, а DataGridViewCheckBoxColumn
(в конструкторе формы правка столбцов в контекстном меню DataGridView и указываем DataPropertyName для привязки данных)
2) если действительно нужен только "+", то создаем обработчик события CellFormating:
if(e.RowIndex>=0 && e.ColumnIndex==0)
{
dataGridView[e.ColumnIndex, e.RowIndex].Value = "+";
}
3)во-первых столь часто обращаться к БД нет необходимости, к тому же человек может просто не на ту ячейку тыкнул, а вы сразу обновляете данные.
во-вторых вы создаете адаптер, когда нужна FbCommand

вам следует добавить кнопку сохранить и в ней создать нормальный адаптер и командой adapter.Update(DataTableobject) сохранять сразу все изменения.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.08.2014, 16:07
Помогаю со студенческими работами здесь

Шлюз dvg-7111s выход в город
Здравствуйте, имею шлюз g-link dvg-7111s, к которому подключена линия от городской аналоговой АТС, которая не поддерживает DTMF. В...

d-link dvg-5402sp объясните по настройке Вайфая
Добрый день у меня возникла сложность по настройки D-linka dvg-5402sp сложность в том что я включаю вайфай настраиваю и возникает - мега...

Как взять значение выделенного столбца/ячейки из dvg?
У меня есть заполненная dgv , при нажатии на ячейку она выделяется, как вывести весь столбец в котором эта ячейка в textbox? И как...

Во втором DVG отображать услуги по сделке, выбранной в первом
Здравствуйте. В одном DVG отображаются выполненные сделки, в другом DVG услуги предоставленные по каждой сделке. Как сделать так что...

Сохранение значения
Добрый день! Есть следующий код: &lt;button id='delrow'&gt;Удалить строку&lt;/button&gt; &lt;button id='delcell'&gt;Удалить столбец&lt;/button&gt; ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru