Вы по-прежнему можете использовать наборы строк, строки, записи и поля в автономных системах приложений.Механизмы приложений не имеют данных буфера компонентов, так как они не работают в контексте компонента.Поэтому, чтобы использовать эти элементы, вам необходимо заполнить их, используя встроенные методы, такие как .fill () для набора строк или .selectByKey () для записи.
Преимущество использования наборов строкпо сравнению с SQL это облегчает CRUD.Есть встроенные методы для выбора, обновления, вставки и удаления.Кроме того, вам не нужно беспокоиться о создании большого количества переменных, если бы было несколько полей, как это было бы с объектом SQL.Еще одним преимуществом является то, что когда вы выполняете заливку, данные считываются в память, где, если вы перебираете SQL, курсор SQL будет открыт дольше.Объекты набора строк, строк, записей и полей также имеют множество других полезных методов, например, позволяющих вам выполнять редактирование (проверка) или копировать из одного набора строк \ строки \ записи в другой.
Этот вопрос мне немного менее понятен, но я постараюсь объяснить.Если у вас есть страница, она будет иметь строку уровня 0.Тогда он может иметь несколько наборов строк уровня 1.Под каждым из них он может иметь наборы строк уровня 2.
Level0
/ \
Level1 Level1
/ \ / \
Level2 Level2 Level2 Level2
Если бы в одной из ваших строк уровня 1 было 3 строки, то вы найдете 3 строки в наборе строк, связанных с этим уровнем1.,Не уверен, что я объяснил это, чтобы ответить на то, что вам нужно, уточните, если я могу предоставить больше информации
Обычно после создания набора строк я перебираю его.Получите доступ к записи в каждой строке, сделайте некоторую обработку с ней.В приведенном ниже примере я просматриваю все заблокированные учетные записи и добавляю к их описанию префикс LOCKED, а затем обновляю базу данных.
.
Local boolean &updateResult;
local integer &i;
local record &lockedAccount;
Local rowset &lockedAccounts;
&lockedAccounts = CreateRowset(RECORD.PSOPRDEFN);
&lockedAccounts.fill("WHERE acctlock = 1");
for &i = 1 to &lockedAccounts.ActiveRowCount
&lockedAccount = &lockedAccounts(&i).PSOPRDEFN;
if left(&lockedAccount.OPRDEFNDESCR.value,6) <> "LOCKED" then
&lockedAccount.OPRDEFNDESCR.value = "LOCKED " | &lockedAccount.OPRDEFNDESCR.value;
&updateResult = &lockedAccount.update();
if not &updateResult then
/* Error handle failed update */
end-if;
end-if;
End-for;