Tips No.002 【ラベル印刷位置の指定】

ラベル印刷位置の指定

公開日:2014/06/17

このTipsは「No.001 【宛名ラベルの調整】」の続きという位置付けです。レイアウトをご覧いただくと、ほぼ同じように思われるかもしれませんが、決して手抜きではありません、コレを「流用」と言います。

さて、前回のTipsでは、宛名のフォントサイズを変更したり改行位置を調整することで、適切にラベルを表示するようにしました。それにより、宛名ラベルはキレイに表示できるようになったので、次にはそのラベルを印刷する段となりますが、運用していくと、ちょっとした問題に直面します。それは用紙の「ラベルの余り」です。

ラベル用紙は何面かのシールに区切られていますので、1度の印刷で用紙のラベルを「余すこと無く使い切る」のは稀だと思います。例えばこのTipsでは、24面のラベル用紙をサンプルとして使用していますが、「余すこと無く使い切る」には、印刷対象のレコードが24の倍数である場合に限ります。つまり、最大23枚のラベルシールが残った「使い勝手の悪いラベル用紙」が、高確率で生成されてしまうという事です。

今回のTipsでは、この「使い勝手の悪いラベル用紙」を上手に使い切る方法をご紹介します。

Tipsをご覧いただくと判りますが、前回のTipsとの違いは、[Fn_ID] [Gn_印刷位置]の2フィールドが追加され、併せてラベル印刷用のテーブル[W000_Label]が新たに作成してあります。テーブル[W000_Label]は、作業用に一時的にレコードを保管するための「ワークテーブル」で、このテーブルにはフィールド[Ft_作成者]と、フィールド[Fn_ID]があります。これらのフィールドの詳細は、以下のとおりです。

■テーブル[N002_Label]
[Fn_ID] - 番号自動採番の数字フィールド // ユニークの制限はしていませんが、一意である必要はあります
[Gn_印刷位置] - 数字タイプのグローバルフィールド

■テーブル[W000_Label]
[Fn_作成者] - 作成情報が自動入力されるテキストフィールド
[Fn_ID] - データ自動入力の数字フィールド // 「0」が自動入力されます

このTipsの仕組みはこうです。
まず、ラベル出力したい宛名レコードを検索機能などを使用して対象レコードにします。この時レコードのソートを行っておくと、その順番でラベルは印刷されます。次に「使い勝手の悪いラベル用紙」の余ったラベルシールのある最初の位置を印刷される方向に数え、その位置をレイアウト下部にあるフィールド[Gn_印刷位置]に入力します。そしてその後、[ラベル印刷]ボタンを押します。
[ラベル印刷]ボタンに設定されているスクリプトでは、テーブル[W000_Label]にレコードを作成しています。フィールド[Gn_印刷位置]で指定した数までのレコードを作成した後、ラベル印刷の対象レコードをインポートして、「使い勝手の悪いラベル用紙」に合う状態を作り出し、新規ウィンドウで表示しています。このTipsでは「印刷」スクリプトステップは付けてませんが、この状態から印刷すれば、無駄なくラベル用紙を消費していくことが可能という訳です。

上述のとおり、テーブル[W000_Label]は作業用に一時的にレコードを保管するための「ワークテーブル」です。そして、FileMakerに共有設定がある以上は、複数ユーザーが同時に同じ作業することも考慮しなければなりません。そこでフィールド[Ft_作成者]の出番です。
テーブル[W000_Label]のフィールド[Ft_作成者]で作成情報を取得しているのはそのためで、「誰が作成したレコードか?」を判別するのに使用しています。これによりシステムの誤作動を防ぐことが可能になります。Tipsでは「名前」を作成情報として設定していますが、きちんとアカウントの管理をしているのであれば「アカウント名」でも構いません。「誰が?」を判るようにしておくのが肝要です。

最後にワンポイントとしてアドバイスです。
レコードのインポートや対象レコードの削除を頻繁に行うと、ファイルが破損しやすくなります。ですので、ワークテーブルは別ファイルにして外部参照するのが安全です。また、この場合、当該外部ファイルを直接呼び出すことは避け、外部ファイルのテーブルを元ファイルに追加して、元ファイル側にレイアウトを作成しておくとパフォーマンスの低下もある程度は防げます。

今回のTipsはお役に立ちましたか?
半年ぶりのTipsの公開でしたが、もっと頻度を高めるように努めたいと、思、いま、す……。

- ダウンロード -