2013-05-30 52 views
0

我知道我的标题有点奇怪。让我解释。我正试图“合并”两个数据库,一个是我们本地的,另一个是另一个设施,希望避免我们的管理组必须通过单独的表单复制条目。我有一个连接到异地数据库的web服务的源代码,我可以输入数据。我想要做的是通过添加我们自己的数据库并将数据复制到他们的数据库来扩展该源。希望这是有道理的。试图将datagridview从一个表单复制到另一个表单

反正

所以本地和异地的形式附加有datagridviews。我现在可以将第一行的内容复制到它们的表单中,但是当它尝试进入第二行时,我收到了错误。这里是我的代码:

Dim i As Integer 
     For i = 0 To VRMAdDataGridView.Rows.Count - 1 
      'For Each row As DataGridViewRow In VRMAdDataGridView.Rows 

      'myrow = VRMAdDataGridView.CurrentRow.Index 
      frmcall.dgvRMAItems.Rows(i).Cells("cItemID").Value = Me.VRMAdDataGridView.Rows(i).Cells("DataGridViewTextBoxColumn5").Value 
      frmcall.dgvRMAItems.Rows(i).Cells("cExpectedSerialNumber").Value = Me.VRMAdDataGridView.Rows(i).Cells("DataGridViewTextBoxColumn2").Value 
      frmcall.dgvRMAItems.Rows(i).Cells("cNotes").Value = Me.VRMAdDataGridView.Rows(i).Cells("DataGridViewTextBoxColumn3").Value 

      'Format Type codes from FW to match Utica 
      Select Case Me.VRMAdDataGridView.Rows(i).Cells("DataGridViewTextBoxColumn6").Value 
       Case "Repair" 
        frmcall.dgvRMAItems.Rows(i).Cells("cRequestedAction").Value = "Repair" 
       Case "RTS" 
        frmcall.dgvRMAItems.Rows(i).Cells("cRequestedAction").Value = "Rtn/Stock" 
       Case "Repair !!RUSH!!" 
        frmcall.dgvRMAItems.Rows(i).Cells("cRequestedAction").Value = "Rush Repair" 

      End Select 


      ' myrowval = row.Cells("DataGridViewTextBoxColumn5").Value 
      ' MsgBox(myrowval, MsgBoxStyle.Information, "Prod_Code") 
      'Do Something 
     Next 

当我尝试运行我收到以下错误代码:

{“索引超出范围必须大于集合的大小非负少 参数名称:index“}

回答

1

您应该操纵底层数据源,而不是UI元素(本例中为DataGridViews)。例如,你的DataSource是一个DataTable。然后只需使用Clone方法获取副本。然后设置其他DataGridView的DataSource。如果您需要的不仅仅是副本,使用一系列DataRow对象肯定会更简单。

+0

谢谢你。在这一点上我应该提到,数据表不一样,我不得不操纵我们本地副本中的数据,以使它符合它在非现场数据库中的输入方式。 –

+0

@DewaynePinion:完全没问题,你的DataTable不需要绑定。它可以表示内存中的唯一数据副本,从CSV文件填充数据,从现有数据计算或以其他方式获取。 – Neolisk

+0

谢谢Neolisk,我会在明天考虑并会从那里更新:) –

相关问题