Foxtable(狐表)用户栏目专家坐堂 → [求助]OpenQQ即时高效同步数据


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

主题:[求助]OpenQQ即时高效同步数据

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


加好友 发短信
等级:小狐 帖子:350 积分:2927 威望:0 精华:0 注册:2015/4/23 19:53:00
[求助]OpenQQ即时高效同步数据  发帖心情 Post By:2016/2/29 10:06:00 [只看该作者]

OpenQQ即时高效同步数据

 

按照教程做完,可以实现同步数据,但是A表有很多子表,子表的数据怎样同时同步数据。谢谢


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 10:08:00 [只看该作者]

 呃,每个表修改后都同步,就不存在你问的问题。

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


加好友 发短信
等级:小狐 帖子:350 积分:2927 威望:0 精华:0 注册:2015/4/23 19:53:00
  发帖心情 Post By:2016/2/29 11:54:00 [只看该作者]

Dim msg As String = e.Message
If msg.StartsWith("U#") Then '表示修改了某行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        Dim dr As DataRow = DataTables(pts(1)).Find("[_Identify] = " & pts(2))
        If dr IsNot Nothing  Then
            Dim  fl As  String =  "订单编号 = '"   &  dr("订单编号")  &  "'"
            dr.Load() '重新加载此行
            LockBaseMainForm() '锁定主窗口            
            DataTables("裁床单").StopRedraw '停止绘制订单明细
            DataTables("裁床单").RemoveFor(fl) '移除当前订单的订单明细
            DataTables("裁床单").Appendload(fl) '追载当前订单的订单明细
            DataTables("裁床单").ResumeRedraw '恢复绘制订单明细


            UnLockBaseMainForm()  '解锁主窗口
        End If
    End  If
ElseIf msg.StartsWith("A#") Then '表示增加了行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        DataTables(pts(1)).AppendLoad("[_Identify] = " &  pts(2)) '追载新增加的行.
    End  If
ElseIf msg.StartsWith("D#") Then '表示删除了行
    Dim pts() As String = msg.Split("#")
    If pts.Length = 3 Then
        DataTables(pts(1)).RemoveFor("[_Identify] = "  & pts(2)) '移除行
    End  If
End  If

 

我刚才用这方法也可以子表即时同步了。

但是在同步其它表时,也在重新加载子表,但是其它表没有“裁床单”子表,我想写个判断,

要同步的表 = 生产进度表 时执行代码1 否则执行代码2.请问这个判断怎样写。

[此贴子已经被作者于2016/2/29 13:34:21编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 14:57:00 [只看该作者]

没必要这样做。

 

每一个表,如果新增或修改以后都同步,就没问题啊。你子表修改也会同步啊。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 14:59:00 [只看该作者]

如果要判断表名,这样写

 

If pts(1) = "生产进度表" Then

 

Else

 

End If


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


加好友 发短信
等级:小狐 帖子:350 积分:2927 威望:0 精华:0 注册:2015/4/23 19:53:00
  发帖心情 Post By:2016/2/29 15:26:00 [只看该作者]


Tables("生产进度表").Current.Save()

DataTables("制单数明细").Save  ' 子表
DataTables("裁床单").Save   ‘ 子表

        '========以下代码为即时同步数据=========
        Dim r As Row = Tables("生产进度表").Current
        Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
        r.Save()
        '一定要在保存后合成信息,因为新增行的主键在保存后才生成
        Dim msg As String = p &  "生产进度表" & "#" & r("_Identify")
        For Each bd As QQBuddy In QQClient.Buddies
            If bd.Online Then
                QQClient.Send(bd.name, msg)
            End If
        Next
        '========以上代码为即时同步数据=========

 

父表的先定行和两个子表在一个按钮内保存   按照您的思路   请问代码要怎样改  谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 15:44:00 [只看该作者]

修改了的所有表、所有数据行,都要合成信息发送给每一个人。

 

 


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


加好友 发短信
等级:小狐 帖子:350 积分:2927 威望:0 精华:0 注册:2015/4/23 19:53:00
  发帖心情 Post By:2016/2/29 16:05:00 [只看该作者]

意思明白 

 

我的意思是这里同时保存了3个表  以下代码在一个代码窗口写3次写不了



        Dim r As Row = Tables("生产进度表").Current
        Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
        r.Save()
        '一定要在保存后合成信息,因为新增行的主键在保存后才生成
        Dim msg As String = p &  "生产进度表" & "#" & r("_Identify")
        For Each bd As QQBuddy In QQClient.Buddies
            If bd.Online Then
                QQClient.Send(bd.name, msg)
            End If
        Next
      


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/29 16:16:00 [只看该作者]


For Each dr As DataRow In DataTables("制单数明细").datarows
    If dr.RowState <> DataRowState.Unchanged Then
        Dim p As String = IIF(dr.RowState = DataRowState.Added, "A#", "U#")
        dr.Save()
        '一定要在保存后合成信息,因为新增行的主键在保存后才生成
        Dim msg As String = p &  dr.DataTable.Name & "#" & dr("_Identify")
        For Each bd As QQBuddy In QQClient.Buddies
            If bd.Online Then
                QQClient.Send(bd.name, msg)
            End If
        Next
    End If
Next

For Each dr As DataRow In DataTables("裁床单").datarows
    If dr.RowState <> DataRowState.Unchanged Then
        Dim p As String = IIF(dr.RowState = DataRowState.Added, "A#", "U#")
        dr.Save()
        '一定要在保存后合成信息,因为新增行的主键在保存后才生成
        Dim msg As String = p &  dr.DataTable.Name & "#" & dr("_Identify")
        For Each bd As QQBuddy In QQClient.Buddies
            If bd.Online Then
                QQClient.Send(bd.name, msg)
            End If
        Next
    End If
Next

Dim r As Row = Tables("生产进度表").Current
If r IsNot Nothing Then
    Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
    r.Save()
    '一定要在保存后合成信息,因为新增行的主键在保存后才生成
    Dim msg As String = p &  "生产进度表" & "#" & r("_Identify")
    For Each bd As QQBuddy In QQClient.Buddies
        If bd.Online Then
            QQClient.Send(bd.name, msg)
        End If
    Next
End If


 回到顶部