我有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,但它们可能是很多行&不想进入不必要的过程,如果可以更容易和简单的方式管理。
非常感谢任何帮助。
由于
答案 0 :(得分:0)
我明白了。我将“as Col1”添加到查询中,为每个表的结果生成相同的col。 对于merge,将MissingSchemaAction.Add替换为MissingSchemaAction.Ignore。
这对我有用。