Foxtable(狐表)用户栏目专家坐堂 → [求助]计划管理代码出错(已解决)


  共有8121人关注过本帖树形打印复制链接

主题:[求助]计划管理代码出错(已解决)

帅哥哟,离线,有人找我吗?
yyzlxc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]计划管理代码出错(已解决)  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/6/26 12:58:00 [只看该作者]

谢谢狐爸老师的指教,好像还不太明白,在计划代码中还应该增加哪些内容,还请指教,谢谢!!

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/26 13:04:00 [只看该作者]

你接收按钮的代码是怎么写的,计划的代码就怎么写.


 回到顶部
帅哥哟,离线,有人找我吗?
yyzlxc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By: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


 


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
[求助]目录树的动态更新  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1530 积分:10633 威望:0 精华:0 注册:2008/9/24 11:16:00
  发帖心情 Post By:2012/6/26 15:58:00 [只看该作者]

谢谢狐爸老师,代码出错问题已解决,再次感谢狐爸老师的热情指教!!

 回到顶部