0

好的,我意识到这是一个非常小众的问题,但我希望这个过程足够简单......

我的任务是根据客户/订单信息创建一个数据文件。问题是,数据文件有 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,在文本字段中开始一个新行,但我不知道如何到达那里。

我已经尝试了很多修复,但没有给出我需要的结果。

如果有帮助,我可以发送整个文件,但我不想在这里全部发布。

4

2 回答 2

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 和总成本将不止一次输入到文件中。你知道接收系统。这可能不是问题。

希望这可以帮助

于 2010-11-29T23:52:01.680 回答
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 中的代码示例。

于 2010-11-30T00:01:16.273 回答