在进度数据库中有一个名为gdmf_customer的表,在该表中有一个名为shift time的字段,实际上它有15条记录(06:00,07:00等)。这里我只是将复制的gdmf_customer缓冲到tt_data 。在tt_data临时表中有一个名为tt_shift的字段(全部数据来自缓冲区复制后的gdmf_customer)。现在我的问题是我需要拆分班次并导出为XML。请参见下面的代码
FOR EACH gdmf_shift NO-LOCK:BUFFER-COPY gdmf_shift EXCEPT shift_obj TO tt_shift.END.
hOutSAXDocument:START-ELEMENT("Row").
hOutSAXDocument:INSERT-ATTRIBUTE("id","5").
hOutSAXDocument:START-ELEMENT("Column").
hOutSAXDocument:INSERT-ATTRIBUTE("id","C1").
hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_start_hour,"HH:MM")).
hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_stop_hour,"HH:MM")).
从上面的代码中可以看到,我有一个开始和结束的时间,并以XML格式显示,但是我需要的是每个小时都位于tt_data中。 See Like this
答案 0 :(得分:0)
在我看来,您在错误的位置输入了END语句。
FOR EACH gdmf_shift NO-LOCK:
BUFFER-COPY gdmf_shift EXCEPT shift_obj TO tt_shift. /* I don't see why you are doing this but maybe there is more code than is being shown */
hOutSAXDocument:START-ELEMENT("Row").
hOutSAXDocument:INSERT-ATTRIBUTE("id","5").
hOutSAXDocument:START-ELEMENT("Column").
hOutSAXDocument:INSERT-ATTRIBUTE("id","C1").
hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_start_hour,"HH:MM")).
hOutSAXDocument:WRITE-DATA-ELEMENT("Column",string(tt_orderinfo.shft_stop_hour,"HH:MM")).
/* you probably want to end the element here */
END.
似乎您可能认为Progress 4GL / ABL有点像SQL,其中返回了“结果集”并作为整体起作用。 4GL不是那样的。 FOR EACH是一个循环块-每行分别返回以供您执行。虽然从表面上看相似,但它与SQL SELECT不同。
您的原始代码仅作用于最后一行,因为它恰好位于“ FOR EACH x WHERE y:... END”末尾的“范围内”。