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

データを行に配置するときに、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;

私は実際にeコマースシステムからMOMへのエクスポートを実行しましたが、そのコードはその後失われました。従来のASPのコードのサンプルがあります。

于 2010-11-30T00:01:16.273 に答える
0

ヘッダー フィールドとフッター フィールドの挿入を製品ループに移動する必要があります。custid フィールドと trx_id フィールド。

これは、提供した疑似コードに基づいてこれを行うことができる理由の 1 つの大まかなアイデアです。これをコーディングできるもっとエレガントな方法があると確信しています。

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;

一つ気になることがあります。5 つの製品ごとに新しい行を開始すると、トランザクション ID と合計コストがファイルに複数回入力されます。あなたは受信システムを知っています。それは問題ではないかもしれません。

お役に立てれば

于 2010-11-29T23:52:01.680 に答える