以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于合并数据与DataColChanged事件的使用问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=105691) |
-- 作者:zhimin -- 发布时间:2017/8/24 12:55:00 -- 关于合并数据与DataColChanged事件的使用问题 老师好! 第一个问题: 我的表A中用了DataColChanged事件,通过这个事件完成表A、表B“非关联表之间的数据同步”功能。 现在的问题是,表A的数据通过TOACCESS导出来,然后通过合并数据功能倒入到另一个空白的项目中后,发现表A中所有的行都同步到了表B中,相当于在合并数据过程中,软件自动触发了DataColChanged事件,将表A中所有的行同步到了表B中。 我想要的结果是,合并数据只是合并数据,不触发DataColChanged事件,如何实现? 第二个问题: 我购买了开发版,我不想通过网络进行远程给其他人自动更新,而是通过生成补丁,拷贝到其他人的电脑上安装完成更新,是否可行? 谢谢!
|
-- 作者:有点甜 -- 发布时间:2017/8/24 14:21:00 -- 1、合并数据的时候,是不是你写代码合并的?写代码的话就可以控制
http://www.foxtable.com/webhelp/scr/2218.htm
2、制作安装包不就好了? http://www.foxtable.com/webhelp/scr/2207.htm
|
-- 作者:zhimin -- 发布时间:2017/8/24 20:45:00 -- 谢谢,搞定了! 还有一个问题,用代码实现合并数据时如何进行主键比较,剔除重复行?
|
-- 作者:有点色 -- 发布时间:2017/8/24 20:59:00 -- 以下是引用zhimin在2017/8/24 20:45:00的发言:
谢谢,搞定了!
还有一个问题,用代码实现合并数据时如何进行主键比较,剔除重复行?
要用代码处理,比如
http://www.foxtable.com/webhelp/scr/2334.htm
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=101056&replyID=694684&skin=1
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=102938&skin=0
http://www.foxtable.com/webhelp/scr/2137.htm
[此贴子已经被作者于2017/8/24 20:59:57编辑过]
|
-- 作者:zhimin -- 发布时间:2017/8/24 21:36:00 -- 谢谢! 其实我的问题是这样的:我的部门是一个四个人的小团队,由于各种原因,不能通过网络使用FOXTABLE,只能定时(每个月)将他们的mdb文件发给我,我每个月更新到统一的项目进行管理。 所以,我每个月将其他人的mdb文件通过合并数据功能,合并到同一个项目中。代码如下,如何修改以下代码,可以通过合并更新前一个月的数据,而不是直接复制进来? 谢谢!: SystemReady = False Try Dim dlg As new OpenFileDialog If dlg.ShowDialog = DialogResult.OK Then If Connections.Contains("test") Then Connections.Delete("test") Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dlg.FileName & ";Persist Security Info=False") For Each tn As String In Connections("test").GetTableNames Dim mg As New Merger mg.SourcePath = dlg.FileName mg.SourceTableName = tn mg.DataTableName = tn mg.Merge() Next End If Catch ex As Exception MessageBox.Show("追加数据失败") End Try SystemReady = True |
-- 作者:有点色 -- 发布时间:2017/8/24 23:23:00 -- SystemReady = False Try Dim dlg As new OpenFileDialog If dlg.ShowDialog = DialogResult.OK Then If Connections.Contains("test") Then Connections.Delete("test") Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dlg.FileName & ";Persist Security Info=False") For Each tn As String In Connections("test").GetTableNames Dim cmd As New SQLCommand Dim dt As DataTable cmd.ConnectionName = "test" cmd.CommandText = "SELECT * From {" & tn & "}" dt = cmd.ExecuteReader() For Each dr As DataRow In dt.DataRows Dim fdr As DataRow = DataTables(tn).Find("主键列名 = \'" & dr("主键列名") & "\'") If fdr Is Nothing Then fdr = DataTables("员工").AddNew() For Each dc As DataCol In dt.DataCols fdr(dc.name) = dr(dc.name) Next Next Next End If [此贴子已经被作者于2017/8/24 23:37:18编辑过]
|
-- 作者:zhimin -- 发布时间:2017/8/24 23:31:00 -- 您这个代码中,下面的第二行——cmd.C——是什么意思,点击确定后出错。谢谢! Dim dt As DataTable
cmd.C cmd.CommandText = "SELECT * From {" & tn & "}" |
-- 作者:有点色 -- 发布时间:2017/8/24 23:37:00 -- SystemReady = False Try Dim dlg As new OpenFileDialog If dlg.ShowDialog = DialogResult.OK Then If Connections.Contains("test") Then Connections.Delete("test") Connections.Add("test","Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dlg.FileName & ";Persist Security Info=False") For Each tn As String In Connections("test").GetTableNames Dim cmd As New SQLCommand Dim dt As DataTable cmd.ConnectionName = "test" cmd.CommandText = "SELECT * From {" & tn & "}" dt = cmd.ExecuteReader() For Each dr As DataRow In dt.DataRows Dim fdr As DataRow = DataTables(tn).Find("主键列名 = \'" & dr("主键列名") & "\'") If fdr Is Nothing Then fdr = DataTables("员工").AddNew() For Each dc As DataCol In dt.DataCols fdr(dc.name) = dr(dc.name) Next Next Next End If Catch ex As Exception MessageBox.Show("追加数据失败") End Try SystemReady = True |
-- 作者:zhimin -- 发布时间:2017/8/24 23:49:00 -- 不好意思,出错了。点击合并数据按钮(在快速访问菜单上)后,弹出提示框“追加数据失败”,表格数据没有更新。 1、您这个代码写在哪里没关系的吧? 2、如果直接用您这个代码,我的项目需要修改其他哪些地方? 谢谢!
|
-- 作者:有点甜 -- 发布时间:2017/8/25 8:57:00 -- 你要改代码的,你每个表的主键列都分别是什么?
Dim fdr As DataRow = DataTables(tn).Find("主键列名 = \'" & dr("主键列名") & "\'") |