Loops Mom文件创建(5个产品限制)
好的,我意识到这是一个非常利基的问题,但我希望这个过程足够直接 我的任务是根据客户/订单信息创建数据文件。问题是,数据文件最多有5个产品限制 基本上,我获取数据,按客户id分组,创建文件结构,在该循环中,按产品id分组,用新产品信息重写上一个文件结构中的字段。这一切都很好,直到用户超过最大值 一个简单的例子。。请记住,数组的结构是由另一个进程设置的,这是无法更改的Loops Mom文件创建(5个产品限制),loops,mom,Loops,Mom,好的,我意识到这是一个非常利基的问题,但我希望这个过程足够直接 我的任务是根据客户/订单信息创建数据文件。问题是,数据文件最多有5个产品限制 基本上,我获取数据,按客户id分组,创建文件结构,在该循环中,按产品id分组,用新产品信息重写上一个文件结构中的字段。这一切都很好,直到用户超过最大值 一个简单的例子。。请记住,数组的结构是由另一个进程设置的,这是无法更改的 orderArray = arranyew(2); set order = 1; loop over cust_id;
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,在文本字段中开始一行新的内容,但是我对如何达到这一点感到困惑
我尝试了许多修复,但都没有得到我需要的结果
如果有帮助,我可以发送整个文件,但我不想在这里全部发布。您需要将页眉和页脚字段插入到产品循环中,例如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和总成本将不止一次地输入到该文件中。你知道接收系统。这可能不是问题
希望这对您有所帮助当您将数据放入行中时,您需要检查是否有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中的代码示例。下一行有一个标志,指示它是上一个顺序的延续,因此不会创建新的顺序。这有点道理,但我认为没有这么简单。问题是:我的输出文件如下所示:ncid、fname、lname、prod1、quan1、prod2、quan2…prod5、quan5、trx\u id、此布局的总成本无法更改。因此,如果有20个产品,我需要创建一个新记录,其中除prod1-prod5外,所有数据都可以为空,并创建一个延续字段,我用X标记,因此本质上是:循环客户ncid、fname、lname循环产品prod1、prod2…prod5如果>5,则保留循环trx_id,成本现在用新记录重新开始…@Yiseroel Ah cool。有道理。所以Gene需要在计数器运行时创建的新行中放置一个延续标志6@GeneR:这个伪代码与您描述的完全一样,但是您不需要离开产品循环。您应该离开产品循环的唯一时间是当前客户没有更多产品时。