好的,我知道这是一个非常小众的问题,但我希望这个过程很直接......
我的任务是从客户/订单信息中创建数据文件。问题是,数据文件有5个产品最大限制。
基本上,我获取我的数据,按cust_id分组,在该循环内创建文件结构,按product_id分组,使用新产品信息重写先前file_struct中的字段。在用户超过最大值之前,这一切都很顺利。
一个简短的例子..(请记住,数组的结构是由另一个进程设置的,这不能改变)
orderArray = arranyew(2);
set order = 1;
loop over cust_id;
field[order][1] = "field(1)"; // cust_id
field[order][2] = "field(2)"; // name
field[order][3] = "field(3)"; // phone
field[order][4] = ""; // product_1
field[order][5] = ""; // quantity_1
field[order][6] = ""; // product_2
field[order][7] = ""; // quantity_2
field[order][8] = ""; // product_3
field[order][9] = ""; // quantity_3
field[order][10] = ""; // product_4
field[order][11] = ""; // quantity_4
field[order][12] = ""; // product_5
field[order][13] = ""; // quantity_5
field[order][14] = "field(4)"; // trx_id
field[order][15] = "field(5)"; // total_cost
counter = 0;
loop over product_id
field[order[4+counter] = productCode;
field[order[5+counter] = quantity;
counter = counter + 2;
end inner loop;
order = order + 1;
end outer loop;
就像我说的,这个工作正常,直到我有一个用户订购超过5种产品。
我基本上想要做的是检查每个用户的产品数量(如果该数字大于5),在文本字段中开始一个新行,但我很想知道如何到达那里。
我尝试了很多修复,但没有任何结果可以提供我需要的结果。
如果可以提供帮助,我可以发送整个文件,但我不想在这里发布。
答案 0 :(得分:0)
您需要将页眉和页脚字段的插入移动到产品循环中,例如。 custid和trx_id字段。
这里有一个粗略的概念,为什么你可以根据你提供的伪代码来解决这个问题。我确信你可以用更优雅的方式编写代码。
set order = 0;
loop over cust_id;
counter = 1;
order = order + 1;
loop over product_id
if (counter == 1 || counter == 6) {
if (counter == 6) {
counter == 1;
order= order+1;
}
field[order][1] = "field(1)"; // cust_id
field[order][2] = "field(2)"; // name
field[order][3] = "field(3)"; // phone
}
field[order][counter+3] = productCode; // product_1
field[order][counter+4] = quantity; // quantity_1
counter = counter + 1;
if (counter == 6) {
field[order][14] = "field(4)"; // trx_id
field[order][15] = "field(5)"; // total_cost
}
end inner loop;
if (counter == 6) {
// loop here to insert blank columns and the totals field to fill out the row.
}
end outer loop;
有一点让我担心。如果您每五个产品开始一个新行,那么您的交易ID和总成本将不止一次输入到该文件中。你知道接收系统。这可能不是问题。
希望这有帮助
答案 1 :(得分:0)
当您将数据放入行时,您需要检查是否有超过5个产品,然后创建一个额外的行。
loop over product_id
if (counter mod 10 == 0 and counter > 0) {
// create the new row, and mark it as a continuation of the previous order
counter = 0;
order = order + 1;
field[order][1] = "";
...
field[order][15] = "";
}
field[order[4+counter] = productCode;
field[order[5+counter] = quantity;
counter = counter + 2;
end inner loop;
我实际上是从电子商务系统导出到MOM,但该代码已经丢失。我有经典ASP中的代码示例。