【问题标题】:Peoplesoft CreateRowset with related display record具有相关显示记录的 Peoplesoft CreateRowset
【发布时间】:2016-05-30 06:40:32
【问题描述】:

根据Peoplebook here,CreateRowset函数有参数{FIELD.fieldname, RECORD.recname},用于指定相关的显示记录。

我曾尝试如下使用它(仅作为示例):

&rs1 = CreateRowset(Record.User, Field.UserId, Record.UserName);
&rs1.Fill();

For &k = 1 To &rs1.ActiveRowCount
MessageBox(0, "", 999999, 99999, &rs1(&k).UserName.Name.Value);
End-for;

(Record.User 仅包含 UserId(key), Password.
Record.UserName 包含 UserId(key), Name.)

我无法获取UserName.Name的Value,是我误解了这个参数的用法吗?

【问题讨论】:

  • 1) 这是实际代码吗?我的安装中没有“用户”记录。 2)我从来没有做过相关的显示记录。您是否有理由不能仅使用记录名称来使用其他语法?
  • 1.抱歉,这只是想法,而不是实际代码。我想问的问题是,我无法通过使用带有参数 {FIELD.fieldname, RECORD.recname} 的 CreateRowset 从相关显示记录中获取任何字段的任何值
  • 2.事实上,原始代码是例如&rs1 = CreateRowset(record.A),现在我必须将一些相关值包含在与主记录 (record.A) 相关的另一条记录 (例如 record.B) 的同一级别的行集中。我可能会从record.A和B创建一个记录视图来替换record.A,但是这个&rs1下的很多代码都会受到影响。

标签: record peoplesoft rowset peoplesoft-app-engine


【解决方案1】:

填充是问题所在。来自doco

注意:填充只读取主数据库记录。它不读 任何相关记录,也不是任何从属行集记录。

话虽如此,这是我知道从数据库中批量填充独立行集的唯一方法,因此我无法轻易看到行集中该字段的用途。

最简单的解决方案就是创建一个视图,但如果你必须经常这样做,它很快就会过时。另一种方法是自己循环遍历行集,加载相关字段。比如:

For &k = 1 To &rs1.ActiveRowCount
  &rs1(&k).UserName.UserId.value = &rs1(&k).User.UserId.value;
  &rs1(&k).UserName.SelectByKey();
End-for;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多