powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обновление записи в БД \ не работает код
14 сообщений из 14, страница 1 из 1
Обновление записи в БД \ не работает код
    #38906073
majhool001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
При обновлении данных записи в Access встретился со следующей проблемой.
Подскажите,как решить:

Когда редактирую значения разных полей у записи напрямую через датагрид,расположенный на форме, данные сохраняются нормально. Использую этот код.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
        Using myConn As New OleDbConnection("Provider=Microsoft.ACE.oledb.12.0; Data source=" + bpath)
            myConn.Open()
            Dim myCmd As New OleDbCommand("UPDATE [Users] SET [LastName] = @LastName, [FirstName] = @FirstName,[MiddleName] = @MiddleName,[Dep] = @Dep,[Post] = @Post,[UserType] = @UserType,[BasPwd] = @BasPwd,[TabNum] = @TabNum1 WHERE [TabNum] = @TabNum2", myConn)
            myCmd.Parameters.Add("@LastName", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(1).Value
            myCmd.Parameters.Add("@FirstName", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(2).Value
            myCmd.Parameters.Add("@MiddleName", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(3).Value
            myCmd.Parameters.Add("@Dep", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(4).Value
            myCmd.Parameters.Add("@Post", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(5).Value
            myCmd.Parameters.Add("@UserType", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(6).Value
            myCmd.Parameters.Add("@BasPwd", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(7).Value
            myCmd.Parameters.Add("@TabNum1", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(0).Value
            myCmd.Parameters.Add("@TabNum2", OleDbType.WChar).Value = DataGridView1.Rows(e.RowIndex).Cells(0).Value
            myCmd.ExecuteNonQuery()
            myConn.Close()
        End Using



Когда редактирую через форму
(Туда в текстбоксы и кобомбоксы загружаются значения которые указаны в записи с возможностью их изменить) и нажимаю сохранить, появляется сообщение что данные обновлены, но ничего не изменяется.

Код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Using myConn As New OleDbConnection("Provider=Microsoft.ACE.oledb.12.0; Data source=" + bpath)
                Dim myCmd As New OleDbCommand("UPDATE [Users] SET [LastName] = @LastName,[BasPwd] = @Parol, [FirstName] = @FirstName,[MiddleName] = @MiddleName,[Dep] = @Dep,[Post] = @Post,[UserType] = @UserType,[TabNum] = @TabNum1 WHERE [TabNum] = @TabNum2", myConn)
                myCmd.Parameters.Add("@LastName", OleDbType.WChar).Value = TextBox2.Text
                myCmd.Parameters.Add("@FirstName", OleDbType.WChar).Value = TextBox3.Text
                myCmd.Parameters.Add("@MiddleName", OleDbType.WChar).Value = TextBox4.Text
                myCmd.Parameters.Add("@Dep", OleDbType.WChar).Value = ComboBox1.SelectedItem
                myCmd.Parameters.Add("@Post", OleDbType.WChar).Value = ComboBox2.SelectedItem
                myCmd.Parameters.Add("@UserType", OleDbType.WChar).Value = ComboBox3.SelectedItem
                myCmd.Parameters.Add("@TabNum1", OleDbType.WChar).Value = TextBox1.Text
                myCmd.Parameters.Add("@TabNum2", OleDbType.WChar).Value = usadm.DataGridView1.CurrentRow.Cells(0).Value
                myCmd.Parameters.Add("@Parol", OleDbType.WChar).Value = TextBox6.Text
                myConn.Open()
                myCmd.ExecuteNonQuery()
                myConn.Close()
            End Using
            MessageBox.Show("Данные успешно обновлены!", _
                           "Обновление данных", MessageBoxButtons.OK, MessageBoxIcon.Information)
            usadm.ИзменитьToolStripMenuItem.Enabled = True
            usadm.СохранитьToolStripMenuItem.Enabled = False
            usadm.DataGridView1.ReadOnly = True
            Me.Close()
            usadm.Show()
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906096
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
majhool001,
А изменить код на
Код: c#
1.
int rowsAffected = myCmd.ExecuteNonQuery();


и посмотреть что в rowsAffected? Если 0 - значит ничего вправду не поменялось в таблице.
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906325
majhool001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron,

Возвращает 0.
Но сообщение о том, что данные обновлены выдает.
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906327
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если возвращает 0, значит не было выполнено ни операции Insert, ни Update, ни Delete. Теперь можно сосредоточиться на коде, который вызывает операцию (параметры).
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906331
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что в первом случае ExecuteNonQuery тоже возвращает 0?
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906337
majhool001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron,

В первом случае возвращает 1, во втором 0.
Хотя метод использую одинаковый.
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906339
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем, Вангую, что фигня в этой строчке с левым значением какая-то...
Код: c#
1.
myCmd.Parameters.Add("@TabNum2", OleDbType.WChar).Value = usadm.DataGridView1.CurrentRow.Cells(0).Value
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906341
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
majhool001Axeleron,

В первом случае возвращает 1, во втором 0.
Хотя метод использую одинаковый.
Ну это я и так уже понял, просто показать хотел наглядно как ExecuteNonQuery работает, когда коректно выполняется.
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906347
majhool001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron,

Сейчас проверил,значение возвращает правильно
Код: vbnet
1.
myCmd.Parameters.Add("@TabNum2", OleDbType.WChar).Value = usadm.DataGridView1.CurrentRow.Cells(0).Value
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906351
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще-то...
Код: c#
1.
2.
3.
ComboBox1.SelectedValue.ToString();
ComboBox2.SelectedValue.ToString();
ComboBox3.SelectedValue.ToString();


либо (в зависимости от binding)
Код: c#
1.
2.
3.
ComboBox1.SelectedText;
ComboBox2.SelectedText;
ComboBox3.SelectedText;
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906884
majhool001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron,

Проблема решена.
Спасибо
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38906888
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
majhool001,

Так в комбобоксах было дело? :)
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38907285
majhool001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron,

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

Dim myCmd As New OleDbCommand("UPDATE [Users] SET [LastName] = @LastName, [FirstName] = @FirstName,[MiddleName] = @MiddleName,[Dep] = @Dep,[Post] = @Post,[UserType] = @UserType,[BasPwd] = @BasPwd,[TabNum] = @TabNum1 WHERE [TabNum] = @TabNum2", myConn)

Такой и порядок должен быть в myCmd.Parameters.Add...

Если порядок не соблюдается то соответственно обновлено ничего не будет
...
Рейтинг: 0 / 0
Обновление записи в БД \ не работает код
    #38907393
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
majhool001, это да. Этот провайдер не поддерживает именованных параметров...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Обновление записи в БД \ не работает код
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]