发新话题
打印

[已解决] 脚本执行出错:记录标识未以已知数据库的名称开始( 此文章被查看:343次,被回复:6篇!! )

本主题由 yunshan 于 2008-4-11 18:03 关闭

脚本执行出错:记录标识未以已知数据库的名称开始

想要实现一个功能,即提交一个记录时取其时间赋值给其它同名用户记录的某个时间字段,但用某用户如admin执行提交操作时报错,“记录标识‘admin’未以已知数据库的名称开始“,不知是何原因,请高手指教,具体脚本如下:   
   Dim sess
   Dim chuser
   Dim resultset
   Dim date1
   Set sess=GetSession()
   Set chuser = GetFieldValue("变更申请人")
   date1=GetFieldValue("变更日期").GetValue()
   set queryent = sess.BuildQuery("项目组变更")
   queryent.BuildField("变更申请人")
   queryent.BuildField("退出日期")
   set filterNode1 = queryent.BuildFilterOperator(AD_BOOL_OP_AND)
   filterNode1.BuildFilter "变更申请人", AD_COMP_OP_EQ, chuser
   filterNode1.BuildFilter "退出日期", AD_COMP_OP_EQ, NULL
   set resultset = sess.BuildResultSet(queryent)
   resultset.Execute
   Do While resultset.MoveNext = AD_SUCCESS
   set currentObj = sess.GetEntity("项目组变更", resultset.GetColumnValue(1))
   sess.EditEntity currentObj, "modify"
   currentObj.SetFieldValue "退出日期",date1
   status = currentObj.Validate
   If status = "" Then
     currentObj.Commit
   Else
     currentObj.Revert
   End If
   Set currentObj = Nothing
   Loop

[ 本帖最后由 samsara 于 2008-4-10 11:32 编辑 ]


问题已经解决 [打开主题]
本主题的最佳答案为 [ 6 楼].



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

TOP

建议搂主检查一下脚本的语法,看起来有不少问题



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

TOP

我刚才又看了一遍,没有发现有问题啊,而且编译的时候也是通过的,还请指教



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

TOP

Set chuser = GetFieldValue("变更申请人")
应换成
chuser = GetFieldValue("变更申请人").GetValue

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

TOP

已经按yunshan 说的改过了,但还是报同样的错。。。。。。。。。。

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

TOP

set currentObj = sess.GetEntity("项目组变更", resultset.GetColumnValue(1))
这句你的意思应该是去更改另外一条记录
可是你查询得到的resultset.GetColumnValue(1)是变更申请人
不是记录的id  把这个更改一下


最佳答案
该回答被楼主/管理员列为正解!

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

TOP

ljs53眼睛真是犀利!
用GetEntity()来取得一个记录实体,第一个参数是record type名称,如"Defect",你这里是对的;第二个参数是记录ID,如DEF00001234,这个ID是以用户数据库的名称开头的,而你这里用的是申请人,这就是报这个错误的原因“未以已知数据库的名称开始”。

在这这行
queryent.BuildField("变更申请人")
之前加入
queryent.BuildField("ID")
就可以。

另外也可以用GetEntityByDbid来取得记录实体,这个很直观看出第二个参数是dbid,不容易犯错误。
本帖最近评分记录
  • yunshan 金钱 +5 解释的很详细! 2008-4-11 18:03

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

TOP

发新话题