以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  AFTERLOAD事件的调整问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=92062)

--  作者:douglas738888
--  发布时间:2016/10/25 11:49:00
--  AFTERLOAD事件的调整问题

请教老师,以下代码在AFTERLOAD下打开窗口执行,用局域网,如何实现 计算机A 发布指令后, 计算机B能及时收到 就是LABEL的数字及时变化

 

目前,计算机B要重新登录后才能得到计算机A发布的指令,AFTERLOAD代码应该放在哪个属性下

(服务器的表里已经有指令数据了)

 

AFTERLOAD

Dim Filter181 As String = ""
Dim Count181 As Double
Count181 = DataTables("投标策划安排意见").Compute("Count(信息编号)","执行人 Like  \'%" & _UserName & "%\' and (收阅确认 not Like \'%" & _UserName & "%\' or 收阅确认 Is null)")
Dim lbl181 As WinForm.Label
lbl181 = e.Form.Controls("Label181")
Application.DoEvents()
lbl181.Text = "" & Count181 & ""

 

TIMETICK

Dim pbx181 As WinForm.PictureBox = e.Form.Controls("PictureBox37")
Dim lbl181 As WinForm.Label = e.Form.Controls("Label181")
If lbl181 IsNot Nothing Then
   Dim Count181 As Double
   Count181 = Tables("投标策划安排意见").DataTable.Compute("Count(信息编号)","执行人 Like  \'%" & _UserName & "%\' and (收阅确认 not Like \'%" & _UserName & "%\' or 收阅确认 Is null)")
   If Count181 = 0 Then
        pbx181.ImageFile = "GGreen.ico" \'显示图片
    ElseIf Count181 >= 1 Then
        pbx181.ImageFile= "RRed.ico" \'显示图片
    End If
lbl181.Text = "" & Count181 & ""
   \'End If
End If

[此贴子已经被作者于2016/10/25 11:51:05编辑过]

--  作者:有点蓝
--  发布时间:2016/10/25 12:00:00
--  
TIMETICK
Dim pbx181 As WinForm.PictureBox = e.Form.Controls("PictureBox37")
Dim lbl181 As WinForm.Label = e.Form.Controls("Label181")
Dim Count181 As Double
Count181 = Tables("投标策划安排意见").DataTable.Compute("Count(信息编号)","执行人 Like  \'%" & _UserName & "%\' and (收阅确认 not Like \'%" & _UserName & "%\' or 收阅确认 Is null)")
If Count181 = 0 Then
    pbx181.ImageFile = "GGreen.ico" \'显示图片
ElseIf Count181 >= 1 Then
    pbx181.ImageFile= "RRed.ico" \'显示图片
End If
lbl181.Text = "" & Count181 & ""
Application.DoEvents()


--  作者:douglas738888
--  发布时间:2016/10/25 13:56:00
--  

老师,加了Application.DoEvents() 还是原来的问题,计算机B只有重新登录后LABEL的数值才会有变化,TIMETICK不会及时同步反应代码功能

 

 

[此贴子已经被作者于2016/10/25 14:11:53编辑过]

--  作者:18523982317
--  发布时间:2016/10/25 13:58:00
--  
。。。。
[此贴子已经被作者于2016/10/25 13:58:32编辑过]

--  作者:有点蓝
--  发布时间:2016/10/25 14:26:00
--  
TIMETICK启用了没有?

图片点击可在新窗口打开查看

--  作者:douglas738888
--  发布时间:2016/10/25 14:59:00
--  
单机测试时就都启用了,在计算机A上发布指令后,切换登录用户后LABEL的值能变电,就是在计算机B上无法变动,感觉是要重新加载表LABEL的值才会变化
--  作者:有点蓝
--  发布时间:2016/10/25 15:39:00
--  
TIMETICK
Dim pbx181 As WinForm.PictureBox = e.Form.Controls("PictureBox37")
Dim lbl181 As WinForm.Label = e.Form.Controls("Label181")
Dim Count181 As Double
Count181 = Tables("投标策划安排意见").DataTable.Compute("Count(信息编号)","执行人 Like  \'%" & _UserName & "%\' and (收阅确认 not Like \'%" & _UserName & "%\' or 收阅确认 Is null)")
If Count181 = 0 Then
    pbx181.ImageFile = "GGreen.ico" \'显示图片
ElseIf Count181 >= 1 Then
    pbx181.ImageFile= "RRed.ico" \'显示图片
End If
lbl181.Text = "" & Count181 & ""
msgbox(Count181) ‘看能不能弹出内容’
Application.DoEvents()

另外表数据要保存,查出来的数据才会变化。最后如果这些都是内部数据表,放弃吧

--  作者:douglas738888
--  发布时间:2016/10/25 15:57:00
--  

老师不是内部表,启动项目后从服务器上加载进来的。      启动项目后弹出的值为0 

 

保存:在计算机A发指令的时候,通过BUTTON已经保存表数据了,保存后,服务器上SQLSERVER里面的表也及时增加行和数据了,经测试就是要重新加载表才能在

 

计算机B上变电数值。

[此贴子已经被作者于2016/10/25 16:01:02编辑过]

--  作者:有点蓝
--  发布时间:2016/10/25 16:32:00
--  
有没有每隔一段时间就弹出msgbox(Count181
--  作者:douglas738888
--  发布时间:2016/10/25 16:52:00
--  

msgbox(Count181) ‘看能不能弹出内容’加入这句代码后,一启动登录就无限的不断的出现小窗口显示值为0,只有重新启动计算机。

 

测试过程中,又发现,如果通过按键重新加载这张表后,数字可以变化。

 

相当于:第一次启动项目登录的时候,所COUNT的行为0,LABEL也显示0 ;   当计算机A增加行发布指令后,数据库里面的表也同步增加行和数据了,

 

            但是此时,计算机B已先于计算机A启动项目登录,所加载的表还没有计算机A后增加的行,不能被COUNT到,只要计算机B重新登录后,才加载新行进来被COUNT

 

           这时的LABEL才统计行。

 

问题:应该是后台的数据表的变动,怎样能及时同步加载到每台计算机上。