发新话题
打印

[已解决] 我想实现old_id=projectName_000000i( 此文章被查看:614次,被回复:8篇!! )

我想实现old_id=projectName_000000i

在defect中我想添加一个old_id,让它的值取projectName_000000i(默认id=logic DATABASE name_000000i)
用basic如何实现啊 谢谢了 脚本不是很熟悉
不是专业搞配置的,对该工具很多方面不是很精通  只是测试需要使用CQ  感谢大家帮忙 谢谢

根据版主的提示,我这样写的代码
   old_id = GetFieldValue("project").GetValue & "_" & Right(GetFieldValue("id").GetValue, 8)
   SetFieldValue "old_id", old_id


还有一个问题,我想取ower.fullname,可是这样不行:


请教一下,在Defect中如何取得应用类型的属性,谢谢
如何在Defect中定义一个对象(是不是可以将defect和引用的project或users看成2个对象?)

[ 本帖最后由 tongfenglcz 于 2007-11-12 15:36 编辑 ]


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



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

TOP

还有
项目名称        Project.Name        模块        Module        子模块        SubModule
我想实现 通过reference取得Stateless中Project的name
如果做可以实现:我选择了项目,就会显示项目对应的模块,通过选择模块可以显示对应的子模块
即项目-模块-子模块 实现Parent-child-grandchild的关系

希望能描述详细些 我尝试这样做了,但没有成功:
1.创建module单(stateless)、SubModule单(stateless)
2、在module单中增加一个叫子模块的字段,Referent SubModule
3、在Project中创建一个字段Module,Referent  Module
3-1、在Project中创建一个字段Module,Referent  Module
4、在defect中定义project(默认已经有了)Referent Project
5、在defect中创建Module字段,Referent Project.Modulae(值取不到)
6、在defect中创建SubModule字段,Referent Project.SubModule(值取不到)
好像在Unique Key中勾了哪个字段  只能引用到那个字段对应的值


如不直接Referent,而是直接在defect中定义两个字段Module和SubModule,然后使得他们具有Parent-child的关系,然后每一个项目定义成一个单独的schema,则我能成功实现。我现在的目的是:N个项目都只需要一个schema就实现  谢谢大家了(不知道我的问题描述清楚了没有)



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

TOP

回复 楼主 的帖子

这个很简单,可以这样实现:
old_id = projectname & "_" & Right(GetFieldValue("id").GetValue, 8)
SetFieldValue "old_id", old_id



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

TOP

谢谢版主的回复
我没有描述清楚我的问题,很抱歉
我想实现的是:

old_id=projectName_000000i(默认id=logic DATABASE name_000000i)
这里的projectname取得是defect中引用的project的名称 0000001是id的后几位数字
我根据版主的回复修改代码如下:
    old_id = GetFieldValue("project").GetValue & "_" & Right(GetFieldValue("id").GetValue, 8)
   SetFieldValue "old_id", old_id
但提示不行
defect中的project是reference型,是不是不能直接取它的值啊
还有我想取ower.fullname怎么取啊?(ower是引用类,引用了user)

[ 本帖最后由 tongfenglcz 于 2007-11-12 15:25 编辑 ]

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

TOP

回复 地毯 的帖子

首先你要搞清楚,你当前的schema下的defect中是否有project这个字段,我写的代码只是参考,具体使用还是要修改的。最好不要使用old_id这个名称,避免与系统保留字段重名。

此外,我不知道你把这两句代码放在什么地方了,这个代码可以放在old的default value上,可以放在Action的initialization上等等。

如果是代码问题,很简单,调试一下就行了,在第一句后面加个msgbox,显示出old_id的值或分别显示出每部分的值。

对于owner的fullname有很多中方法,建议你去看看CQ API参考的User对象这章,结合示例代码,很容易理解,而且在api参考中有很多有价值的代码示例,不过很多人都忽视了这一点,不知道去查阅。

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

TOP

回复 5# 的帖子

谢谢你的回复
1、代码我放在old_id的default value上
2、schema下的defect中是有Project这个字段
3、我用MsgBox,只能取到id的后八位数字  取不到Project的值

我通过session取值也尝试了 还是不成。因为我希望所有的项目都只需要一个logic database搞定 所以必须要有一个标识序列号的字段来区分

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

TOP

回复 6# 的帖子

是不是在提交的时候Project字段为空的,如果是这样的话,可以这样解决:
1. 为Project字段设置一个default value,同时在这里设置old_id的default value。
2. 在Project字段的value change上动态的根据project的值来设置old_id的 值。

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

TOP

dim sessionObj
dim sql
dim resultSetObj
dim ret
dim value
dim pro
dim id_str
dim m,n

  pro = GetFieldValue(fieldname).GetValue()
  set sessionObj = GetSession
  sql="SELECT COUNT(*) AS Expr1 FROM defect INNER JOIN project ON defect.project = project.dbid WHERE (project.name = '"&pro+"')"
  set resultSetObj = sessionObj.BuildSQLQuery(sql)
  resultSetObj.Execute
  status = resultSetObj.MoveNext
  If status = AD_SUCCESS Then
      value = resultSetObj.GetColumnValue(1)
  Else
      value = ""
  End If
  id_str=GetFieldValue(fieldname).GetValue()
  if id_str <> "" then
    id_str = id_str + "_"
     value = value + 1
   value = cstr(value)
     m=6-len(value)
     if m>0 then
            for n=1 to m
                    id_str=id_str+"0"
            next
     end if
  
     id_str=id_str&value
  
     setFieldValue "old_id",id_str
  else
     setFieldValue "old_id",""
  end if
  SetFieldValue fieldname, GetFieldValue("project").GetValue()

将以上写在project的value change上就可以实现提交一个表格,选择Project后会生成project_0000i的号码,可以根据自己的情况修改代码!


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

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

TOP

引用:
原帖由 tongfenglcz 于 2007-11-12 15:23 发表
谢谢版主的回复
我没有描述清楚我的问题,很抱歉
我想实现的是:

old_id=projectName_000000i(默认id=logic DATABASE name_000000i)
这里的projectname取得是defect中引用的project的名称 0000001是id的后几 ..
old_id=projectName_000000i(默认id=logic DATABASE name_000000i)
这里的projectname取得是defect中引用的project的名称 0000001是id的后几位数字
我根据版主的回复修改代码如下:
    old_id = GetFieldValue("project").GetValue & "_" & Right(GetFieldValue("id").GetValue, 8)
   SetFieldValue "old_id", old_id
但提示不行

我知道问题出在哪里了,因为project的值是一个可变值。。。
我想达到的目的(很不好意思,一直没有表达清楚):定义一个字段SN,每提交一个defect,这个SN字段会根据选择的项目名称自动编号。

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

TOP

发新话题