This is the first time I am working with sql server. when I try to update the table I get this error.
Update requires a valid InsertCommand when passed DataRow collection with new rows.
Can somebody help me ?
Thanks.
Here is my code:
Code:Private Function CopyHeader(ByVal iAgentNo As Integer, ByVal lWkOrdNo As Long, ByVal lNewWkOrdNo As Long) As Boolean Dim sAdOrig As New SqlClient.SqlDataAdapter Dim sAdPreset As New SqlClient.SqlDataAdapter Dim sAdapter As New SqlClient.SqlDataAdapter Dim dSetOrig As New DataSet Dim dSetPreset As New DataSet Dim dSet As New DataSet Dim sSQLPreset As String 'Dim iCounter As Integer Dim bResult As Boolean Dim maxRows As Integer bResult = False sSQLPreset = "SELECT * FROM PresetHeader WHERE t$agentno = " & iAgentNo SqlConnect(connString) sAdPreset = New SqlClient.SqlDataAdapter(sSQLPreset, conn) sAdPreset.Fill(dSetPreset, "PresetHeader") maxRows = dSetPreset.Tables("PresetHeader").Rows.Count If maxRows < 0 Then MessageBox.Show("Rep number '" & iAgentNo & "' is not set up in table 'PresetHeader'") Exit Function End If Dim sSQLOrig As String = "SELECT * FROM Baan_TTDSLS840100 WHERE T$WKORDNO = " & lWkOrdNo 'current order sAdOrig = New SqlClient.SqlDataAdapter(sSQLOrig, conn) sAdOrig.Fill(dSetOrig, "Baan_TTDSLS840100") 'maxRows = dSetOrig.Tables("Baan_TTDSLS840100").Rows.Count 'this will add a record that is a copy Dim sSQL As String = "SELECT * FROM Baan_TTDSLS840100" Dim cb As New SqlCommandBuilder(sAdapter) sAdapter = New SqlClient.SqlDataAdapter(sSQL, conn) sAdapter.Fill(dSet, "Baan_TTDSLS840100_New") Dim dsNewRow As DataRow Dim fld As Data.DataColumn dsNewRow = dSet.Tables("Baan_TTDSLS840100_New").NewRow() 'iCounter = 0 For Each fld In dSet.Tables("Baan_TTDSLS840100_New").Columns Select Case fld.ColumnName Case "T$WKORDNO" dsNewRow.Item(fld.ColumnName) = lNewWkOrdNo Case "T$SOLDCUST" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDCUST") Case "T$SOLDTSFX" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDTSFX") Case "T$SOLDNAM1" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDNAM1") Case "T$SOLDNAM2" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDNAM2") Case "T$SOLDADD1" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDADD1") Case "T$SOLDADD2" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDADD2") Case "T$SOLDCITY" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDCITY") Case "T$SOLDTOST" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDTOST") Case "T$SOLDZIP1" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDZIP1") Case "T$SOLDZIP2" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDZIP2") Case "T$SOLDCNTR" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$SOLDCNTR") Case "T$ORDDT" 'use today's date dsNewRow.Item(fld.ColumnName) = Date.Now() 'Format(Now(), "mm/dd/yy") Case "T$STSPROGR" '-2 will print order dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$STSPROGR") Case "T$AGENTNO" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$AGENTNO") Case "T$COMMRALL" 'need to determine how commissions will be handled dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$COMMRALL") Case "T$MSGTXT" 'this field needs to be cleared dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$MSGTXT") Case "T$TERMSOFP" dsNewRow.Item(fld.ColumnName) = dSetPreset.Tables("PresetHeader").Rows(0).Item("T$TERMSOFP") Case "T$ORDTYPE" If dSetOrig.Tables("Baan_TTDSLS840100").Rows(0).Item(fld.ColumnName) = "SST" Then dsNewRow.Item(fld.ColumnName) = "STD" ElseIf dSetOrig.Tables("Baan_TTDSLS840100").Rows(0).Item(fld.ColumnName) = "STD" Then dsNewRow.Item(fld.ColumnName) = "SST" End If Case Else 'just copy the other fields dsNewRow.Item(fld.ColumnName) = dSetOrig.Tables("Baan_TTDSLS840100").Rows(0).Item(fld.ColumnName) End Select 'iCounter = iCounter + 1 Next fld dSet.Tables("Baan_TTDSLS840100_New").Rows.Add(dsNewRow) sAdapter.Update(dSet, "Baan_TTDSLS840100_New") conn.Close() sAdOrig = Nothing sAdPreset = Nothing sAdapter = Nothing dSet = Nothing dSetOrig = Nothing dSetPreset = Nothing bResult = True CopyHeader = bResult End Function




Reply With Quote
