以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  系统要怎么才实现各客户端修改数据后,其它客户端即时看得见??  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28568)

--  作者:kmzb56
--  发布时间: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
--  发布时间:2013/2/3 13:34:00
--  
保存一个。在计划管理里,对所有打开的非编辑窗口重新加载。
--  作者:lin_hailun
--  发布时间:2013/2/3 15:17:00
--  
 如果你想用系统的时间,也可以嘛,直接

 select date() 可以查询得到。

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

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

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

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

--  作者:kmzb56
--  发布时间:2013/2/6 14:51:00
--  

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

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

--  作者:lin_hailun
--  发布时间:2013/2/6 16:03:00
--  
 呃……修改行的时候,填入修改的时间,保存到数据库的时候这一行的修改时间就是最新的了。

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

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

 

--  作者:kmzb56
--  发布时间:2013/2/17 9:38:00
--  
在么?请问能不能弄一下完整的例子?
--  作者:lin_hailun
--  发布时间:2013/2/17 10:17:00
--  
以下是引用kmzb56在2013-2-17 9:38:00的发言:
在么?请问能不能弄一下完整的例子?


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

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

--  作者:zcw728909
--  发布时间:2013/2/18 17:44:00
--  

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


--  作者:狐狸爸爸
--  发布时间:2013/2/18 18:07:00
--  

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


--  作者:kmzb56
--  发布时间:2013/3/15 22:23:00
--  
        最近太忙,好久没上论坛了,按狐爸这种方式好像可以,但问题的关键是我的是在一个窗口上,请问怎么实现?