如何解决需要查询或数据表来查找两个表之间的差异
我在一些产品和另一个带有一些产品的桌子之间有一张桌子。我只想指定两个表之间的不同产品。
table prod a --col prodnama
GH1
cd2
at3
表 prodb --col prodnmb
在 3
cd2
结果 gh1
我想查询 ms access,如果有数据表或用于它,它可以在 Visual Basic.net 上运行
解决方法
这将返回 proda 中所有不在 prodb 中的产品。
Select prodnama
from proda
left join prodb
on proda.prodnama = prodb.prodnamb
where prodb.prodnamb is null
这将返回 prodb 中所有不在 proda 中的产品。
Select prodnamb
from prodb
left join proda
on prodb.prodnamb = proda.prodnama
where prodb.prodnama is null
如果您想在一个查询中查询 proda 中所有不在 prodb 中的产品以及 prodb 中所有不在 proda 中的产品
Select prodnama as prodnam
from proda
left join prodb
on proda.prodnama = prodb.prodnamb
where prodb.prodnamb is null
Union
Select prodnamb as prodnam
from prodb
left join proda
on prodb.prodnamb = proda.prodnama
where prodb.prodnama is null
,
听起来您的问题有两个部分。 首先您要创建一个“查找不匹配的查询”,然后第二,您要查询 Access,然后将结果加载到 VB.Net 数据表中。以下代码用于VB.Net。更改您的 OLEDB 版本的连接字符串和数据库路径。
您需要安装 MS Access 可再发行组件(免费)。它具有您需要的 ODBC 和 OleDb 驱动程序。
您需要一个连接到 Access 数据库的字符串:
Dim strOleDB As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data" & _
" Source=C:\MyPath\MyDatabase.accdb;Persist Security Info=False;"
还有一个数据集来加载你的表格:
Dim dst As New DataSet()
获取您的 SQL;类似:
strSQL = "Select table1.column_a from table1" &
" Left Join table2 on table1.column_a = table2.column_a" & _
" Where table2.column_a Is Null"
加载您的数据表:
Dim tblData As DataTable = LoadDataAccess(dst,strSQL,"tmpMyData",strOleDB)
tblData 有你的结果列表。
我通常使用一个函数来返回我的数据表。像这样:
Function LoadDataAccess(ByVal dstToLoadInto As DataSet,ByVal strSQL As String,ByVal strName As String,strOleDB as String) As DataTable
Dim cnnAccess As New OleDb.OleDbConnection(strOleDB)
Dim dptAccess = New OleDb.OleDbDataAdapter(strSQL,cnnAccess)
Dim tblNew As DataTable
Try
dstToLoadInto.Tables.Remove(strName)
Catch ex As Exception
End Try
cnnAccess.Open()
Try
dptAccess.Fill(dstToLoadInto,strName)
tblNew = dstToLoadInto.Tables(strName)
Catch ex As Exception
Throw ex
Finally
cnnAccess.Close()
End Try
Return tblNew
End Function
该视频介绍了如何使用 SQL 比较列表的步骤(对于上面的 strSQL): https://youtu.be/IkrDKdfQmuk
祝你的项目好运!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。