Foxtable(狐表)用户栏目专家坐堂 → 关于合并数据与DataColChanged事件的使用问题


  共有1816人关注过本帖树形打印复制链接

主题:关于合并数据与DataColChanged事件的使用问题

帅哥哟,离线,有人找我吗?
zhimin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:132 积分:1232 威望:0 精华:0 注册:2017/3/20 13:41:00
关于合并数据与DataColChanged事件的使用问题  发帖心情 Post By:2017/8/24 12:55:00 [只看该作者]

老师好!
第一个问题:
我的表A中用了DataColChanged事件,通过这个事件完成表A、表B“非关联表之间的数据同步”功能。
现在的问题是,表A的数据通过TOACCESS导出来,然后通过合并数据功能倒入到另一个空白的项目中后,发现表A所有的行都同步到了表B中,相当于在合并数据过程中,软件自动触发了DataColChanged事件,将表A中所有的行同步到了表B中。
我想要的结果是,合并数据只是合并数据,不触发DataColChanged事件,如何实现?
第二个问题:
我购买了开发版,我不想通过网络进行远程给其他人自动更新,而是通过生成补丁,拷贝到其他人的电脑上安装完成更新,是否可行?
谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:132 积分:1232 威望:0 精华:0 注册:2017/3/20 13:41:00
  发帖心情 Post By:2017/8/24 20:45:00 [只看该作者]

谢谢,搞定了!
还有一个问题,用代码实现合并数据时如何进行主键比较,剔除重复行?

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:132 积分:1232 威望:0 精华:0 注册:2017/3/20 13:41:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:132 积分:1232 威望:0 精华:0 注册:2017/3/20 13:41:00
  发帖心情 Post By:2017/8/24 23:31:00 [只看该作者]

您这个代码中,下面的第二行——cmd.C——是什么意思,点击确定后出错。谢谢!
  Dim dt As DataTable
            cmd.C
            cmd.CommandText = "SELECT * From {" & tn & "}"

 回到顶部
帅哥哟,离线,有人找我吗?
有点色
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:132 积分:1232 威望:0 精华:0 注册:2017/3/20 13:41:00
  发帖心情 Post By:2017/8/24 23:49:00 [只看该作者]

不好意思,出错了。点击合并数据按钮(在快速访问菜单上)后,弹出提示框“追加数据失败”,表格数据没有更新。
1、您这个代码写在哪里没关系的吧?
2、如果直接用您这个代码,我的项目需要修改其他哪些地方?
谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/25 8:57:00 [只看该作者]

 你要改代码的,你每个表的主键列都分别是什么?

 

Dim fdr As DataRow = DataTables(tn).Find("主键列名 = '" & dr("主键列名") & "'")


 回到顶部
总数 16 1 2 下一页