データベース連携から選択したレコード数の倍数(重複)が印刷される
症状
データベース連携から印刷を行う際、印刷したい選択したレコードだけが印刷されず、印刷したいレコード数の倍数分が印刷されてしまいます。
具体的な例として、次のような状況を考えてみましょう:
- 何らかの処理でテーブルに5件のレコードが追加されます
- 連携が5件のレコードを検知し、1件ずつ処理を開始します
- 1件目のレコードが連携によって処理され、印刷リクエストが送信されます。ラベルも同じテーブルに接続されているため、5件のレコードがあると認識し、このジョブで5枚のラベルを印刷します。
- 連携が1件のレコードを削除します。残りは4件です。
- 次のレコードで、連携がこのレコードの印刷リクエストを送信します。ラベルは4件のレコードを検知し、4枚のラベルを印刷します。
この処理はすべてのレコードが削除されるまで続きます。もし100件のレコードがあれば、この問題はすぐに手に負えなくなります。
対処方法/回答
BarTenderドキュメントが、連携が接続しているデータベースに直接接続されていないか確認してください。
代わりに、ラベルが名前付きデータソースを使用していることを確認してください。
データベース連携の正しい設定方法については、こちらの記事をご覧ください:データベーストリガーを使ったドキュメントの印刷
BarTenderから直接印刷した場合のみ印刷枚数の問題が発生している場合
こちらの記事で解決策をご確認ください:BarTenderから印刷した際の印刷枚数が正しくない
詳細情報
この問題は、影響を受けているBarTenderドキュメントが、データベース連携でトリガーとして使用しているのと同じデータベースに接続されている場合によく発生します。
データベースの変更によって連携がトリガーされると、BarTenderドキュメントが呼び出されますが、その際にデータベース全体を参照してしまいます。そのため、BarTenderドキュメントはデータベース内のすべてのレコードを印刷するよう指示されてしまいます。
「選択したレコード数の倍数分印刷される」現象は、お客様が印刷したいレコードのみを抽出している場合に発生します。「データベース全体」の結果が、印刷したい選択レコードのみとなるためです。したがって、BarTenderドキュメントがデータベースに直接接続されたままだと、選択したレコード数の倍数分が印刷されてしまいます。