发新话题
悬赏主题

[已解决] 这里的提问人员很少愿意采取悬赏的方式啊,我来一次

补充资料

谁能把下面的代码优化成不输入管理员的用户名密码。否则每次修改admin的密码就需要修改schema,麻烦的很。
解决了问题 给20分的奖励。

过滤用户名字段的显示内容。
设置一个字段,REFERENCE类型,REFERENCE to 选择 user。Choice list选择basic。
A、过滤该字段只显示某个group里面的用户列表。
Dim i
set adminSession = CreateObject("ClearQuest.AdminSession")
adminSession.Logon "admin", "password", "ss"              '管理员用户名,密码和Maintenance Tool中的Schema名称。

set GroupObj = adminSession.GetGroup("Mygroups")          '取MyGroup组的用户
set UserObj=GroupObj.Users                                
numUsers = UserObj.count

DO While i<numUsers
  set Progammer= UserObj.Item(i)
  ProgammerName = Progammer.Name
  choices.additem ProgammerName
i=i+1
loop


问题已经解决 [打开主题]
本主题的最佳答案为 [ 2 楼].
最佳答案 ( 回答者: yunshan )
要是从楼主的途径来进行,这个问题很难解决,在Admin Session 登录之前,
是可以获得Admin的密码,但这个密码是经过加密的,
即使得到也没有多大的用处,

但是如果只想实现这个功能,有两种方式:
1. 就是使用楼下的方法, 这种方法简单明了。
2. 直接使用SQL查询,与1有相似之处:
     Dim Qry
     Dim sessionObj
     Dim ResultSet

   Set sessionObj = GetSession
    '这里表的关系太复杂了,不建议自己去写,在客户端中建个查询,拷贝出相应的语句就可以了
   '如果想查询其他用户组的,把其中的developer做相应的改动就可以了
    Qry = "select distinct T1.dbid,T1.fullname,T4.name from ( ( users T1 LEFT OUTER JOIN [select * from parent_child_links where parent_fielddef_id = 16777310 ]. AS T4mm ON T1.dbid = T4mm.parent_dbid  ) LEFT OUTER JOIN groups T4 ON T4mm.child_dbid = T4.dbid  ) where T1.dbid <> 0 and (T4.name = 'developer') "

   Set ResultSet = sessionObj.BuildSQLQuery(Qry)  
   ResultSet.Execute        

   Do While  ResultSet.MoveNext = AD_SUCCESS
         '注意,查询结果是的列标从1开始的         
        choices.additem ResultSet.GetColumnValue(2)
   Loop

[ 本帖最后由 yunshan 于 2006-12-20 13:04 编辑 ]


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