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 件のコメント:
コメントを投稿