Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Mom文件创建(5个产品限制)_Loops_Mom - Fatal编程技术网

Loops Mom文件创建(5个产品限制)

Loops Mom文件创建(5个产品限制),loops,mom,Loops,Mom,好的,我意识到这是一个非常利基的问题,但我希望这个过程足够直接 我的任务是根据客户/订单信息创建数据文件。问题是,数据文件最多有5个产品限制 基本上,我获取数据,按客户id分组,创建文件结构,在该循环中,按产品id分组,用新产品信息重写上一个文件结构中的字段。这一切都很好,直到用户超过最大值 一个简单的例子。。请记住,数组的结构是由另一个进程设置的,这是无法更改的 orderArray = arranyew(2); set order = 1; loop over cust_id;

好的,我意识到这是一个非常利基的问题,但我希望这个过程足够直接

我的任务是根据客户/订单信息创建数据文件。问题是,数据文件最多有5个产品限制

基本上,我获取数据,按客户id分组,创建文件结构,在该循环中,按产品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:这个伪代码与您描述的完全一样,但是您不需要离开产品循环。您应该离开产品循环的唯一时间是当前客户没有更多产品时。