以文本方式查看主题

-  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("主键列名") & "\'")