Lotus中DbLookUp的使用问题?
我在设计中添加了一个域 fldChinese 是文本可编辑的,我在这个域的运行"客户机"的"公式"中添加如下代码,然后用IE浏览时提示"找不到网页(HTTP 404未找到)"我是在本机上运行的,大家帮我看看DbLookUp的参数设置是否是这样的?
aa :=@Text(@Name([CN];@UserName));
@If(aa="";""; @DbLookup("";"":"usermanage.NSF";"vwUserSelect2";aa;"fldUserChinese")) --------------------编程问答-------------------- FIELD tmpLeader:=@DbLookup("":NoCache;"sigeserver":"osinfo.nsf";"By Staff ID";AppCNO_1;"Notesid");
这是我的程序里面的用法,
特别注意:AppCNO_1一定是视图中的第一列。
aa必须是vwUserSelect2"的第一列值,如果不是第一列,重新排列视图列。
如果不行发邮件给我。
Jordanwang@FounderIC.com --------------------编程问答-------------------- 没写第几列啊? --------------------编程问答-------------------- @DbLookup( "ODBC" : "NoCache" ; "data_source" ; "user_ID1" : "user_ID2" ; "password1" : "password2" ; "table" ; "column" : "null_handling" ; "key_column" ; "key" ; "Distinct" : "sort" )
参数
"ODBC"
关键字。表示正在存取一个 ODBC 数据源。
"NoCache"
关键字。可选。如果希望确保 Notes/Domino 在每次查询时检索到的都是最新信息,即可指定此选项。如 "ODBC":"NoCache" 所示。若希望缓存查询结果,则应省略 NoCache 选项,将结果保存在内存中以备重用。那么只要执行该查找操作的数据库保持打开,在同一 Notes/Domino 会话期间,对相同场所的每次并发查找操作都会重用这些信息。
如果省略了 "NoCache",也不必用其他任何选项替代,查找结果会自动缓存。但此时应指定 "Cache"可读。请参阅“指定 NoCache”。
"data_source"
文本。待访问的外部数据源名字。数据源指明了一个或多个数据库表的位置。请参阅“指定数据源”。
"user_ID1" : "user_ID2"
文本列表。连接外部数据库时必须用到的用户标识符。根据存取的 DBMS 不同,最多可需要两个标识符。请参阅“指定标识符和口令”。
"password1" : "password2"
文本列表。用户标识符所需口令。请参阅“指定标识符和口令”。
"table"
文本。被存取的数据库表名字。
"column"
文本。从中检索数据的列名。
"null_handling"
文本。指定检索数据时如何处理空值。请参阅“指定空值处理”。
"Distinct"
关键字。 可选。在返回数据前去掉列表中的重复值。
请参阅“指定 Distinct”。
"key_column"
文本。进行关键字匹配的列名。
"key"
文本、数字、日期-时间或一个列表。在 key_column 里查找的值。使用与数据源关键字列的类型一致的 Notes/Domino 类型。
"Distinct"
关键字。可选。在返回数据前去掉列表中的重复值。请参阅“指定 Distinct”。
"sort"
关键字。在返回前按升序或降序排序列表值。 --------------------编程问答-------------------- aa :=@Text(@Name([CN];@UserName));
@If(aa="";""; @DbLookup("";"":"usermanage.NSF";"vwUserSelect2";aa;"fldUserChinese"))
中"fldUserChinese"哪里应该是填写要取的第几列,你写个"fldUserChinese"字符串是干什么? --------------------编程问答-------------------- 不建议在使用@dblookup的时候,用域名去获取值,建议使用取列值的方式。 --------------------编程问答-------------------- 大哥还没有搞定啊,
多改几次撒,一下午肯定可以试出来的 --------------------编程问答-------------------- 我看是找不到网页,不是索引中找不到对象。不要ie预览了撒,直接自己在地址栏里登陆敲地址 --------------------编程问答-------------------- 首列别忘记排序 --------------------编程问答-------------------- 关键是首列别忘记了。
怎么还没有搞定啊??
FIELD tmpLeader:=@DbLookup("":NoCache;"sigeserver":"osinfo.nsf";"By Staff ID";AppCNO_1;"Notesid");
这是我的程序里面的用法,
特别注意:AppCNO_1一定是视图中的第一列。
aa必须是vwUserSelect2"的第一列值,如果不是第一列,重新排列视图列。
如果不行发邮件给我。
Jordanwang@FounderIC.com
--------------------编程问答-------------------- 应该是AppCNO_1对应的查找值在视图"By Staff ID"的第一例。这是个很关键的地方。 --------------------编程问答-------------------- 使用@DbLookup一定要使用@IfError做判断,否则很容易出现问题 --------------------编程问答-------------------- 好的开发习惯:使用@DbLookup或者@DbColumn,要用@IsError(楼上的写错成@IfError了)进行容错处理.如:
aa :=@Text(@Name([CN];@UserName));
bb:=@DbLookup( " "; " ": "usermanage.NSF "; "vwUserSelect2 ";aa; "fldUserChinese "));
@If(aa= " "; " "; @If(@IsError(bb);" ";bb)) --------------------编程问答-------------------- 是@IfError不是@IsError,没有写错,当然使用@IsError也可以,但是没有@IfError方便 --------------------编程问答-------------------- @IfError是R6才有的 --------------------编程问答-------------------- 第一列需要排序的,不然就找不到网页拉,呵呵 --------------------编程问答-------------------- 按照楼主的语句,可以推断,那个视图的第一列,一定是以你的那个人名公司来排序的,目的是通过这个视图中的人名,找到那个doc,找到那个doc中你要的那个域值。 --------------------编程问答-------------------- 说到点子上了,第一类必须排序的
补充:企业软件 , Lotus