обновление записи таблицы Оракл

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

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

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

обновление записи таблицы Оракл

Сообщение Anta » 11.01.2013 (Пт) 2:50

Подскажите, каким образом можно проверить был ли изменен текст в texbox, прежде чем выполнить следующее действие?
Из dataset-> datatable вывожу данные в texbox _ы, пользователь может произвести изменение данных, и по нажатию на кнопку из texbox _ов я отправляю данные в datatable и затем уже обновляю запись в БД. Мне необходимо обновить строку таблицы в БД, если измение произошло хотя бы в одном из texbox _ов и выдать сообщение, что измение прошло успешно и не обновлять, если не было изменений и выдать сообщение, что обновление данных не произошло, так как текст в texbox не подвергся изменениям. Или кто-то предложит другую схему обновления записи в таблице? Вот код кнопки:
Код: Выделить всё
Private Sub Modifier_Click(sender As Object, e As EventArgs) Handles Modifier.Click
       
        Try
            ObjetDataRow = ObjetDataSet.Tables("LBPA_ETI_CARACT").Rows(RowNumber)

- заношу данные из texbox _ов в Table("LBPA_ETI_CARACT")
            ObjetDataRow("ETI_ID") = Me.TB_ID.Text
            ObjetDataRow("ETI_TAILLE") = Me.TB_TAILLE.Text
            ObjetDataRow("ETI_OFFSET") = Me.TB_OFFSET.Text
            ObjetDataRow("ETI_AVERTICAL") = Me.TB_AVERTICAL.Text
            ObjetDataRow("ETI_AHORIZONTAL") = Me.TB_AHORIZONTAL.Text
            ObjetDataRow("ETI_FR") = Me.TB_FR.Text
            ObjetDataRow("ETI_POLICE") = Me.TB_POLICE.Text
           

           ObjetCommandBuilder = New OleDbCommandBuilder(ObjetDataAdapter)

-- обновление данных в таблице БД
            ObjetDataAdapter.Update(ObjetDataSet, "LBPA_ETI_CARACT")

-- загружаю новые данные в ObjetDataSet.Tables("LBPA_ETI_CARACT")

           ObjetDataSet.Clear()

            ObjetDataAdapter.Fill(ObjetDataSet, "LBPA_ETI_CARACT")


            ObjetDataTable = ObjetDataSet.Tables("LBPA_ETI_CARACT")

        Catch ex As Exception
            MessageBox.Show( ex.message, "Сообщение об ошибке.", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

    End Sub

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: обновление записи таблицы Оракл

Сообщение FireFenix » 11.01.2013 (Пт) 3:26

Anta писал(а):Подскажите, каким образом можно проверить был ли изменен текст в texbox

Событие TextChange
WF -> http://msdn.microsoft.com/en-us/library ... anged.aspx
WPF -> http://msdn.microsoft.com/ru-ru/library ... anged.aspx
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.01.2013 (Пт) 7:43

FireFenix писал(а):Событие TextChange

Лучше сравнивать с исходными данными. Так обычно и делается, чтобы если изменено на начальное значение, update'а не было.

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: обновление записи таблицы Оракл

Сообщение Anta » 12.01.2013 (Сб) 22:26

Qwertiy писал(а):Лучше сравнивать с исходными данными. Так обычно и делается, чтобы если изменено на начальное значение, update'а не было.

Сраснивать с исходными данными ? В смысле сравнить данные texbox_ов с данными строки в таблице Table(DataSet)? На данный момент код (выше) не оптимален, так как в любом случае происходит update таблицы, не учитывая были ли изменены данные.
Если обрабатывать TextChange, то как установить взаимосвязь между нажатием на кнопку (выполнение кода выше) и событием TextChange для каждого контрола.
Или проверить (для всех контролов), если значение в ячейке (Table) не равно значению из texbox, то тогда поменяй значение в Table и затем данные в БД, если все значения равны, тогда обновления не совершать и выдать , к примеру, сообщение, что ни одно из значений не модифицированно и следовательно обновлять нечего... ?

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: обновление записи таблицы Оракл

Сообщение Anta » 12.01.2013 (Сб) 22:26

Qwertiy писал(а):Лучше сравнивать с исходными данными. Так обычно и делается, чтобы если изменено на начальное значение, update'а не было.

Сраснивать с исходными данными ? В смысле сравнить данные texbox_ов с данными строки в таблице Table(DataSet)? На данный момент код (выше) не оптимален, так как в любом случае происходит update таблицы, не учитывая были ли изменены данные.
Если обрабатывать TextChange, то как установить взаимосвязь между нажатием на кнопку (выполнение кода выше) и событием TextChange для каждого контрола.
Или проверить (для всех контролов), если значение в ячейке (Table) не равно значению из texbox, то тогда поменяй значение в Table и затем данные в БД, если все значения равны, тогда обновления не совершать и выдать , к примеру, сообщение, что ни одно из значений не модифицированно и следовательно обновлять нечего... ?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 12.01.2013 (Сб) 22:32

Anta писал(а):Сраснивать с исходными данными ? В смысле сравнить данные texbox_ов с данными строки в таблице Table(DataSet)?

В смысле есть оригинальные данные (но их ещё раз запрашивать не надо) и есть текущая копия. При сохраниении для каждой строки провереить, отличаются ли они и обновить только если отличаются.

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: обновление записи таблицы Оракл

Сообщение Anta » 13.01.2013 (Вс) 18:43

Qwertiy писал(а):В смысле есть оригинальные данные (но их ещё раз запрашивать не надо) и есть текущая копия. При сохраниении для каждой строки провереить, отличаются ли они и обновить только если отличаются.
Пользователь Ark упоминал, что нужно использовать DataViewRowState.ModifiedCurrent - достаёт модифицированные записи. DataViewRowState.CurrentRows - все текущие, и т.д Вот здесь http://msdn.microsoft.com/en-us/library/system.data.dataviewrowstate(v=vs.71).aspx пример,но не уверенна, что это именно то. Я пока не совсем понимаю, кроме существующей datatable необходимо создать dataview?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2013 (Вс) 20:51

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

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: обновление записи таблицы Оракл

Сообщение Anta » 15.01.2013 (Вт) 1:46

Спасибо)


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

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

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

    TopList