Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: !!! Не получается выполнить UPDATE !!! Добавлено: 28.10.07 10:33  

Автор вопроса:  AlexDerS
Вот код программы целиком:


Public Class Form1
    Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;"
    'You could change this connection string to point a different path,
    'but if you don't then the sample.mdb needs to be in the same directory as TheSample.exe

    Public dsMPMs As New DataSet()
    Public accessConn As New OleDb.OleDbConnection(connString)

    Sub db(ByVal act As String)

        Dim cmbdoc As New OleDb.OleDbCommand("SELECT * FROM table1", accessConn)
        Dim daMP As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter
        daMP.SelectCommand = cmbdoc
        Dim dsds As DataSet = New DataSet()
        daMP.Fill(dsds, "table1")
        Dim dtTable As DataTable = dsds.Tables.Item("table1")
        Select Case act
            Case "setup"

                TextBox1.DataBindings.Add("Text", dtTable, "id")
                TextBox2.DataBindings.Add("Text", dtTable, "param1")
                TextBox3.DataBindings.Add("Text", dtTable, "param2")
                ComboBox1.DataSource = dtTable
                ComboBox1.DisplayMember = "param1"
                DataGridView1.DataSource = dtTable

            Case "update"

                Dim cmbBuilder As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(daMP)
                dsds.GetChanges()
                BindingContext(dsds, "table1").EndCurrentEdit()
                dtTable.AcceptChanges()
                dsds.Tables("table1").AcceptChanges()
                daMP.UpdateCommand = cmbBuilder.GetUpdateCommand
                daMP.Update(dsds, "table1")
                dsds.AcceptChanges()

        End Select

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        accessConn.Open()
        db("setup")

    End Sub

    Private Sub update_button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles update_button.Click
        db("update")
    End Sub
End Class


В базе данных (test.mdb) 1 таблица (table1)
В таблице 3 поля: "id", "parem1" и "parem2"

НЕ ПОЛУЧАЕТСЯ ОБНОВИТЬ ДАННЫЕ, не через TextBox, не через DataGrid !!!
ВООБЩЕ НИКАК, ВСЁ ПЕРЕПРОБЫВАЛ!!!
УЖЕ НЕДЕЛЮ СИЖУ С ЭТОЙ ЛАЖОЙ!!!!

ПО-МО-ГИ-ТЕ!!!!!

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #1 Добавлено: 28.10.07 12:42
Сначала dsds.AcceptChanges()
(причем для остальных объектов не надо вызывать методы AcceptChanges - они вызовутся автоматически).

И потом уже daMP.Update(dsds).
(откуда взялся у тебя второй параметр - я не догнал)

Ответить

Номер ответа: 2
Автор ответа:
 el-paso



Вопросов: 3
Ответов: 164
 Профиль | | #2 Добавлено: 28.10.07 12:45
И выкинь на..й dsds.GetChanges()
Возвращаемое значение не используется - зачем тогда без толку память расходовать?..

Ответить

Номер ответа: 3
Автор ответа:
 AlexDerS



Вопросов: 37
Ответов: 61
 Профиль | | #3 Добавлено: 28.10.07 13:03
Если для daMP.Update(dsds) не указать второй параметр (srcTable - The name of the source table to use for table mapping), то генерируется ошибка:
 
InvalidOperationExeption was unhandled
При обновлении не удалось найти TableMapping['Table'] или DataTable 'Table'.



А если указать daMP.Update(dsds, "table1";), то ошибки нет, но обновления в базе не происходят! ((

Ответить

Номер ответа: 4
Автор ответа:
 BUMM ®



Вопросов: 8
Ответов: 482
 Профиль | | #4 Добавлено: 28.10.07 15:07
1. accept changes изменяет состояние всех строк на UNCHANGED, после чего естессно обновляй не обновляй, нихрена не обновится.
2. dsds.GetChanges() возвращает измененные строки. пользоваться примерно так:
Dim dt as datatable = dsds.table1.GetChanges()
 daMP.Update(dt)

Ответить

Номер ответа: 5
Автор ответа:
 AlexDerS



Вопросов: 37
Ответов: 61
 Профиль | | #5 Добавлено: 28.10.07 17:23
В общем нифига не получается.
В чём проблема - понять не могу. (((

Вот программка целиком (исходный код):
http://www.sseu.ru/site_kafedra/marketing/fop/testdb.rar
Размер: 104Kb
Visual Basic 2005

Спасибо!

Ответить

Номер ответа: 6
Автор ответа:
 AlexDerS



Вопросов: 37
Ответов: 61
 Профиль | | #6 Добавлено: 28.10.07 21:29
Вопрос снимается.
пошёл другим путём...
всем спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам