以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  用AppendLoad追载数据后再用点”同步当前表“会卸载已加载的数据  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=72345)

--  作者:guning007
--  发布时间:2015/7/28 17:35:00
--  用AppendLoad追载数据后再用点”同步当前表“会卸载已加载的数据

为了避免不同用户同时添加供应商时的冲突,我想采用如下办法。


做一个按钮叫“新增供应商”,代码如下:


Dim id As Integer = DataTables("供应商").Compute("Max(_Identify)")

Dim Filter As String = "[_Identify] > " & id

DataTables("供应商").AppendLoad(Filter, False)

Tables("供应商").AddNew()

Tables("供应商").Save()


我的想法是:


先追载新数据,如果其他用户已经新增了行,就会出现在Table中

然后在新增行

然后立刻保存新增的行,让别的用户可以追载到这一个新增的行


运行之后其他都好,但是发现一个问题,不能去点系统菜单自带的”同步当前表“,否则表中已经加载的数据会被卸载掉,只剩下刚刚新增的行。


百思不得其解,所以发帖求助。


谢谢!





--  作者:大红袍
--  发布时间:2015/7/28 17:38:00
--  
 你的BeforeLoad事件写了代码?注释掉看看。
--  作者:guning007
--  发布时间:2015/7/28 18:08:00
--  
红老师您好,我的BeforeLoadOutterTable事件没有写代码。

我又测试了一次,同步当前表之后,表中只剩下我新增行的最后一行(我新增了三行)。

再新增一行,然后同步一次,又剩下最后新增的那一行。

被逼无奈,我只好把代码改成如下暂时先对付着,希望能找到解决方法。

DataTables("供应商").Load
Tables("供应商").AddNew()
Tables("供应商").Save()
Forms("供应商信息管理").Open

但是这样每次要重新加载整个供应商表,还好目前表还不大。

--  作者:大红袍
--  发布时间:2015/7/28 18:28:00
--  

表属性的 BeforeLoad 和 AfterLoad 事件是否写了代码。

 

msgbox(DataTables("供应商").LoadFilter) 看看


--  作者:guning007
--  发布时间:2015/7/28 18:32:00
--  
这两个地方也没有写代码。

我试了在命令窗口执行您给的  msgbox(DataTables("供应商").LoadFilter)

弹窗显示内容是空的。

--  作者:大红袍
--  发布时间:2015/7/28 18:38:00
--  

Dim id As Integer = DataTables("供应商").Compute("Max(_Identify)")

Dim Filter As String = "[_Identify] > " & id

DataTables("供应商").AppendLoad(Filter, False)

Tables("供应商").AddNew()

Tables("供应商").Save()


DataTables("供应商").LoadFilter = DataTables("供应商").LoadFilter

--  作者:guning007
--  发布时间:2015/7/28 18:47:00
--  
Yes! 谢谢红老师,这次数据都回来了。

是不是LoadFilter被Appendload的Filter给干扰了? DataTables("供应商").LoadFilter = DataTables("供应商").LoadFilter让LoadFilter还原,红老师果然厉害。

多谢!