Question

Can someone please help me with that? My prob is that When i use dataAdapter.Update in this next construction i get a return value of zero (no line was updated but no reason or errors return).

The update sentense works when i run it using Access and other update requests works fine when i work on a single table.

Im Using: vb.net \ visual studio 2012 \ access 2010 DB

I update the Data on my DataGridView and call the update function:

update command:

Private Function createGeneralUpdateStatement() As String 
Return "UPDATE EntitysDataTbl INNER JOIN ManagersExtraDataTbl ON EntitysDataTbl.entityID = ManagersExtraDataTbl.managerID " + _
"SET EntitysDataTbl.entityUserName = [@EntitysDataTbl].entityUserName, " + _
"EntitysDataTbl.entityLastEntry = [@EntitysDataTbl].entityLastEntry, " + _
"ManagersExtraDataTbl.mPassword = [@ManagersExtraDataTbl].mPassword, " + _
"ManagersExtraDataTbl.workGroup = [@ManagersExtraDataTbl].workGroup, " + _
"ManagersExtraDataTbl.entityAccessType = [@ManagersExtraDataTbl].entityAccessType, " + _
"ManagersExtraDataTbl.mActive = [@ManagersExtraDataTbl].mActive" + _
"WHERE EntitysDataTbl.entityID= [@EntitysDataTbl].entityID"
End Function

The parameters are:

Dim parmList(2) As String
        parmList(0) = "mPassword"
        parmList(1) = "entityUserName"

and the update function is:

   Public Function updateDB(ByVal updateCommand As String, ByVal parmList() As String, Optional ByVal insertCommand As String = "") As Boolean
        Dim res As Boolean = False

        SyncLock Me
            Try
                mainDataSet.EndInit()
                mUpdateCommand = New OleDb.OleDbCommand(updateCommand, MyBase.getConnector)

                For Each Str As String In parmList
                    If Not Str Is Nothing Then
                        If (Str.StartsWith("%")) Then
                            mUpdateCommand.Parameters.Add("@" & Str.Trim("%"), OleDb.OleDbType.Boolean, MAX_COL_LEN, Str.Trim("%"))
                        Else
                            mUpdateCommand.Parameters.Add("[@" & Str & "]", OleDb.OleDbType.VarChar, MAX_COL_LEN, Str)
                        End If

                    End If
                Next
                mDataAdapter.UpdateCommand = mUpdateCommand

                If (Not insertCommand.Equals("")) Then

                    mInsertCommand = New OleDb.OleDbCommand(insertCommand, MyBase.getConnector)
                    For Each Str As String In parmList
                        If Not Str Is Nothing Then
                            'If Str.Equals("RuleIDNum") Then
                            '    Continue For
                            'End If
                            If (Str.StartsWith("%")) Then
                                mInsertCommand.Parameters.Add("@" & Str.Trim("%"), OleDb.OleDbType.Boolean, MAX_COL_LEN, Str.Trim("%"))
                            Else
                                mInsertCommand.Parameters.Add("[@" & Str & "]", OleDb.OleDbType.VarChar, MAX_COL_LEN, Str)
                            End If
                        End If
                    Next
                    mDataAdapter.InsertCommand = mInsertCommand
                End If

                    Dim i As Integer = mDataAdapter.Update(mainDataSet)
    'ERROR - i = 0 => NO LINE WAS UPDATED!!!!
                    res = True
                Catch ex As Exception
                res = False
            End Try

            mDBWasUpdated = res
        End SyncLock

        Return res

    End Function

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top