以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]合并数据的问题!!!!!!  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=18542)

--  作者:gaoyong30000
--  发布时间:2012/4/16 22:59:00
--  [求助]合并数据的问题!!!!!!

我们单位情况是这样的  总公司A   分公司B  都有自己的服务器

 

由于网络慢的问题 无法实时共享数据库   但是数据库结构是一致的  

 

现在分公司B要同步总公司A  服务器中2张表a和b   同步方式  是分公司B删除a,b表的所有数据,只保存表结构  然后动态与总公司A建立数据源  把数据通过fill方式加载过来保存

 

但是目前发现 删除了本地的 加载了总公司的A的数据后  save不了  求解????? 

 

代码如下

 

Dim s As String = "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=测试1(东区数据);Data Source=Chinese-f28c28f,1433"
If Connections.TryConnect(s) = True Then
    If Connections.Contains("总公司A") = False Then
        Connections.Add("总公司A",s)
    End If
    Tables("a").fill("select * from {人事档案}","分公司B",False)
    DataTables("a").DeleteFor("true")
    DataTables("a").save
   
    Tables("b").fill("select * from {授权}","分公司B",False)
    DataTables("b").DeleteFor("true")
    DataTables("b").save
   
    Tables("a").fill("select * from {人事档案}","总公司A",False)
    Tables("b").fill("select * from {授权}","总公司A",False)
   
    Dim Result As DialogResult
    Result = messagebox.show("同步完成,是否保存同步的数据至本地?","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        DataTables("a").save
        DataTables("b").save
    End If
Else
    MessageBox.Show("数据源无法连通!")
End If
e.sender.enabled = False

 

 

 

红色部分save了  但是发现 重新打开项目后 a,b表没数据~~~~~~~~


图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看

 

 

 

代码在同步东区数据  按钮里

[此贴子已经被作者于2012-4-16 23:29:04编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/4/17 8:03:00
--  

肯定是不能保存的,因为Fill之后,因为系统知识保存已经修改或新增的数据,Fill的数据等于是加载进来的数据,没有任何修改谈何保存?而且即使保存,也是保存回总公司啊?

 

 

Dim s As String = "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=测试1(东区数据);Data Source=Chinese-f28c28f,1433"
If Connections.TryConnect(s) = True Then
    If Connections.Contains("总公司A") = False Then
        Connections.Add("总公司A",s)
    End If
    Tables("a").fill("select * from {人事档案}","分公司B",False)
    DataTables("a").DataRows.Clear
    DataTables("a").save
    Tables("b").fill("select * from {人事档案}","总公司A",False)
   
    Tables("a").StopRedraw
    For Each dr1 As DataRow In Tables("b").DataTable.DataRows
        Dim dr2 As DataRow = Tables("a").DataTable.AddNew()
        For Each dc As DataCol In Tables("a").DataTable.DataCols
            dr2(dc.Name) = dr1(dc.name)
        Next
    Next
    Tables("a").ResumeRredraw
       
    Dim Result As DialogResult
    Result = messagebox.show("同步完成,是否保存同步的数据至本地?","提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        DataTables("a").save
        DataTables("b").save
    End If
Else
    MessageBox.Show("数据源无法连通!")
End If
e.sender.enabled = False


--  作者:gaoyong30000
--  发布时间:2012/4/17 8:55:00
--  

老大 照您上面的代码    只是分公司B 同步了 总公司A的  a表数据     并保存了总公司A的 b表数据

 

 而分公司B的 b表数据 没有与A公司同步并保存哎

 

我想实现的是 分公司B的 a,b表数据同步总部数据即可

 

[此贴子已经被作者于2012-4-17 9:13:54编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/4/17 8:59:00
--  

我举个例子给你而已,你可以用同样的方法,同步其他数据。


--  作者:gaoyong30000
--  发布时间:2012/4/17 9:14:00
--  

按照您的方法   我得再建立一个分区面板 再放2张表 才行吧 ~


--  作者:狐狸爸爸
--  发布时间:2012/4/17 9:29:00
--  

没有必要,你用的是Fill,可以重复使用那两个Table控件。

如果用SQLCommand的ExcuteReader,一个Table控件就可以解决。

[此贴子已经被作者于2012-4-17 9:30:15编辑过]

--  作者:gaoyong30000
--  发布时间:2012/4/17 10:05:00
--  

sqlcommad?    怎么弄?

 

 


--  作者:gaoyong30000
--  发布时间:2012/4/17 10:25:00
--  

最终的代码   老大您过目一下 有什么不妥  我测试ok!

 

Dim s As String = "Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=测试1(东区数据);Data Source=Chinese-f28c28f,1433"
If Connections.TryConnect(s) = True Then
    If Connections.Contains("华泰内控系统-ERP(东区)") = False Then
        Connections.Add("华泰内控系统-ERP(东区)",s)
    End If
    Tables("数据同步(西)_数据同步(西)Table1").fill("select * from {人事档案}","华泰内控系统-ERP",False)
    DataTables("数据同步(西)_数据同步(西)Table1").DataRows.Clear
    DataTables("数据同步(西)_数据同步(西)Table1").save
    Tables("数据同步(西)_数据同步(西)Table2").fill("select * from {人事档案}","华泰内控系统-ERP(东区)",False)
   
    DataTables("数据同步(西)_数据同步(西)Table1").StopRedraw
    For Each dr1 As DataRow In Tables("数据同步(西)_数据同步(西)Table2").DataTable.DataRows
        Dim dr2 As DataRow = Tables("数据同步(西)_数据同步(西)Table1").DataTable.AddNew()
        For Each dc As DataCol In Tables("数据同步(西)_数据同步(西)Table1").DataTable.DataCols
            dr2(dc.Name) = dr1(dc.name)
        Next
    Next
    DataTables("数据同步(西)_数据同步(西)Table1").ResumeRedraw
    DataTables("数据同步(西)_数据同步(西)Table1").save
    DataTables("数据同步(西)_数据同步(西)Table2").save
   
    Tables("数据同步(西)_数据同步(西)Table1").fill("select * from {授权}","华泰内控系统-ERP",False)
    DataTables("数据同步(西)_数据同步(西)Table1").DataRows.Clear
    DataTables("数据同步(西)_数据同步(西)Table1").save
    Tables("数据同步(西)_数据同步(西)Table2").fill("select * from {授权}","华泰内控系统-ERP(东区)",False)
   
    Tables("数据同步(西)_数据同步(西)Table1").StopRedraw
    For Each dr1 As DataRow In Tables("数据同步(西)_数据同步(西)Table2").DataTable.DataRows
        Dim dr2 As DataRow = Tables("数据同步(西)_数据同步(西)Table1").DataTable.AddNew()
        For Each dc As DataCol In Tables("数据同步(西)_数据同步(西)Table1").DataTable.DataCols
            dr2(dc.Name) = dr1(dc.name)
        Next
    Next
    Tables("数据同步(西)_数据同步(西)Table1").ResumeRedraw
    DataTables("数据同步(西)_数据同步(西)Table1").save
    DataTables("数据同步(西)_数据同步(西)Table2").save
    msgbox("同步成功,请重启系统以便生效")
Else
    MessageBox.Show("数据源无法连通!")
End If
e.sender.enabled = False

[此贴子已经被作者于2012-4-17 10:32:12编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/4/17 10:47:00
--  
呵呵,能测试通过就行