【发布时间】:2015-09-01 08:28:03
【问题描述】:
我需要在我的数据库中插入新行。
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 符合我的条件,然后添加一个等于 Owning_Obj = S_Artikel_Obj 的 BS_Zuord
我想我可能需要加入表格或类似的东西,但我不知道如何在进行中做到这一点
提前致谢!
编辑:
我需要更换吗
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 有多个具有不同“Merkmal”的 BS_Zuord。每个“Merkmal”都有多个值。
如果我运行工作代码,它会为每个 S_Artikel x-Merkmal 时间运行并说,例如,如果 S_Artikel 有 6 个“Merkmal”,它会创建正确的“Merkmal”,并将“Größe”作为值,然后它会尝试创建它的次数增加了 5 倍,但它说它存在。然后每个汽车的第二个创建将在 BS_Zuord.Auspr 中填充的值。
我希望你能理解我试图告诉你的内容。英语不是我的母语:(
【问题讨论】:
标签: progress-4gl openedge progress-db