2019年5月29日水曜日

FileMaker ラベルシールの開始位置を設定しちゃう


ラベルシールって結構使ってますよね。
FileMakerで開始位置を設定する方法ってのは、デフォルトには無いので自分で作るしかないんです。

方法はいろいろあるかとは思うのですが、あまり難しくする必要はないのかと思います。
対象レコードに対し
必要な数の空データを作って、削除する。
これだけです。

(これは位置表示だけのインフォメーション)


問題は、顧客などのデータが入ったテーブル内で、空レコードを作ったり、削除したりするのが怖い、関係の無いデータまで消してしまうのではないか、という不安がある。
とおっしゃる方も居ます。
そこで対象データを別テーブルに複製させ、別テーブルで空レコードを作り、別テーブルで印刷し、別テーブルで消せば元のデータにはなんら影響は無くなります。

でも、なんというか、判断はまかせます。僕的には、めんどくさいし、重たくなりますからね・・・。

空レコード増やして、空レコード削除するだけですから・・・。
外国ではデータの複製とかしてるみたいですけど、よく分からなかったです。


理屈は、見積書や請求書の印刷のように明細数が2,3行しか無くてみっともないときに、MAX20行表示で空レコードをLOOP処理で17個作っていい感じに見える方法となんら変わりません。空レコードを下にまとめるか、上にまとめるかだけです。

ラベルシールはコクヨとかで12とか24とかあれば、その12がMAX値で
対象レコードをどの位置から開始するかだけです。
開始位置が4であれば、空レコードを頭に3つ置くという事になります。





並べるためのポイント1
顧客マスタの場合は顧客idがあります。
空レコードを作成するということは、どうしても顧客idが付与されますので
消すたびにどんどん大きな数になっていくと、肝心な新規登録の時に連番に大きく開きが出てしまいます。


(いつも画像が汚くてすみません)

なので、シリアル番号は空レコードを消したときに、元の番号にする必要があります。
(顧客idでソートをかける場合)
今回は年ごとに+001が付番される自己リレーションを使用します。


難しくないですよね。


シリアルの計算値に
SerialIncrement ( "001" ; Max ( ラベルシール開始位置_シリアル::シリアル))
を入れます。

そうすると、顧客レコードを追加する度に19年&001+1が加算されるようになります。
これなら、複数の空レコードを何度作成して、削除しても元のidから始められますよね。


並べるためのポイント2

あとは、開始位置に4という数値を入れると、3つの空のレコードを作成しながら、同時に空レコードの顧客idを消し、空行フラグに1を入れ、最後は顧客idでソートをかければいいようにします。

スクリプト長いので省略



21行目に  g_開始行-1(グローバル)というのが、開始行です。

空行を作成する度に顧客idを消します(ソートで頭にくるように)
空行を作成する度に空行flgに1を入れます(空レコードだと分かるように)


そして、印刷後は、空行flgに1が入力されたデータだけまとめて削除すると
元に戻ります。


別スクリプト

という塩梅です。


既存の顧客コードを変えずに行う場合は、印刷したい対象レコードを別テーブル(同じように顧客と住所を持つテーブル)に複製(方法は任せます)して、
複製された側の別のコード(別フィールドのidを全置換で+1生成する)でソートをかけ、後は、上と同じように必要な分の空レコードを作って、戻るときは消します。作業を終えたら別テーブルのデータは全て消します。元々の顧客マスタのデータには影響を与えないように作成します。
上と比較すると、別テーブルに渡したり削除する分、時間はかかりますが、対象レコードが1000データ以内であればさほど気にならないかもしれません。
クラウドで1万とかは、ちときついかもです。


別な話ですが・・・。

開始位置をいじると、プリンターのヘッダーが擦り切れるとかいう方もいますが、
そういうのはよく分かりません(笑)






FileMakerPro17
(Winで作ってます)




後日投稿の


もあります!




0 件のコメント:

コメントを投稿

最適化してますか?

 まるで入院していた患者が退院して元気に復活するような機能。 クラウドを使用するユーザーさんがほとんどなのですが、このゴールデンウィーク中は 最適化のメンテしときます。 データがピチピチしちゃいますよぅ。