ラベル ラベル開始位置 の投稿を表示しています。 すべての投稿を表示
ラベル ラベル開始位置 の投稿を表示しています。 すべての投稿を表示

2019年6月1日土曜日

FileMaker ラベルシールの開始位置と、枚数指定をできるようにしちゃう!

5月29日の「ラベルシールの開始位置を設定しちゃう」
の追加版

枚数の指定も出来るようにしちゃうよぅ!


前回のラベルシールの開始位置設定に、少し機能追加しました。

発行枚数を指定できるようにした画面。
これは、顧客のラベルシールに限らず、例えば同じ商品を何枚も出したい商品の賞味期限原材料表示シールなんかにも応用できますね。
ケーキ屋さんで、マドレーヌ10個作って売りたいのに、全商品1枚ずつのラベルシールじゃ使い物にならないでしょうし・・・。
また、病院などの採血。患者さんによって採血の本数が違うので、患者さんにごとにラベルシールの発行枚数を指定したいときなどに使います。
お預かりのある業態などにも使えますね。

あらゆる現場で、使う頻度は高い方だと思いますので覚えた方がいいです。




ね!?山田さん3枚、川村さん4枚
更には開始位置も指定できちゃう!


顧客情報が入る別のテーブルMove(名前はなんでもいいですよ)というのを作って、顧客idで結びます。そこに
「山田さん3枚・・・、川村さん4枚・・・、開始位置3なので空レコード2つ!
印刷したら、Moveレコードは全部削除!」


データをMove送り込んで、終わったら全部削除。元のテーブルには傷をつけない方法で、いたって単純な作りです。


注意するところは、Move側の顧客idにユニーク設定をしない。というだけです。
更に、TOPの一覧に検索機能を付けていないので、検索できるように使うといいです。
ただし、それをやるのならスクリプト「発行枚数対応印刷」の中の



全レコード表示を削除してください。
デフラグとか気にされる方はやらないほうがいいかも(笑)





FileMakerPro17
(Win)






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で作ってます)




後日投稿の


もあります!




Associatron (アソシアトロン)連想記憶

  なぜか、僕のブログの研究所側ではなく、FileMaker側にヒットするので アソシアトロン Associatron研究 リンクを貼っておきます。 研究と実験詳細 https://cside-associatron.blogspot.com/ 公開実験(JavaScriptのみ...