Редактирование данных с помощью сторонней формы.

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

sereg_io
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.07.2009 (Вт) 12:31

Редактирование данных с помощью сторонней формы.

Сообщение sereg_io » 10.08.2009 (Пн) 15:09

Доброго всем времени суток!
Столкнулся с такой вот проблемой:

Есть форма в которой вставлен datagridview. Как сделать, чтобы при двойном клике на одной из записей,
открывалась другая форма, в которую заботливо перенесены данные из таблицы?

Я пытаюсь сначала узнать индекс выбранной ячейки, а затем у меня не получается присвоить значению ячейки записи новое...

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Редактирование данных с помощью сторонней формы.

Сообщение Денис » 11.08.2009 (Вт) 7:54

Запоминаешь позицию курсора в дата-контроле, открываешь новую форму, устанавливаешь фильтр на дата-контрол по номеру строки в которой курсор, читаешь значения полей, расставляешь в текстбоксы. Потом по кнопке "отмена" в диалоге просто закрываешь, а вот по кнопке "готово", производишь запись в дата-контрол.
Так ты сможешь реализовать выход из диалога без сохранения изменений.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

sereg_io
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.07.2009 (Вт) 12:31

Re: Редактирование данных с помощью сторонней формы.

Сообщение sereg_io » 11.08.2009 (Вт) 12:34

Вот записи-то у меня и не получается..
i = Me.TblDogovorsDataGridView.CurrentRow.Index 'Вот я узнал индекс выбранной строки.
www.Show() 'Вот я открыл форму для редактирования.
Кнопка ОК:
FrmDogovors.TblDogovorsDataGridView.Rows(i).Cells(0).Value = TextBox1.Text ' А вот я пытаюсь записать строку значение из текстбокса в ячейку в датагрид

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

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Редактирование данных с помощью сторонней формы.

Сообщение Денис » 11.08.2009 (Вт) 12:43

Эт конечно круто и здорово, что дата-грид позволяет редактировать ячейки и динамически обновлять данные в связанной таблице данных, но.
Если ты редактируешь записи таблицы БД с помощью отдельной формы, то правильный вариант - это делать с помощью команды на SQL. Тоесть работать не с гридом, а с подключенным к нему дата-контролом напрямую. А дата-грид просто обновить в конце транзакции.
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

sereg_io
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.07.2009 (Вт) 12:31

Re: Редактирование данных с помощью сторонней формы.

Сообщение sereg_io » 11.08.2009 (Вт) 16:25

Все, разобрался, спасибо за ответы. А вот если той же формой создавать новую запись, то если я сначала создам запись в datasete то ID ей присвоится или забъется нулем? То есть я хочу сначала создать пустую строку в первоначальной форме, потом запомнить ее ID и передать в другую форму как бы уже для редактирования, а потом если нажмется отмена, то удалить. Как лучше сделать?

krukovis84
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 108
Зарегистрирован: 04.08.2009 (Вт) 11:16
Откуда: Кочевник

Re: Редактирование данных с помощью сторонней формы.

Сообщение krukovis84 » 26.08.2009 (Ср) 11:02

sereg_io писал(а):Все, разобрался, спасибо за ответы. А вот если той же формой создавать новую запись, то если я сначала создам запись в datasete то ID ей присвоится или забъется нулем? То есть я хочу сначала создать пустую строку в первоначальной форме, потом запомнить ее ID и передать в другую форму как бы уже для редактирования, а потом если нажмется отмена, то удалить. Как лучше сделать?


Лучше сделать так:
1. На первоначальной форме создаешь процедуру открытия формы доб./ред. записи. Например, по нажатию кнопки "Добавить" у тебя будет открываться пустая форма для добавления а по нажатии кнопки "Редактироват" у тебя будет открываться форма, заполненная данными из нужного тебе места. И не забудь передать форме информацию о том что ты делаешь в данный момент редактируешь или добавляешь новую запись, это можно сделать создав на форме ред./доб. textbox, заполняющийся из поля ID-записи (например назовем его txtID, его нужно скрыть от глаз юзера (txtID.visible = false). Если он заполнен значит ты редактируешь запись, если он пустой значит добавляешь. Не используй для этого глобальне переменные - этот способ я проходил - плохой способ ).

2. Потом стандартными методами заполняешь или редактируешь записи и жмешь на кноку "Сохранить".
2.1. Если у тебя данные редактировались (а об этом тебе скажет заполненный txtID), то ты изменяешь данные в нужной тебе записи. Найти запись можно просто - фильтруешь свой рекордсет по ID записи, которую ты помнишь в txtID и просто переприсваиваешь данные полям записи.
2.2. Если добавляешь новую запись просто методом добавления добавляешь новую запись присваивая полям значения из формы ред./доб. записи.
3. Если нужно отменить редактирование - просто закрываешь форму без сохранения.

З.Ы. Всякие проверки данных на нужные тебе условия нужно добавлять перед сохранением. И лучше всего выделить проверки данных в отдельную функцию, да и процесс сохранения в общем то же - т.к. он сводиться к элементарному присваиванию данных полям записи и для сохранения и редактирования во многом совпадает, но есть небольшие отличия: в одном случае нужно искать запись и менять данные, в другом добавлять новую, а все что осталось - в отдельную функцию и нужно выделить. Но можно конечно и в общей процедуре все это прописать - но тогда кода будет заметно больше и это не очень красиво и путанно выглядит. Самому потом прочитать код будет очень сложно.

sereg_io
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 28.07.2009 (Вт) 12:31

Re: Редактирование данных с помощью сторонней формы.

Сообщение sereg_io » 28.08.2009 (Пт) 7:02

Вот это я понимаю - развернутый ответ! :o
Спасибо большое! Жаль что до понедельника полученную инфрмацию применить не удастся.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46

    TopList