在数据表合并之后,tableadapter.update方法返回0

时间:2015-04-10 22:58:11

标签: sql-server vb.net visual-studio-2013 dataset tableadapter

我已经尝试了很多方法让我的数据库更新我添加的行,但没有运气。这就是我所拥有的:

  • 2x数据库(本地和远程)
  • 他们自己的数据集中的2x数据表
  • 本地数据库有3个额外的列(1 nchar(15)和2位全部为NULLABLE)
  • 2x独立的表适配器和bindingsource链接到datagridviews(dgv 仅供参考)
  • 1x疯狂大头痛

我需要做的是用localDB表填充dgv1,然后查看表中的最后一个发票号,以获取remoteDB中填充dgv2的起点。使用两个数据表中添加的数据,然后我将它们合并到localDB数据集中,调用me.MasterInvoiceTableAdapter.Update(me.MasterInvoiceDataSet.MasterInvoices)应该将添加的行保存到数据库...

然后我再次填充数据表。它在dgv中看起来很好,但退出表单并再次加载显示没有进行实际更新。 update方法上的返回码也返回0,验证没有行受到影响。代码如下:

Try
        If stats2 = False Then
            Me.MasterInvoicesTableAdapter.Fill(Me.MasterInvoicesDataSet.MasterInvoices)
        Else
            Me.MasterInvoicesTableAdapter.GetData()
        End If

        Dim rowcount As Integer = DataGridView1.RowCount - 1
        Dim lookup As String = Trim(DataGridView1.Item(0, rowcount - 1).Value)
        MsgBox(lookup)
        Me.SorMasterTableAdapter.Fill(Me.InvoicesFDataSet.SorMaster, lookup)
        MasterInvoicesDataSet.MasterInvoices.Merge(InvoicesFDataSet.SorMaster, True)
        InvoicesFDataSet.SorMaster.Clear()
    Catch ex As Exception
        MsgBox(ex.Message)
        TextBox1.Text = ex.Message
    End Try
    Try
        Me.Validate()
        Me.MasterInvoicesBindingSource.EndEdit()
        MsgBox(Me.MasterInvoicesTableAdapter.Update(Me.MasterInvoicesDataSet.MasterInvoices))
        stats = True
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try

FYI。 stats变量用于控制刷新按钮的行为。

我已经尝试循环遍历数据集并逐个添加数据行(newrow with row.add,importrow,item.add),我尝试使用linkDB查询来完成所有这些操作曾经(有了这个,我发现数据库中的校对不一样),以及其他一些甚至不值得一提的方法。

有任何建议吗?

1 个答案:

答案 0 :(得分:-1)

我通过对merge方法进行一些研究来修复我的问题,并发现rowstate并不总是在额外的行上更改为Added,这是通过在合并表之前添加For Each drow As DataRow In InvoicesFDataSet.SorMaster drow.SetAdded() Next来解决的。 / p>

希望这可以帮助那些一直在寻找类似问题答案的人。