以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- [求助]计划管理代码出错(已解决) (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=20979)
|
-- 作者:yyzlxc
-- 发布时间:2012/6/26 11:37:00
-- [求助]计划管理代码出错(已解决)
在计划管理建一个计划,执行间隔为5秒(即5000毫秒),代码为:
Dim flt As String Dim drs As List(Of DataRow) flt = "接收者 = \'" & _UserName & "\' Or 接收者 = \'" & _UserGroup & "\' And 接收时间 Is Null" drs = DataTables("网内通讯").AppendLoad(flt, False) If drs.Count > 0 Then Dim btn As RibbonMenu.Button \'点击网络短信按钮 btn = RibbonTabs("系统菜单").Groups("用户").Items("网络短信") btn.PerformClick() End If
当收到新信息时,能够执行点击网络短信按钮的代码,切换到网内通讯表,但是老是跳出错误提示,不知问题出在哪里请各位老师指教,谢谢!!
此主题相关图片如下:h.png
下面是网络短信按钮的代码,可以单独正常操作。
\'菜单网络短信按钮代码 Forms("网络短信").Show() MainTable = Tables("网内通讯") Dim yhm As String = "" & _UserName Dim hm As String If yhm <> "开发" hm = "a" Else hm = "b" End If Dim Filter As String Select Case hm Case "a" Filter = "接收者 = \'" & _UserName & "\' Or 接收者 = \'" & _UserGroup & "\' Or 发送者 = \'" & _UserName & "\'" Case Else Filter = "" \'其他用户记载所有行 End Select DataTables("网内通讯").LoadFilter = Filter DataTables("网内通讯").Load() Dim drs As List(of DataRow) = DataTables("网内通讯").Select("接收者 = \'" & _UserName & "\' Or 接收者 = \'" & _UserGroup & "\' And 接收时间 Is Null") Dim cmb As New SQLCommand Dim dd As Date cmb.C \'外部数据源 cmb.CommandText = "Select GetDate()" \'服务器时间 dd = cmb.ExecuteScalar() If drs.Count > 0 Then For Each dr As DataRow In drs dr("接收时间") = dd Next DataTables("网内通讯").Save() End If Tables("网内通讯").Sort = "发送时间" Tables("网内通讯").AutoSizeCols() Tables("网内通讯").Cols("信息内容").Width= 300 Dim n As Integer = Tables("网内通讯").Rows.Count If n > 500 Then With DataTables("网内通讯") .StopRedraw For i As Integer = 1 To 100 DataTables("网内通讯").DataRows(0).Delete() Next .ResumeRedraw End With DataTables("网内通讯").Save() End If With Tables("网内通讯") .Position = .Rows.Count - 1 End With Tables("网内通讯").Cols("信息内容").OpenWindow()
[此贴子已经被作者于2012-6-26 15:58:24编辑过]
|
-- 作者:狐狸爸爸
-- 发布时间:2012/6/26 12:31:00
--
这是appendload的说明: http://www.foxtable.com/help/topics/2276.htm
其中重要说明有两点: 1、必须确保即将追载的行,并不存在于表中,也就是这些行之前并未加载,否则将报错。 2、AppendLoad适合追载少量数据,大量数据一般用Load重新加载。 你的问题就出在第一点。
单独操作可以,是因为你单独的时候,你将新追载的数据用代码设置的接受时间,这样下次就不会追载这些数据了,而你的计划缺少了这关键的一步。
[此贴子已经被作者于2012-6-26 12:34:41编辑过]
|
-- 作者:yyzlxc
-- 发布时间:2012/6/26 12:58:00
--
谢谢狐爸老师的指教,好像还不太明白,在计划代码中还应该增加哪些内容,还请指教,谢谢!!
|
-- 作者:狐狸爸爸
-- 发布时间:2012/6/26 13:04:00
--
你接收按钮的代码是怎么写的,计划的代码就怎么写.
|
-- 作者:yyzlxc
-- 发布时间:2012/6/26 14:26:00
--
谢谢狐爸老师的指教,将接收代码加上后,仍然出错,请狐爸老师指教,问题出在哪里,代码应该如何修改,谢谢!!
此主题相关图片如下:i.png
代码如下:
\'收到信息自动打开网络短信 Dim flt As String Dim drs As List(Of DataRow) flt = "接收者 = \'" & _UserName & "\' Or 接收者 = \'" & _UserGroup & "\' And 接收时间 Is Null" drs = DataTables("网内通讯").AppendLoad(flt, False) If drs.Count > 0 Then MainTable = Tables("网内通讯") Dim yhm As String = "" & _UserName Dim hm As String If yhm <> "开发" hm = "a" Else hm = "b" End If Dim Filter As String Select Case hm Case "a" Filter = "接收者 = \'" & _UserName & "\' Or 接收者 = \'" & _UserGroup & "\' Or 发送者 = \'" & _UserName & "\'" Case Else Filter = "" \'其他用户记载所有行 End Select DataTables("网内通讯").LoadFilter = Filter DataTables("网内通讯").Load() Dim cmb As New SQLCommand Dim dd As Date cmb.C \'外部数据源 cmb.CommandText = "Select GetDate()" \'服务器时间 dd = cmb.ExecuteScalar() If drs.Count > 0 Then For Each dr As DataRow In drs dr("接收时间") = dd Next DataTables("网内通讯").Save() End If Tables("网内通讯").Sort = "发送时间" Tables("网内通讯").AutoSizeCols() Tables("网内通讯").Cols("信息内容").Width= 300 With Tables("网内通讯") .Position = .Rows.Count - 1 End With Tables("网内通讯").Cols("信息内容").OpenWindow() End If
|
-- 作者:狐狸爸爸
-- 发布时间:2012/6/26 14:40:00
--
大概如此,自行调整:
Dim sql As String Dim drs As List(Of DataRow) sql = "Seelect Count(*) From {网内通讯的后台名称} Where 接收者 = \'" & _UserName & "\' Or 接收者 = \'" & _UserGroup & "\' And 接收时间 Is Null" Dim cmd As new SQLCommand cmd.CommandText= sql cmd.Connection Name = "数据源名称" Dim cnt As Integer = cmd.ExecuteScalar If cnt > 0 Then Dim btn As RibbonMenu.Button \'点击网络短信按钮 btn = RibbonTabs("系统菜单").Groups("用户").Items("网络短信") btn.PerformClick() End If
|
-- 作者:yyzlxc
-- 发布时间:2012/6/26 15:08:00
-- [求助]目录树的动态更新
好像还不行,不断跳出错误提示,还请狐爸老师费神看看,谢谢狐爸老师!!
此主题相关图片如下:j.png
Dim sql As String Dim drs As List(Of DataRow) sql = "Seelect Count(*) From {网内通讯} Where 接收者 = \'" & _UserName & "\' Or 接收者 = \'" & _UserGroup & "\' And 接收时间 Is Null" Dim cmd As new SQLCommand cmd.CommandText= sql cmd.C \'外部数据源 Dim cnt As Integer = cmd.ExecuteScalar If cnt > 0 Then Dim btn As RibbonMenu.Button \'点击网络短信按钮 btn = RibbonTabs("系统菜单").Groups("用户").Items("网络短信") btn.PerformClick() End If
[此贴子已经被作者于2012-6-26 15:08:38编辑过]
|
-- 作者:狐狸爸爸
-- 发布时间:2012/6/26 15:27:00
--
只是提供一个思路,可能有些手误,细节你要自己调整:
Dim sql As String Dim drs As List(Of DataRow) sql = "Select Count(*) From {网内通讯} Where 接收者 = \'" & _UserName & "\' Or 接收者 = \'" & _UserGroup & "\' And 接收时间 Is Null" Dim cmd As new SQLCommand cmd.CommandText= sql cmd.C \'外部数据源 Dim cnt As Integer = cmd.ExecuteScalar If cnt > 0 Then Dim btn As RibbonMenu.Button \'点击网络短信按钮 btn = RibbonTabs("系统菜单").Groups("用户").Items("网络短信") btn.PerformClick() End If
|
-- 作者:yyzlxc
-- 发布时间:2012/6/26 15:58:00
--
谢谢狐爸老师,代码出错问题已解决,再次感谢狐爸老师的热情指教!!
|