powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Почему не происходит изменений в базе?
18 сообщений из 18, страница 1 из 1
Почему не происходит изменений в базе?
    #32923619
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброй пятницы!
Чей то я не пойму.
Сделал в форме табличку настроил SqlDataAdapter. Хочу внести изменения в базу данных (добавить или обновить запись). Вношу новую запись в таблицу на форме, далее нажимаю на кнопку, которая выполняет
Код: plaintext
Me.SqlDataAdapter1.Update(Me.DsProvider1.Фото)
Лезу в базу, а там записей не появилось.
Пробую добавить запись снова в табличку, только посде добавления строки выделяю другую запись в этой же табличке. Снова обновляю, но на этот раз строчка появляется в базе. Получается после того как ввел строку нужно переместиться на другую, чтобы обновить или добавить запись в базу.
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923647
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.DLLПолучается после того как ввел строку нужно переместиться на другую, чтобы обновить или добавить запись в базу.достаточно завершить редактирование текущей записи (EndEdit/EndCurrentEdit).
при переходе на другую запись это делается автоматом.
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923649
mr_Andrey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
перед вызовом update для sqldataadapter попробуй завершить редактирование,чтоб строка получила статус измененной.
сделать это можно с помощью currencymanager.
просто update не находит в твоем dataset модифицированных строк.
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923688
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Dim crm As CurrencyManager = Me.BindingContext(Me.grdCar.DataSource, Me.grdCar.DataMember)
        crm.EndCurrentEdit()

        Try
            Me.SqlDataAdapter1.Update(Me.DsProvider1.Фото)
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End Try
После этого строчка добавилась в базу, но картинка нет. (я вставляю в ячейку таблицы фотографию)
Таблица имеет три поля, Код_фото (счетчик), Код_машины, Фото.
При загрузке формы делаю Для кода машины
Код: plaintext
fmPhotos_1.DsProvider1.Фото.Код_МашиныColumn.DefaultValue = KodCar
Получается добавляется новая строка например:
Код: plaintext
1.
2.
1_____10_____пусто
2_____10_____пусто
и т д 

А вот если перед сохранением переместиться на другую строчку, то изображение успешно попадает в базу.
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923763
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй для редактируемой записи вызвать EndEdit:
Код: plaintext
((DataRowView)crm.Current).Row.EndEdit();
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923800
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если и это не поможет, то можно попытаться обманом заставить внести все изменения в DataRow, что нибудь типа: crm.Position=crm.Position
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923814
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кузяпопробуй для редактируемой записи вызвать EndEdit:
Код: plaintext
((DataRowView)crm.Current).Row.EndEdit();


Попробовал
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim crm As CurrencyManager = Me.BindingContext(Me.grdCar.DataSource, Me.grdCar.DataMember)
        Dim row As DataRowView = CType(crm.Current, System.Data.DataRowView)
        ' и с crm.EndCurrentEdit() и без
       
        row.EndEdit()
        Try
            Me.SqlDataAdapter1.Update(Me.DsProvider1.Фото)
...
Запись добавляется в базу, но без изображения :(
Какая то туфта :/
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923815
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кузяесли и это не поможет, то можно попытаться обманом заставить внести все изменения в DataRow, что нибудь типа: crm.Position=crm.Position
Я об этом тоже уже думал, но как-то нехорошо получится. Выделение будет скакать по форме. Но, наверное, придется так делать.
А больше нет никаких уловок?
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923840
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще непосредственно на саму запись, а не на view для нее:
row.Row.EndEdit()
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923857
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой грид используешь ?
как у тебя прибиндена картинка к полю ?
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923897
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кузякакой грид используешь ?
как у тебя прибиндена картинка к полю ?
Он от Developer Express (XtraGrid), там чтобы вставить картинку в ячейку нужно по щелчку на этой ячейке указать путь к файлу. Все меня устраивает, но вот с сохранением какая-то байда.
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923940
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй - это их рекомендацияYou should call the editor's DoValidate method to force its value to be saved A data-bound editor's value is not saved when data is posted to a persistent database
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32923974
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне пришдось совсем немного поработать с их XtraGrid. но такую серьезную вещь они не могли пропустить. посмотри, возможно у самого грида есть методы для force внесения изменений в DataSet. по крайней мере, в их KB везде упоминается самый первый способ:

BindingContext[dataSet11, "YourDataTable"].EndCurrentEdit();

по внесению изменений в DataSet/DataTable
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32924007
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
посмотри еще:
How to Make Sure That All Modifications Are Saved

The XtraGrid does not immediately save an edit value to the linked dataset. The modified row is usually posted to the data object when focus is moved to another grid row. You can programmatically force the update by calling the UpdateCurrentRow method. In your case you should only call the CloseEditor and UpdateCurrentRow methods before updating the dataset via the DB adapter object.
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32924016
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок.
Разбираюсь.
Большое спасибо, что помогаете разобраться.
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32924082
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде сделал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 Dim view As DevExpress.XtraGrid.Views.Base.ColumnView
        view = Me.grdCar.KeyboardFocusView
        view.CloseEditor()
        view.UpdateCurrentRow()
        Me.GridView4.UpdateCurrentRow()

        BindingContext(Me.DsProvider1, "Фото").EndCurrentEdit()
            If Me.DsProvider1.HasChanges() Then
                Me.SqlDataAdapter1.Update(Me.DsProvider1.GetChanges())
            End If

Только какой во всем этом смысл не понятно
Код: plaintext
1.
2.
3.
4.
Dim view As DevExpress.XtraGrid.Views.Base.ColumnView
        view = Me.grdCar.KeyboardFocusView
        view.CloseEditor()
        view.UpdateCurrentRow()
        Me.GridView4.UpdateCurrentRow()
или
Код: plaintext
1.
2.
3.
        BindingContext(Me.DsProvider1, "Фото").EndCurrentEdit()
            If Me.DsProvider1.HasChanges() Then
                Me.SqlDataAdapter1.Update(Me.DsProvider1.GetChanges())
            End If
по отдельности не работают
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32924124
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у них, почему то, в примере всего одно UpdateCurrentRow() ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Base
Imports System.Data.Common
'...
Public Sub UpdateDatasource(ByVal grid As GridControl)
    'Save the latest changes to the bound DataTable
    Dim View As ColumnView = grid.KeyboardFocusView
    View.CloseEditor()
    If Not View.UpdateCurrentRow() Then Return

    'Update the database's Suppliers table to which oleDBDataAdapter1 is connected
    DoUpdateTable(oleDbDataAdapter1, dataSet11.Tables("Suppliers"))
    'Update the database's Products table to which the oleDbDataAdapter2 is connected
    DoUpdateTable(oleDbDataAdapter2, dataSet11.Tables("Products"))
End Sub

Public Sub DoUpdateTable(ByVal dataAdapter As DbDataAdapter, ByVal dataTable As System.Data.DataTable)
    Try
        dataAdapter.Update(dataTable)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub
...
Рейтинг: 0 / 0
Почему не происходит изменений в базе?
    #32924158
.DLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Видимо текущая строка обновляется
Код: plaintext
View.UpdateCurrentRow()
А остальные
Код: plaintext
dataAdapter.Update(dataTable)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Почему не происходит изменений в базе?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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