以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]多用户下,窗口控件绑定的数据同步问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=146710)

--  作者:fengwenliuyan
--  发布时间:2020/2/29 19:21:00
--  [求助]多用户下,窗口控件绑定的数据同步问题?
窗口“订单表窗口”中有一个控件,绑定显示“产品表”中的客户名相同的行的"价格"列,
当用户A,修改了其中一行的"价格"列后,
希望用户B,在选定该行时,此控件中的“价格”也同步变化,应该怎么做?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb


[此贴子已经被作者于2020/2/29 19:32:34编辑过]

--  作者:fengwenliuyan
--  发布时间:2020/2/29 19:33:00
--  回复:(fengwenliuyan)[求助]多用户下,窗口控件绑定...
密码都是888
--  作者:狐狸爸爸
--  发布时间:2020/3/1 15:50:00
--  
Foxtable的帮助处处是宝贝,不要错过:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目78.foxdb


这是更新一列的做法,如果要多列:

更有效率的:


--  作者:fengwenliuyan
--  发布时间:2020/3/1 17:32:00
--  回复:(狐狸爸爸)Foxtable的帮助处处是宝贝,不要错...
您发的项目我试过,改成多列的后,发现,还是需要换行后再同步当前表才能刷新产品表的指定列,但是若是在当前表同步就不成了。
而且,还有个需求,
我明明在CurrentChanged事件中写了新增同步代码:
Dim cr As Row = e.Table.Current
If cr IsNot Nothing Then
    Dim idx As Integer = Tables("产品表").FindRow("客户 = \'" & cr("客户") & "\'")
    If idx >= 0 Then
        Tables("产品表").Position = idx
    End If
End If

,且窗口表的CurrentChanged事件也写了:
\'SystemReady = False
If e.Table.current Is Nothing Then Return
systemready = False

\'换行时,同客户列同步:
Tables("产品表").filter = ""
Dim i = Tables("产品表").FindRow("客户 = \'" & e.Table.current("客户") & "\'")
If i>=0 Then
    Tables("产品表").position = i
Else
    Tables("产品表").filter = "1=2"
End If

systemready = True

但就是做不到新增行的同步新增?
求帮助?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目80.foxdb



--  作者:有点蓝
--  发布时间:2020/3/1 23:17:00
--  
4楼的用法仅适合单机。

首先用户a的修改价格后需要保存,然后用户b需要重新加载产品表数据。数据刷新后4楼才有效,简单的先加载一下数据
……
\'换行时,同客户列同步:
DataTables("产品表").Load
Tables("产品表").filter = ""
Dim i = Tables("产品表").FindRow("客户 = \'" & e.Table.current("客户") & "\'")

--  作者:fengwenliuyan
--  发布时间:2020/3/2 14:54:00
--  回复:(有点蓝)4楼的用法仅适合单机。首先用户a的修...
这样设置后,发现同步后的第一次换行,需要很长时间?
应该怎么避免迟缓?

--  作者:有点蓝
--  发布时间:2020/3/2 15:33:00
--  
只加载这行数据

Tables("产品表").filter = ""
Dim i = Tables("产品表").FindRow("客户 = \'" & e.Table.current("客户") & "\'")
if i=-1 then
dataTables("产品表").appendend("客户 = \'" & e.Table.current("客户") & "\'")
end if
i = Tables("产品表").FindRow("客户 = \'" & e.Table.current("客户") & "\'")
If i>=0 Then
    Tables("产品表").position = i
Else
    Tables("产品表").filter = "1=2"
End If

--  作者:fengwenliuyan
--  发布时间:2020/3/2 15:52:00
--  回复:(有点蓝)只加载这行数据Tables("产品表").fil...

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

--  作者:有点蓝
--  发布时间:2020/3/2 15:59:00
--  
dataTables("产品表").appendload("客户 = \'" & e.Table.current("客户") & "\'")
--  作者:fengwenliuyan
--  发布时间:2020/3/2 16:18:00
--  回复:(有点蓝)dataTables("产品表").appendload("客...
试了,还是没能提速?