ComputeWithForm( False, False )

applefzu 2010-02-01 09:43:43
我想修改Person表单的FullName域,代码如下,
Set item = aadoc.ReplaceItemValue("FullName","王小珍/ldbzj" )
item.AppendToTextList( "王小珍" )
item.AppendToTextList( "wangxz/ldbzj" )
item.AppendToTextList( "wangxz" )
success = aadoc.ComputeWithForm( False, False )
If success Then
Call aadoc.save(True,True)
End If
然后用JAVA写登录,用户名username,密码password
Hashtable env = new Hashtable(11);
env.put("java.naming.factory.initial","com.sun.jndi.ldap.LdapCtxFactory");
env.put("java.naming.provider.url", "LDAP://172.18.1.130:389/O=ldbzj");
env.put("java.naming.security.authentication", "simple");
env.put("java.naming.security.principal", "CN="+username+",O=ldbzj");
env.put("java.naming.security.credentials", password);
DirContext ctx = new InitialDirContext(env);
Session session = NotesFactory.createSession("172.18.1.130:63148",username,password);
现在问题是FullName域如果是以上代码修改的话,就不能登录,提示错误
AuthenticationException验证失败:javax.naming.AuthenticationException: [LDAP: error code 49 - Failed, invalid credentials for CN=wangxz,O=ldbzj]
如果FullName域是手动输入并保存的话,就可以正常登陆,这是为什么啊,success = aadoc.ComputeWithForm( False, False )这句话没起作用吗?
...全文
292 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
bitwise 2010-03-11
  • 打赏
  • 举报
回复
Set item = aadoc.ReplaceItemValue("FullName","CN=王小珍/0=ldbzj" )
改为增加名称的方式,可能不是标准的名称格式引起的。
lotusriver2008 2010-03-03
  • 打赏
  • 举报
回复
你只是修改了一条文档,无需用computewithform.改成如下试试

Set item = aadoc.ReplaceItemValue("FullName","王小珍/ldbzj" )
item.AppendToTextList( "王小珍" )
item.AppendToTextList( "wangxz/ldbzj" )
item.AppendToTextList( "wangxz" )
Call aadoc.save(True,True)

已测试过,没问题
Kresher 2010-03-02
  • 打赏
  • 举报
回复
你做完notes代理后去文档里看看fullname这个域值啊,看看是不是READ-ACCESS NAMES/SUMMARY域,如果不是在代理里面设置一下域的类型。

我知道authors域代理赋值和手工赋值会有些小区别,不过不清楚你的fullname是什么类型的域。
applefzu 2010-03-02
  • 打赏
  • 举报
回复
自己顶顶,还是没解决的问题啊。。
lermother 2010-02-24
  • 打赏
  • 举报
回复
帮助顶帮助顶帮助顶帮助顶
applefzu 2010-02-21
  • 打赏
  • 举报
回复
按照11楼的修改还是不行哦。手动保存就可以。
Kresher 2010-02-11
  • 打赏
  • 举报
回复
如果你在代码里面要保存读者或者作者域的话请用conanicalize的格式

如果是一般编辑文档时修改读者或者作者域的话,abbreviate就可以了

和compterwithform应该无关
shouyu_2008 2010-02-11
  • 打赏
  • 举报
回复
我也遇到过类似的情况,你尝试把代码改成如下看看:
aadoc.form="Person"
call aadoc.ComputeWithForm( False, False )
Set item = aadoc.ReplaceItemValue("FullName","王小珍/ldbzj" )
item.AppendToTextList( "王小珍" )
item.AppendToTextList( "wangxz/ldbzj" )
item.AppendToTextList( "wangxz" )
Call aadoc.save(True,True)
主要原因应该是在ComputeWithForm上,调用它的话,文档中的所有产生域必须和表单中现有的域相同,也就是说文档中会自动补全表单中设置的域.
这样的话有可能前面保存的域值信息又重新保存一遍,产生两个fullname域,以致影响登陆.
这只是个人见解.楼主可以试试可行不.
applefzu 2010-02-10
  • 打赏
  • 举报
回复
请高手指教啊。再给加分
applefzu 2010-02-04
  • 打赏
  • 举报
回复
怎么没人知道啊?现在使用lotus工具的人实在太少了。
lermother 2010-02-03
  • 打赏
  • 举报
回复
帮忙
xyk_1986 2010-02-02
  • 打赏
  • 举报
回复
帮顶
applefzu 2010-02-01
  • 打赏
  • 举报
回复
我把这段代码
Set item = aadoc.ReplaceItemValue("FullName","王小珍/ldbzj" )
item.AppendToTextList( "王小珍" )
item.AppendToTextList( "wangxz/ldbzj" )
item.AppendToTextList( "wangxz" )
success = aadoc.ComputeWithForm( False, False )
If success Then
Call aadoc.save(True,True)
End If
改为
aadoc.FullName=Evaluate("@SetField(""王小珍/ldbzj"";""王小珍"":""CN=wangxz/O=ldbzj"":""wangxz"")",aadoc) 也还是不行哦。
applefzu 2010-02-01
  • 打赏
  • 举报
回复
Notes客户端的文档属性去看FullName 已经保存为

序列号: 16
重复项目标识: 0
域标志: SUMMARY NAMES PROTECTED

"CN=王小珍/O=ldbzj"
"王小珍"
"CN=wangxz/O=ldbzj"
"wangxz"

但是还是不能登录。
fare2000 2010-02-01
  • 打赏
  • 举报
回复
那你从Notes客户端的文档属性去看看这个字段是否已经成功保存为"CN=王小珍/O=ldbzj"
applefzu 2010-02-01
  • 打赏
  • 举报
回复
自己顶下,有人知道吗?
applefzu 2010-02-01
  • 打赏
  • 举报
回复
王小珍/ldbzj
王小珍
wangxz/ldbzj
wangxz


手动输入并保存的话就可以正常登陆,用
Set item = aadoc.ReplaceItemValue("FullName","王小珍/ldbzj" )
item.AppendToTextList( "王小珍" )
item.AppendToTextList( "wangxz/ldbzj" )
item.AppendToTextList( "wangxz" )
success = aadoc.ComputeWithForm( False, False )
If success Then
Call aadoc.save(True,True)
End If
这段代码的话就不行,高手指教下啊。
lwchq 2010-02-01
  • 打赏
  • 举报
回复
代码改之后有没有重启服务器试试啊?

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧