мне нужно вставить новые строки в мою базу данных.
OUTPUT TO c:\temp\SMLeiste_bearbeiten.csv.
DEFINE VARIABLE size AS CHARACTER NO-UNDO FORMAT "x(3)"
LABEL "Size".
for each S_Artikel
where S_Artikel.Selektion matches "KSE*"
or S_Artikel.Selektion matches "ZSE*"
or S_Artikel.Selektion matches "SSE*",
EACH BS_Zuord
where BS_Zuord.SMLeiste = "SE"
AND BS_Zuord.Owning_Obj = S_Artikel.S_Artikel_Obj
EXCLUSIVE-LOCK.
ASSIGN BS_Zuord.Merkmal = "Größe".
PUT UNFORMATTED
'First Loop - set row with Merkmal "Größe"' + '|' + STRING(BS_Zuord.Owning_Obj) + '|' + String(S_Artikel.S_Artikel_Obj)
SKIP.
END.
Итак, проблема в том, что я не знаю, как добавить строку с размером, не просматривая каждый элемент из "BS_Zuord"
один объект S_Artikel имеет несколько объектов BS_Zuord
Я просто хочу запросить, какой S_Artikel соответствует моим критериям, а затем добавить BS_Zuord с равным Owning_Obj = S_Artikel_Obj
Я думаю, мне, возможно, придется присоединиться к столам или что-то в этом роде, но я понятия не имею, как это сделать в процессе
Заранее спасибо!
редактировать:
Мне нужно заменить
EACH BS_Zuord
where BS_Zuord.SMLeiste = "SE"
AND BS_Zuord.Owning_Obj = S_Artikel.S_Artikel_Obj
EXCLUSIVE-LOCK.
ASSIGN BS_Zuord.Property = "Size".
с участием
CREATE BS_Zuord.
BS_Zuord.OwningObj = S_Artikel_Obj.
ASSIGN BS_Zuord.Property = "Size".
**
Новейшая версия полного кода
**
OUTPUT TO c:\temp\SMLeiste_bearbeiten.csv.
DEFINE VARIABLE groesse AS CHARACTER NO-UNDO FORMAT "x(7)"
LABEL "Groesse".
for each S_Artikel
where S_Artikel.Selektion matches "KSE*"
or S_Artikel.Selektion matches "ZSE*"
or S_Artikel.Selektion matches "SSE*",
EACH BS_Zuord
where BS_Zuord.SMLeiste = "SE"
AND BS_Zuord.Owning_Obj = S_Artikel.S_Artikel_Obj
EXCLUSIVE-LOCK.
ASSIGN BS_Zuord.Merkmal = "Size".
PUT UNFORMATTED
'Erste Schleife - Größe anlegen' + '|' + STRING(BS_Zuord.Owning_Obj) + '|' + String(S_Artikel.S_Artikel_Obj)
SKIP.
END.
for each S_Artikel
where S_Artikel.Selektion matches "KSE*"
or S_Artikel.Selektion matches "ZSE*"
or S_Artikel.Selektion matches "SSE*",
EACH BS_Zuord
where BS_Zuord.SMLeiste = "SE"
AND BS_Zuord.Merkmal = "Größe"
AND BS_Zuord.Owning_Obj = S_Artikel_Obj
EXCLUSIVE-LOCK.
IF SUBSTRING(STRING(S_Artikel.Selektion),8,1) = "/" THEN groesse = SUBSTRING(STRING(S_Artikel.Selektion),5,7).
ELSE groesse = SUBSTRING(STRING(S_Artikel.Selektion),5,3).
BS_Zuord.Auspr = groesse.
PUT UNFORMATTED
'Zweite Schleife - Größe ausfüllen' + '|' + string(S_Artikel.Artikel) + '|' + string(S_Artikel.Selektion) + '|' + STRING(groesse) + '|' + STRING(BS_Zuord.SMLeiste) + '|' + STRING (BS_Zuord.Merkmal) + '|' + STRING(BS_Zuord.Auspr)
SKIP.
END.
Если я заменю ту часть, где написано
,
EACH BS_Zuord
where BS_Zuord.SMLeiste = "SE"
AND BS_Zuord.Merkmal = "Größe"
AND BS_Zuord.Owning_Obj = S_Artikel_Obj
EXCLUSIVE-LOCK.
IF SUBSTRING(STRING(S_Artikel.Selektion),8,1) = "/" THEN groesse = SUBSTRING(STRING(S_Artikel.Selektion),5,7).
ELSE groesse = SUBSTRING(STRING(S_Artikel.Selektion),5,3).
BS_Zuord.Auspr = groesse.
с твоим
/ * находим соответствующий BS_Zuord, если он существует * /
exclusive-lock.
find BS_Zuord where BS_Zuord.SMLeiste = "SE" and BS_Zuord.Owning_Obj = S_Artikel.S_Artikel_Obj no-error.
/* if it does not already exist create it and initialize the key */
if not available BS_Zuord then
do:
create BS_Zuord.
assign
BS_Zuord.SMLeiste = "SE"
BS_Zuord.Owning_Obj = S_Artikel.S_Artikel_Obj
.
end.
/* set the property field */
BS_Zuord.Property = "Size".
и прокомментируйте вторую для каждого выхода
появится это сообщение: В нем написано "для свойства (в моем случае Merkmal)" Größe "нет" Ausprägung "(это фактическое значение свойства" Merkmal ". Значение '' недопустимо. http://i.stack.imgur.com/FDL4S.png
Итак, 1 S_Artikel имеет несколько BS_Zuord с разными "Merkmal". Каждый «Меркмал» имеет несколько ценностей.
Если я запускаю рабочий код, он запускается для каждого раза S_Artikel x-Merkmal и говорит, что если, например, S_Artikel имеет 6 «Merkmal», он создает правильный «Merkmal» со значением «Größe», а затем пытается в 5 раз больше создать его, но он говорит, что он существует. Затем второй для каждого авто создает значения, которые будут заполнены в BS_Zuord.Auspr.
Надеюсь, вы поняли, что я пытаюсь вам сказать. Английский не мой родной язык :(