私は Microsoft Access を使用してメールソートを行います。このメールソートでは、郵便番号によって住所が仕分けオフィスに一致し、コード (メールソート コード) が割り当てられます。
その後、データは印刷用にメールソート コード順にエクスポートされます。手紙に宛名を印刷するだけでなく、手紙を封筒に入れるときにメールバッグに入れることができるように、メールバッグラベルも印刷します (つまり、すべての 12345 コードを同じバッグに入れるなど)。
今やりたいことは、データにバッグ番号を追加することです。12345 個のコード化された文字はすべてバッグ 1 であり、67890 個のコード化された文字はすべてバッグ 2 です。これにより、文字の袋詰めが容易になります。
Royal Mail は 10kg までのバッグしか受け付けないという点で、さらに複雑な問題があります。したがって、文字の重み (既にフォームに入力されています) を考慮する必要があります。たとえば、手紙の重量が 50g で、同じコードのレコードが 1000 件ある場合、200 文字ごとに新しい袋番号が必要になります (50g の手紙 1000 通で 5 袋)。
これは、Access で VBA ループを使用して各レコードを調べ、メールソート コードを前のものと比較することで実現できます。同一の場合は、10kg の袋を満たすのに十分な量がない限り、同じ袋番号が割り当てられます。
ただし、これは非常に遅いです。現在、10000 レコードのメールソートを実行するには約 5 ~ 10 秒かかりますが、私の VBA ループでは約 3 分かかります!
クエリを使用してバッグ番号を取得し、プロセスを高速化することはできますか?
メールソート コードごとに「サブ ID」を追加できればと考えました (たとえば、最初のコードに 150 レコードがある場合、これらのサブ ID は 1 から 150 になり、2 番目のコードに 50 文字がある場合、これらにはサブ ID があります)。 1 から 50 の ID など)。次に、サブ ID を使用して、サブ ID を最大レコード数 (文字の重みで決定) で割り、小数点以下 0 桁に丸め、1 を追加することで、特定のコードに複数のバッグが必要かどうかを判断できます。
ご意見やご提案をいただければ幸いです。
敬具マイケル