16 12
发新话题
打印

[原创] 【CQ需求实现】实现cq时间预警机制的脚本( 此文章被查看:2893次,被回复:15篇!! )

回复 #10 qiouxinyu 的帖子

你这段代码只是实现了将属于一个人的缺陷发到一个人吧?
   如果A有 缺陷 a1,a2,a3.........
         B有 缺陷 b1,b2,b3....
         C有 缺陷 c1, c2,c3........

  这段代码能实现  将缺陷 a1, a2,a3.......发给A ,且在一封邮件
                 将缺陷  b1,b2,b3......发给B ,且在一封邮件
                 将缺陷  c1,c2,c3.......发给C ,且在一封邮件

    ?????????

© 本文为 ty1227 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

我想实现定时发邮件功能,即到时间做邮件通知提醒。不知道能不能实现?请大家指导!

© 本文为 scm_china 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

回复 #12 scm_china 的帖子

那你可以把这个脚本定时去执行
旧OK了

© 本文为 ljs53 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

回复 楼主 的帖子

测试了一下,收到的邮件数目不对
我有6条符合条件的记录,第1条发了1遍,第2条发了2遍,。。。。
第6条发了6遍,所以我总共收到21封邮件
不知道楼主有没有仔细验证过这个方法,是不是逻辑上写的不是十分严密,请高手赐教。

[ 本帖最后由 没有蛀牙 于 2008-5-9 15:50 编辑 ]

© 本文为 没有蛀牙 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
i生活,i音乐!

TOP

经过yunshan指点
把脚本改成如下即可:

Const booOp_and  = 1          ' and
Const comOp_eq   = 1          ' =
Const comOp_le   = 4          ' <=
Const SUCCESS    = 1          ' 存在下一个记录

' 以下常量根据实用应用环境设置
Const inte_date  = -2         ' 超过天数
Const worn_sta   = "Assigned" ' 预警状态
Const login_name = "admin"    ' 管理员登录名
Const password   = ""
Const db_name    = "db"     ' 要访问的数据库名


set sessionObj = CreateObject("CLEARQUEST.SESSION")

' 请确保你的帐号能够访问目标数据库,下面的注释是UserLogon的函数原型
' session.UserLogon login_name, password, database_name, session_type, database_set
sessionObj.UserLogon login_name, password, db_name, AD_PRIVATE_SESSION, ""

' 建立类型记录查询
Set querydef = sessionObj.BuildQuery("defect")

' 若邮件内容还需要其他该记录的字段,则在这里添加
querydef.BuildField("ID")
querydef.BuildField("Owner.email")
' 设置过滤条件
Set operator = querydef.BuildFilterOperator(booOp_and)

' 当前状态必须是Assigned且历史记录中新状态也为Assigned,
' 用这条记录的状态转换时间(action_timestamp)对比当前时
' 间,过滤出超过两天(包含两天)的处理人邮件
operator.BuildFilter "State", comOp_eq, worn_sta
operator.BuildFilter "history.new_state", comOp_eq, worn_sta

' 注意,最后一个参数必须是字符串,不能直接用日期否则sql语句解析无效
operator.BuildFilter "history.action_timestamp", comOp_le, CStr(DateAdd("d",inte_date, Now))

Set resultSetObj = sessionObj.BuildResultSet(querydef)  
resultSetObj.Execute               

' 注意,判断是否有记录时不能用AD_SUCCESS,因为这是独立运行的脚本,对常量不能正确识别
Do While  resultSetObj.MoveNext = SUCCESS  
    Set OleMailMsg = CreateObject("PAINET.MAILMSG")
        ' 添加邮件地址
        OleMailMsg.AddTo resultSetObj.GetColumnValue(2)

        ' 设定邮件标题
        OleMailMsg.SetSubject "CQ有情提示"

        ' 设定邮件内容
        OleMailMsg.SetBody "ID为" _
                & resultSetObj.GetColumnValue(1) _
                & "的故障已经分配给您超过" _
                & CStr(Abs(inte_date)) _
                & "天,请立即处理,谢谢!"

        ' 发送邮件
        OleMailMsg.Deliver
Set OleMailMsg = Nothing
Loop
本帖最近评分记录

© 本文为 没有蛀牙 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员
i生活,i音乐!

TOP

好東西 正需要此一功能來加強
謝謝分享

© 本文为 f168 所有,未经同意,请勿转载
©如该文侵犯了您的版权,请联系管理员

TOP

 16 12
发新话题