.NET:在单个DataTable中组合2个DataSet / DataTable

时间:2012-07-26 08:18:09

标签: vb.net datatable dataset oledb

我有2个数据集,每个数据集有1个表(7个列)。两个表都有不同的列名,但结构相同。我想加入/合并/合并这两个表并生成一个仅包含7个列的表。我和Merge一起玩,但是产生了14个cols&实际上并没有加入他们两个。   我也在这个网站和其他网站上搜索过,但找不到合适的解决方案。我的代码是:

    Private Sub FillMatchToOtstdAdapter()
    Dim sql1 As String = "SELECT DOCMCH.docmch_nAccNo, DOCMCH.docmch_lRefDocId, DOCMCH.docmch_nDocLnNo, DOCMCH.docmch_dAdjustedAmt, DOCMCH.docmch_dAdjustedAmt, DOCHDR.dochdr_nVersionNo, 'D' AS Expr1 FROM TXNTYP INNER JOIN (DOCHDR INNER JOIN DOCMCH ON DOCHDR.dochdr_lDocId = DOCMCH.docmch_lRefDocId) ON TXNTYP.txntyp_sDocTyp = DOCHDR.dochdr_sDocType WHERE (((TXNTYP.txntyp_cDocTypCat)='F') AND ((DOCHDR.dochdr_lDocDt)>=20120630));"
    Dim sql2 As String = "select otstnd_nAccNo, otstnd_lDocId, otstnd_nDocLnNo, otstnd_dOtstndgAmt, otstnd_dDocLnAmt, otstnd_nVersionNo, otstnd_cOtstndgSign from otstnd"

    ' Get Records of Query 1
    ds_otstnd_Adap = New OleDb.OleDbDataAdapter(sql1, connStr)
    ds_otstnd_Adap.Fill(ds_otstnd_Ds)
    ds_otstnd_Dt = ds_otstnd_Ds.Tables(0)

    ' Get Records of Query 2
    Dim adap As New OleDb.OleDbDataAdapter(sql2, connStr)
    Dim ds As New DataSet
    adap.Fill(ds)

    ' Merge both of them
    ds_otstnd_Dt.Merge(ds.Tables(0), False, MissingSchemaAction.Add)
    DataGridView1.DataSource = ds_otstnd_Dt
End Sub

我知道如何在仅包含7个cols的单个表中生成结果 - 只需将第2个表中的数据添加到第1个表中。 我正在考虑从table2中选择每一行并且只是添加table1,但它们可能是很多行&不想进入不必要的过程,如果可以更容易和简单的方式管理。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

我明白了。我将“as Col1”添加到查询中,为每个表的结果生成相同的col。 对于merge,将MissingSchemaAction.Add替换为MissingSchemaAction.Ignore。

这对我有用。