以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 数据源手动合并问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=162080) |
|
-- 作者:ycs5801 -- 发布时间:2021/4/5 0:46:00 -- 数据源手动合并问题 例如项目中有一个员工表,要从一个外部文件中合并数据到这个员工表中,希望在合并过程中检查身份证号码,如果员工表已经存在相同身份证号码的行,则跳过此行。 Dim
cmd
As New SQLCommand 以上是帮助中摘抄一段,目的是手动合并数据库文件,问题是:如果在局域网操作,代码的第三行中的"数据源名称",是不是应该改为带有ip地址的那种相对路径就可以了? |
|
-- 作者:有点蓝 -- 发布时间:2021/4/5 21:06:00 -- 不是的,这个"数据源名称"指的是菜单外部数据源设置中添加的数据源名称。如果没有在外部数据源设置中添加,也可以临时添加一个数据源,参考:http://www.foxtable.com/webhelp/topics/1944.htm |
|
-- 作者:ycs5801 -- 发布时间:2021/4/5 22:24:00 -- 如果是这样我有个问题,假如我的客户端在外边采集数据之后,关闭了软件,再打开之后可能没有把采集的数据加载进来,这样再把数据库改为新的数据库,最后会不会造成采集的数据没有正确上传? |
|
-- 作者:有点蓝 -- 发布时间:2021/4/5 22:56:00 -- 既然知道那就在打开的时候把数据加载进来呀 |
|
-- 作者:ycs5801 -- 发布时间:2021/4/6 13:33:00 --
|
|
-- 作者:有点蓝 -- 发布时间:2021/4/6 14:13:00 -- 同样的方法,根据编号获取B、C的数据 Dim cmd As New SQLCommand Dim dt As DataTable cmd.CommandText = "SEL ECT * From {表B} where 1=2" For Each dr As DataRow In DataTables("主表").DataRows If dt.Find("主表编号= \'" & dr("主表编号") & "\'") Is Nothing Then Dim nr As DataRow = dt.AddNew() For Each dc As DataCol In DataTables("主表").DataCols nr(dc.name) = dr(dc.name) Next For Each dr2 As DataRow In DataTables("表B").select("主表编号= \'" & dr("主表编号") & "\'") Dim nr2 As DataRow = dt2.AddNew() For Each dc2 As DataCol In DataTables("表B").DataCols nr2(dc2.name) = dr2(dc.name) Next next
End If Next |
|
-- 作者:ycs5801 -- 发布时间:2021/4/6 21:42:00 -- Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\data.mdb;Persist Security Info=False") Dim cmd As New SQLCommand Dim dt As DataTable cmd.Connecti cmd.CommandText = "SEL ECT * From {主表} where 1=2" dt = cmd.ExecuteReader(True) cmd.CommandText = "SEL ECT * From {操作表} where 1=2" Dim dt2 As DataTable = cmd.ExecuteReader(True) cmd.CommandText = "SEL ECT * From {压舱水} where 1=2" Dim dt3 As DataTable = cmd.ExecuteReader(True) cmd.CommandText = "SEL ECT * From {淡水} where 1=2" Dim dt4 As DataTable = cmd.ExecuteReader(True) For Each dr As DataRow In DataTables("主表").DataRows If dt.Find("sureyid= \'" & dr("sureyid") & "\'") Is Nothing Then Dim nr As DataRow = dt.AddNew() For Each dc As DataCol In DataTables("主表").DataCols nr(dc.name) = dr(dc.name) Next For Each dr2 As DataRow In DataTables("操作表").Select("sureyid= \'" & dr("sureyid") & "\'") Dim nr2 As DataRow = dt2.AddNew() For Each dc2 As DataCol In DataTables("操作表").DataCols nr2(dc2.name) = dr2(dc2.name) Next For Each dr3 As DataRow In DataTables("压舱水").Select("sureyidtimes= \'" & dr2("sureyidtimes") & "\'") Dim nr3 As DataRow = dt3.AddNew() For Each dc3 As DataCol In DataTables("压舱水").DataCols nr3(dc3.name) = dr3(dc3.name) Next Next For Each dr4 As DataRow In DataTables("淡水").Select("sureyidtimes= \'" & dr2("sureyidtimes") & "\'") Dim nr4 As DataRow = dt4.AddNew() For Each dc4 As DataCol In DataTables("淡水").DataCols nr4(dc4.name) = dr4(dc4.name) Next Next Next End If Next 按照老师的思路做了一个按钮公式,点击后提示“test”链接已经存在,哪里需要修改呢?
[此贴子已经被作者于2021/4/6 21:44:38编辑过]
|
|
-- 作者:ycs5801 -- 发布时间:2021/4/6 21:45:00 -- ![]() ![]() [此贴子已经被作者于2021/4/6 21:47:33编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2021/4/6 21:58:00 -- if Connections.Contains("test") = false Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\data.mdb;Persist Security Info=False") end if
|
|
-- 作者:ycs5801 -- 发布时间:2021/4/6 22:19:00 -- 又报错了,我的数据库中的表名,为什么自动变了?老师以前遇到过吗?我记得我从来没改过啊。 ![]() ![]() |