Lotus notes 从另一个表单上的字段更新表单上的字段(Lotus Notes)

Lotus notes 从另一个表单上的字段更新表单上的字段(Lotus Notes),lotus-notes,lotus,Lotus Notes,Lotus,我有一个存储在打印机关键字部分的打印机列表,其中有一些字段,比如它们用于每种颜色的墨水序列等等。我想这样做,当我创建一个新的用户表单,并说他们有“X”打印机时,它会抓取该关键字表单,提取它使用的所有墨水类型,并保存在用户表单上 @GetDocField是我知道必须使用的方法,但我不知道如何根据我选择的用户使用的打印机从表单列表中获取正确的表单。使用@DbLookup从打印机文档中获取数据 FIELD ink1 := @DbLookup(""; ""; "viewPrinters"; "XPrin

我有一个存储在打印机关键字部分的打印机列表,其中有一些字段,比如它们用于每种颜色的墨水序列等等。我想这样做,当我创建一个新的用户表单,并说他们有“X”打印机时,它会抓取该关键字表单,提取它使用的所有墨水类型,并保存在用户表单上


@GetDocField是我知道必须使用的方法,但我不知道如何根据我选择的用户使用的打印机从表单列表中获取正确的表单。

使用@DbLookup从打印机文档中获取数据

FIELD ink1 := @DbLookup(""; ""; "viewPrinters"; "XPrinter"; "ink1"; [FAILSILENT]);
上面的行读取当前数据库“viewPrinters”视图中打印机“XPrinter”文档中的项目“ink1”,并将其写入当前文档中的项目“ink1”。你可以这样复制每个字段。视图“viewPrinters”必须有一个带有打印机名称的第一个排序列

在一个由特殊字符分隔的列中定义要获取的所有字段,并使用它们一次获取所有字段,可能会更有效

FIELD allFields:= @DbLookup(""; ""; "viewPrinters"; "XPrinter"; 2; [FAILSILENT]);
如果读取打印机文档的文档ID,也可以使用@GetDocField:

_docId := @Text(@DbLookup(""; ""; "viewPrinters"; "XPrinter"; "";
                                              [RETURNDOCUMENTUNIQUEID]));
@If(@IsError(_docId); @Return(""); "");
FIELD ink1 := @GetDocField(_docId: "ink1");

使用LotusScript可能更有效。但我从你的问题中假设你更喜欢公式解。

Knut的答案很可能是正确的。这里有一个词汇提示:在Notes/Domino世界中,“表单”仅指UI和编程的定义。使用表单时保存的实际内容称为“文档”,因此,当您说“从表单列表中获取保存的正确表单”时,我相信您真正的意思是“查找与给定表单一起保存的适当文档”。如果你真的试图从表单中读取关键字数据,你的问题会有一个非常不同的答案。虽然这不是我使用的方法,但这是一个非常好的答案。我设法创建了一个复杂但希望同样有效的方法来解决这个问题。