Rambler's Top100
Главная
Новости
Статьи
Форумы
Книги
Коды
Сообщество
Блоги
О нас
 

Логин

Email:
  Пароль:

Войти
Зарегистрироваться
Забыл пароль

Поиск

 Искать :
 
Вперед

Сообщение

gileon


Имеющий Что Сказать

Зарегистрирован:
29 September 2002
Сообщения: 56
Примеры кода: 0
 

There is an error in XML document ???

24 March 2004 01:45  


Ситуация в следующем:

Пишу прогу, в которой есть форма типа "Поездка-Участники" в виде Master-Details таблицы, где Details привязаны к DataGrid на форме, а Master - к текстовым полям. Связь с базой данных (Access XP) осуществляется через WebService. Если я создаю новую запись или удаляю запись, то при сохранении изменений в базу все проходит "на ура". Если же пытаюсь изменить данные и произвести их сохранение в базу (Update), вылетает вот такая ошибка:


System.InvalidOperationException: There is an error in XML document (1, 7575).
---> System.NullReferenceException: Object reference not set to an instance of an object.
at System.Xml.Serialization.XmlSerializationReader.UnknownNode(XmlNode unknownNode, Object o)
at System.Xml.Serialization.XmlSerializationReader.UnknownNode(Object o)
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read95_UpdateRechnungUndTeilnehmerResponse()
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader)
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at ReisebЁ№ro.localhost.DatenService.UpdateRechnungUndTeilnehmer(DataSet ds) in X:\DocSystem\VisualStudio_Projekte\ReisebЁ№ro\Web References\localhost\Reference.vb:line 459
at ReisebЁ№ro.MainForm.UpdateRechnungDataSet() in X:\DocSystem\VisualStudio_Projekte\ReisebЁ№ro\MainForm.vb:line 1689"


Никак не могу разобраться со всем этим Плач.

Привожу пример кода из Web Service'a:



     _
    Public Function UpdateRechnungUndTeilnehmer(ByVal ds As DataSet) As DataSet

        MyOleDbConnection.Open()
        Dim tran As OleDbTransaction = MyOleDbConnection.BeginTransaction
        Try
            UpdateRechnung(ds, MyOleDbConnection, tran)
            UpdateTeilnehmer(ds, MyOleDbConnection, tran)

            If Not (ds.HasErrors) Then
                tran.Commit()
                ds.AcceptChanges()
            Else
                tran.Rollback()
            End If

        Catch e As Exception
            tran.Rollback()
            Throw e

        Finally

            MyOleDbConnection.Close()

        End Try

        Return ds

    End Function


    Private Sub UpdateRechnung(ByVal ds As DataSet, _
        ByVal con As OleDbConnection, ByVal tran As OleDbTransaction)

        Dim insertRechnungSQL As String = "INSERT INTO [Rechnung]" & _
            "([Rechnungsdatum], ...) " & _
            "VALUES " & _
            "(@Rechnungsdatum, ...)"

        Dim updateRechnungSQL As String = "UPDATE [Rechnung] SET " & _
            "[Rechnungsnummer] = @Rechnungsnummer, [Rechnungsdatum] = @Rechnungsdatum, ... " & _
            "WHERE [Rechnungsnummer] = @oldRechnungsnummer"

        Dim deleteRechnungSQL As String = "DELETE FROM [Rechnung] WHERE " & _
            "[Rechnungsnummer] = @Rechnungsnummer"

        Dim cmdRechnung As OleDbDataAdapter = New OleDbDataAdapter( _
            "SELECT * FROM Rechnung", con)

        cmdRechnung.InsertCommand = New OleDbCommand(insertRechnungSQL, con, tran)
        buildRechnungInsertParams(cmdRechnung.InsertCommand)
        cmdRechnung.UpdateCommand = New OleDbCommand(updateRechnungSQL, con, tran)
        buildRechnungUpdateParams(cmdRechnung.UpdateCommand)
        cmdRechnung.DeleteCommand = New OleDbCommand(deleteRechnungSQL, con, tran)
        buildRechnungDeleteParams(cmdRechnung.DeleteCommand)

        AddHandler cmdRechnung.RowUpdated, New OleDbRowUpdatedEventHandler( _
            AddressOf Me.RechnungUndTeilnehmer_RowUpdated)

        If Not ds.HasErrors Then
            cmdRechnung.Update(ds, "Rechnung") 'Здесь происходит ошибка, если изменения были сделаны в Master-таблице
        End If
    End Sub

    Private Sub UpdateTeilnehmer(ByVal ds As DataSet, ByVal con As OleDbConnection, _
        ByVal tran As OleDbTransaction)

        Dim insertTeilnehmerSQL As String = "INSERT INTO [Reiseteilnehmer](" & _
            "[Rechnungsnummer], ...) " & _
            "VALUES (@Rechnungsnummer, ...)"

        Dim updateTeilnehmerSQL As String = "UPDATE [Reiseteilnehmer] SET " & _
            "[Rechnungsnummer] = @Rechnungsnummer, ... WHERE [ReiseteilnehmerID] = @oldReiseteilnehmerID"

        Dim deleteTeilnehmerSQL As String = "DELETE FROM [Reiseteilnehmer] WHERE " & _
            "[ReiseteilnehmerID] = @ReiseteilnehmerID"

        Dim cmdTeilnehmer As OleDbDataAdapter = New OleDbDataAdapter( _
            "SELECT * FROM Reiseteilnehmer", con)

        cmdTeilnehmer.InsertCommand = New OleDbCommand(insertTeilnehmerSQL, con, tran)
        buildTeilnehmerInsertParams(cmdTeilnehmer.InsertCommand)
        cmdTeilnehmer.UpdateCommand = New OleDbCommand(updateTeilnehmerSQL, con, tran)
        buildTeilnehmerUpdateParams(cmdTeilnehmer.UpdateCommand)
        cmdTeilnehmer.DeleteCommand = New OleDbCommand(deleteTeilnehmerSQL, con, tran)
        buildTeilnehmerDeleteParams(cmdTeilnehmer.DeleteCommand)

        AddHandler cmdTeilnehmer.RowUpdated, _
            New OleDbRowUpdatedEventHandler(AddressOf Me.RechnungUndTeilnehmer_RowUpdated)

        If Not ds.HasErrors Then
            cmdTeilnehmer.Update(ds, "Reiseteilnehmer") 'Здесь происходит ошибка, если изменения были сделаны в Details-таблице
        End If
    End Sub

    Private Sub RechnungUndTeilnehmer_RowUpdated(ByVal sender As Object, _
        ByVal rue As OleDbRowUpdatedEventArgs)

        If (rue.Status = UpdateStatus.ErrorsOccurred) Then
            rue.Status = UpdateStatus.Continue
            rue.Row.RowError = rue.Errors.Message & _
                " - BezЁ№glich Fehler sehen Sie bitte WebService fЁ№r Details"
        Else
            rue.Row.ClearErrors()
        End If
    End Sub

    Private Sub buildRechnungUpdateParams(ByVal workCommand As OleDbCommand)

        Dim workParam As OleDbParameter

        workParam = workCommand.Parameters.Add(New OleDbParameter( _
            "@Rechnungsnummer", OleDbType.Integer))
        workParam.Direction = ParameterDirection.Input
        workParam.SourceColumn = "Rechnungsnummer"
        
       ...

        workParam = workCommand.Parameters.Add(New OleDbParameter( _
            "@oldRechnungsnummer", OleDbType.Integer))
        workParam.Direction = ParameterDirection.Input
        workParam.SourceColumn = "Rechnungsnummer"
        workParam.SourceVersion = DataRowVersion.Original

    End Sub

    Private Sub buildRechnungInsertParams(ByVal workCommand As OleDbCommand)

        Dim workParam As OleDbParameter

        workParam = workCommand.Parameters.Add(New OleDbParameter( _
            "@Rechnungsdatum", OleDbType.DBDate))
        workParam.Direction = ParameterDirection.Input
        workParam.SourceColumn = "Rechnungsdatum"
        
        ...

    End Sub

    Private Sub buildRechnungDeleteParams(ByVal workCommand As OleDbCommand)
        Dim workParam As OleDbParameter
        workParam = workCommand.Parameters.Add(New OleDbParameter( _
            "@Rechnungsnummer", OleDbType.Integer))
        workParam.Direction = ParameterDirection.Input
        workParam.SourceColumn = "Rechnungsnummer"
        workParam.SourceVersion = DataRowVersion.Original
    End Sub

    Private Sub buildTeilnehmerUpdateParams(ByVal workCommand As OleDbCommand)

        Dim workParam As OleDbParameter

        workParam = workCommand.Parameters.Add(New OleDbParameter( _
            "@ReiseteilnehmerID", OleDbType.Integer))
        workParam.Direction = ParameterDirection.Input
        workParam.SourceColumn = "ReiseteilnehmerID"

        ...

        workParam = workCommand.Parameters.Add(New OleDbParameter( _
            "@oldReiseteilnehmerID", OleDbType.Integer))
        workParam.Direction = ParameterDirection.Input
        workParam.SourceColumn = "ReiseteilnehmerID"
        workParam.SourceVersion = DataRowVersion.Original
    End Sub

    Private Sub buildTeilnehmerInsertParams(ByVal workCommand As OleDbCommand)
        Dim workParam As OleDbParameter

        workParam = workCommand.Parameters.Add(New OleDbParameter( _
            "@Rechnungsnummer", OleDbType.Integer))
        workParam.Direction = ParameterDirection.Input
        workParam.SourceColumn = "Rechnungsnummer"
       
        ...

    End Sub

    Private Sub buildTeilnehmerDeleteParams(ByVal workCommand As OleDbCommand)
        Dim workParam As OleDbParameter
        workParam = workCommand.Parameters.Add(New OleDbParameter( _
            "@ReiseteilnehmerID", OleDbType.Integer))
        workParam.Direction = ParameterDirection.Input
        workParam.SourceColumn = "ReiseteilnehmerID"
        workParam.SourceVersion = DataRowVersion.Original
    End Sub



Извиняюсь заранее за обилие кода, но думаю без этого не разобраться с проблемой. Жду ответа. Спасибо!!!
Последний раз редактировалось 24 March 2004 01:54
Наверх
  



Web Services

 There is an error in XML document ???gileon  24 March 2004 01:45
 RE: There is an error in XML document ???Dimon aka Manowar  24 March 2004 02:05
 RE[2]: There is an error in XML document ???gileon  24 March 2004 12:25
 RE[3]: There is an error in XML document ???Dimon aka Manowar  24 March 2004 12:41
 RE[4]: There is an error in XML document ???gileon  24 March 2004 13:36
 RE[5]: There is an error in XML document ???Dimon aka Manowar  24 March 2004 14:35
 RE[6]: There is an error in XML document ???gileon  24 March 2004 16:25
 RE[7]: There is an error in XML document ???gileon  25 March 2004 21:18
 RE[8]: There is an error in XML document ???Dimon aka Manowar  25 March 2004 21:41
 
Наш Киев

Apartments for Rent

Rambler's Top100
Рейтинг@Mail.ru
Идея: Dimon aka Manowar Программирование: Dimon aka Manowar Дизайн: Dan Lebedev
Хостинг от компании Parking.ru
Карта сайта