Peoplesoft CreateRowset с соответствующей отображаемой записью

Согласно 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) и пароль.
Record.UserName содержит UserId(key) и Name.)

Я не могу получить значение UserName.Name, я неправильно понимаю использование этого параметра?


person Coleman    schedule 18.02.2016    source источник
comment
1) Это реальный код? У меня нет записи пользователя в моей установке. 2) Я никогда не делал этого с соответствующей записью дисплея. Есть ли причина, по которой вы не можете использовать другой синтаксис только с именем записи?   -  person qyb2zm302    schedule 19.02.2016
comment
1. Извините, это только идея, а не код. Проблема, которую я хочу задать, заключается в том, что я не могу получить какие-либо значения каких-либо полей из соответствующей отображаемой записи с помощью CreateRowset с параметрами {FIELD.fieldname, RECORD.recname}   -  person Coleman    schedule 19.02.2016
comment
2. На самом деле исходный код, например. &rs1 = CreateRowset(record.A), и теперь я должен включить некоторые связанные значения в этот набор строк на том же уровне из другой записи (например, записи.B), которая связана с основной записью (запись.A) по ключу. Я могу создать представление записи из записи.A и B, чтобы заменить запись.A, но это повлияет на многие коды в этом &rs1.   -  person Coleman    schedule 19.02.2016


Ответы (1)


Залить - проблема. Из документ:

Примечание: Fill читает только основную запись базы данных. Он не читает ни связанные записи, ни записи подчиненных наборов строк.

Сказав это, это единственный известный мне способ массового заполнения автономного набора строк из базы данных, поэтому я не могу легко увидеть использование поля в наборе строк.

Самое простое решение - просто создать представление, но оно очень быстро устаревает, если вам приходится делать это много. Альтернативой является просто цикл по набору строк, который загружает связанные поля. Что-то типа:

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