Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Опять про DataGridView - Visual Basic .NET  [new]
Wurgengel
Member

Откуда:
Сообщений: 7
Есть функция обновления, которая обновляет данные по текущему состоянию DataGridView:
Private Sub updateAuthor(rev As Boolean)
        Me.Validate()
        Me.AuthorBindingSource.EndEdit()
 
        Dim deleteAuthors As СправочникppДанныеDataSet.AuthorDataTable = CType(
            СправочникppДанныеDataSet.Author.GetChanges(Data.DataRowState.Deleted), 
            СправочникppДанныеDataSet.AuthorDataTable)
 
        Dim newAuthors As СправочникppДанныеDataSet.AuthorDataTable = CType(
            СправочникppДанныеDataSet.Author.GetChanges(Data.DataRowState.Added), 
            СправочникppДанныеDataSet.AuthorDataTable)
 
        Dim modifiedAuthors As СправочникppДанныеDataSet.AuthorDataTable = CType(
            СправочникppДанныеDataSet.Author.GetChanges(Data.DataRowState.Modified), 
            СправочникppДанныеDataSet.AuthorDataTable)
 
        Try
 
            ' Удаление всех удаленных
            If Not deleteAuthors Is Nothing Then
                AuthorTableAdapter.Update(deleteAuthors)
            End If
 
            ' Добавление новых
            If Not newAuthors Is Nothing Then
                AuthorTableAdapter.Update(newAuthors)
            End If
            ' Обновление измененных
            If Not modifiedAuthors Is Nothing Then
                AuthorTableAdapter.Update(modifiedAuthors)
            End If
 
            СправочникppДанныеDataSet.AcceptChanges()
 
        Catch ex As Exception
            MsgBox("Ошибка обновления")
 
        Finally
            If Not deleteAuthors Is Nothing Then
                deleteAuthors.Dispose()
            End If
            If Not newAuthors Is Nothing Then
                newAuthors.Dispose()
            End If
            If Not modifiedAuthors Is Nothing Then
                modifiedAuthors.Dispose()
            End If
        End Try
    End Sub

Если добавлять новые записи, то id у них идет в минусовую. То есть -1, -2, -3 и т.д.
Когда я вызываю эту функцию, все сохраняется в БД нормально, но id не обновляются. Что я пропустил?
Пробовал
AuthorBindingSource.ResetBindings(False)

Все равно не обновляет.
Вот это
Me.AuthorTableAdapter.Fill(Me.СправочникppДанныеDataSet.Author)

Тоже нельзя. Таблицы связаны и нельзя перезагружать говорит.
25 апр 18, 10:43    [21367004]     Ответить | Цитировать Сообщить модератору
 Re: Опять про DataGridView - Visual Basic .NET  [new]
fortibransa
Member

Откуда: СПб
Сообщений: 22917
У тебя типизированный DataSet?
25 апр 18, 11:53    [21367240]     Ответить | Цитировать Сообщить модератору
 Re: Опять про DataGridView - Visual Basic .NET  [new]
fortibransa
Member

Откуда: СПб
Сообщений: 22917
Типизированный DataSet делает вот так:
this._adapter.InsertCommand.CommandText = @"INSERT INTO [MainTest] ([TestDate], [HelicopterID],
[IndentificationSign], [HelicopterNumber], [DeviceNumber], [DeviceID], [Executor], [Note]) VALUES (@TestDate,
@HelicopterID, @IndentificationSign, @HelicopterNumber, @DeviceNumber, @DeviceID, @Executor, @Note);
SELECT MainTestID, TestDate, HelicopterID, IndentificationSign, HelicopterNumber, DeviceNumber, DeviceID,
Executor, Note FROM MainTest WHERE (MainTestID = SCOPE_IDENTITY())";

Обрати внимание на SELECT следующий за INSERT
25 апр 18, 11:56    [21367260]     Ответить | Цитировать Сообщить модератору
 Re: Опять про DataGridView - Visual Basic .NET  [new]
Wurgengel
Member

Откуда:
Сообщений: 7
fortibransa, вроде да. Вот он:
Me._adapter.InsertCommand.CommandText = "INSERT INTO [dbo].[Author] ([Surname], [Authorname], [Patronymic]) VALUES (@Surna" & _
                "me, @Authorname, @Patronymic);" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "SELECT Id, Surname, Authorname, Patronymic FROM " & _
                "Author WHERE (Id = SCOPE_IDENTITY())"
25 апр 18, 13:17    [21367580]     Ответить | Цитировать Сообщить модератору
 Re: Опять про DataGridView - Visual Basic .NET  [new]
fortibransa
Member

Откуда: СПб
Сообщений: 22917
А зачем тебе эти GetChanges?

Просто AuthorTableAdapter.Update(СправочникppДанныеDataSet), он сам там все сделает.
25 апр 18, 14:02    [21367761]     Ответить | Цитировать Сообщить модератору
 Re: Опять про DataGridView - Visual Basic .NET  [new]
Wurgengel
Member

Откуда:
Сообщений: 7
fortibransa,

Так в мануале мелкомягких написано было. Попробую сейчас по вашему.
25 апр 18, 14:34    [21367940]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить