Foxtable(狐表)用户栏目专家坐堂 → 系统要怎么才实现各客户端修改数据后,其它客户端即时看得见??


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

主题:系统要怎么才实现各客户端修改数据后,其它客户端即时看得见??

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


加好友 发短信
等级:二尾狐 帖子:528 积分:5034 威望:0 精华:0 注册:2012/4/6 19:31:00
系统要怎么才实现各客户端修改数据后,其它客户端即时看得见??  发帖心情 Post By:2013/2/3 11:53:00 [只看该作者]

      我想请教大家一个问题,一个系统用外部数据源,有多个客户端,我想让每个客户端的数据改后,其它客户端用计载管理的追载方式得到最近的修改,请问用什么方案和思路?说明一下,要即时更的的显示在客户端上的表是一个窗口副表。
    昨天跟狐表的宠工讨论了一下,他做了一个列子,有些还不太理解,也不能真正的实现,发上来求解,今天他不在,而我只有周未空些,只有先贴在论里让大家思考?求解。

   我相信这种需求有很多系统都要要,而且代码有些类通,请各位多出思路,有完整的例子就更好。!!!!!谢谢了!我做的系统要完了,有很多都是大家的思路!!代码如下::


项目事件

 

LoadUserSetting

 

Forms("窗口1").Open()

 

计划管理

 

计划1

 

Dim cmd As New SQLCommand

Dim dt As DataTable

cmd.C

cmd.CommandText = "Select top 1 * From {操作记录} Where [更新时间] > '" & GXTime & "'"

dt = cmd.ExecuteReader

If dt.DataRows.Count = 1 Then

    GXTime =  dt.DataRows(0)("更新时间")

    DataTables(dt.DataRows(0)("表名")).Load()  这里不理解!!!! 可否改成行加载,或者追载

    DataTables("操作记录").Load()    这里不理解!!!!应该可以改成行加载或者追载这样可以减小带宽和计算时间,另外可以不影响光标移动。。

    StatusBar.Message2 = dt.DataRows(0)("表名") & dt.DataRows(0)("更新时间")

End If

StatusBar.Message3 = GXTime

 

计划2

 

StatusBar.Message1= Date.Now()

 

表事件

 

A_DataColChanged

 

If e.DataCol.Name <>"更新时间" Then

    Dim r As Row = Tables("操作记录").AddNew

    r("表名") = e.DataTable.Name

    r("字段") = e.DataCol.Name

    r("更新时间") = Date.Now() 为啥用系统时间?不用服务器时间?

    r.Save()

End If

 

窗口表事件

 

窗口与控件事件

 

自定义函数

 

全局代码

 

Public GXTime As String = Date.Now().Tostring()  为啥用系统时间?不用服务器时间?

 

 

菜单事件

 

 





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


加好友 发短信
等级:狐神 帖子:6886 积分:43605 威望:0 精华:0 注册:2009/3/2 14:07:00
  发帖心情 Post By:2013/2/3 13:34:00 [只看该作者]

保存一个。在计划管理里,对所有打开的非编辑窗口重新加载。

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/3 15:17:00 [只看该作者]

 如果你想用系统的时间,也可以嘛,直接

 select date() 可以查询得到。

---------------------------------------------------

 庞工给你的是加载整个表,如果你只是想加载某些行的话,得清楚你要加载被修改的哪些行,对于这些行,如果标记才能让它们和其他行不同,然后客户端根据这些不同去追截数据。

 说一种方法吧,比如加一列,修改时间列,比较客户端和数据库修改时间列的大小,就可以决定是否加载这一行了。

 也就是 datatables("xxx").loadfilter = "xxxx"

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


加好友 发短信
等级:二尾狐 帖子:528 积分:5034 威望:0 精华:0 注册:2012/4/6 19:31:00
  发帖心情 Post By:2013/2/6 14:51:00 [只看该作者]

最近几天没上网,哥哥:能不能做一个列了呀?或者再说具体点。

[此贴子已经被作者于2013-2-6 14:51:23编辑过]

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/6 16:03:00 [只看该作者]

 呃……修改行的时候,填入修改的时间,保存到数据库的时候这一行的修改时间就是最新的了。

 各个客户端,如果是旧的数据,比较一下,就知道了。

 也就是,使用行加载的方法,遍历行,比较后台数据库的修改时间,决定这一行是否重新加载。

 

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


加好友 发短信
等级:二尾狐 帖子:528 积分:5034 威望:0 精华:0 注册:2012/4/6 19:31:00
  发帖心情 Post By:2013/2/17 9:38:00 [只看该作者]

在么?请问能不能弄一下完整的例子?

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/2/17 10:17:00 [只看该作者]

以下是引用kmzb56在2013-2-17 9:38:00的发言:
在么?请问能不能弄一下完整的例子?


其实你这种,应该是你做一个例子出来,然后在你例子上修改的。

把你的实际问题,把你的实际应用,做成例子,说明要达到的效果,发上来。

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


加好友 发短信
等级:等待验证 帖子:3855 积分:20692 威望:0 精华:5 注册:2012/6/21 14:03:00
  发帖心情 Post By:2013/2/17 10:50:00 [只看该作者]

用户已被锁定

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2013/2/18 17:44:00 [只看该作者]

可以在窗口中放个刷新按钮,点击后再重新加载,个人感觉做计划管理对系统负担太重


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/2/18 18:07:00 [只看该作者]

其实就用加载树,单击上一页,下一页,看到的都是最新的数据,这样就行了。


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