過去の桐井戸端BBS (桐ver.9)
23214 タックシール印刷で1枚目を請求書(控)、2枚目を請求書にしたい 田中 2003/11/06-09:34
桐Ver9を使用しています。
納品・売上伝票とは別に、1ヶ月に1回、得意先に合計請求書を発行します。
A4に縦3分割のタックシールで、繰り返し印刷数2として、印刷します。
繰り返し印刷のタイトルを
    1枚目はを請求書(控)
    2枚目は請求書
としたいのですが、タックシール印刷で、できるものなのかどうかも含めてわかりません。
よろしくお願いします。

23215 Re:タックシール印刷で1枚目を請求書(控)、2枚目を請求書にしたい 幅田 2003/11/06-11:30
記事番号23214へのコメント
田中さん
こんにちは。

>A4に縦3分割のタックシールで、繰り返し印刷数2として、印刷します。
>繰り返し印刷のタイトルを
>    1枚目はを請求書(控)
>    2枚目は請求書
>としたい

いまいちよくわからないところがあるのですが、
繰り返し印刷数2はタイルオブジェクトの「タイル」タブで設定しておられるのですよね。
(印刷ダイアログの中ではありませんよね)

>    1枚目はを請求書(控)
>    2枚目は請求書
これは、A4の用紙の1枚目、2枚目という意味ではなく、
タックシールの1枚目、2枚目という意味ですよね。

であれば、縦3分割だとすると、
A4の1枚目には、
1レコード目の請求書
1レコード目の請求書(控)
2レコード目の請求書

A4の2枚目には、
2レコード目の請求書(控)
3レコード目の請求書
3レコード目の請求書(控)

と印字されることになりますが、これであっているでしょうか。

ということであれば、次のようにすれば実現可能かと思います。


ある、テキストオブジェクトに

#代入(&合計値,&合計値+1)

というものを設定し、文字色を「白」にして、印字されないようにする。

印字するタイトル部分に、テキストオブジェクトで

#条件選択(#MOD(&合計値,2)=1,"請求書",1,"請求書(控)")

と設定します。

印刷するときは、メニューバーのツール→変数管理で
&合計値の値を 0 にしてから始めて下さい。

(別に0にしなくても、最初が奇数の場合は、請求書と控が、逆の
順番で印字されるだけです。)

#頁番号などの関数では、繰り返しを設定しても、同じ数値になるので
1枚目、2枚目などの判断には使えないので、

シールを1枚印刷するたびに&合計値という変数に、1を加えていって、
その&合計値が、奇数の時は「請求書」、偶数の時は「控え」を
印刷するというわけです。

なお、組み込み変数の&合計値を使いましたが、数値系の関数であれば、
別にほかのものでもかまいません。

23216 Re:タックシール印刷で1枚目を請求書(控)、2枚目を請求書にしたい アックン 2003/11/06-11:37
記事番号23214へのコメント
田中さん、こんにちは。
>繰り返し印刷のタイトルを
この「タイトル」の意味がわからないのですが、タイルに配置したテキストオブジェクトの文字と仮定して、
こんなふうに印刷したいのでしょうか(?)。

(タックシール1頁目)
請求書(控)
(株)○○様

請求書
(株)○○様

請求書(控)
(株)△△様

(タックシール2頁目)
請求書
(株)△△様

請求書(控)
(株)□□様

請求書
(株)□□様

これでよければ、下の式をひとつにつないで、テキストオブジェクトのソースにしてください。

#progn( #cond(#明細連番=1 .and&STR="請求書" , #set(秒,0) ) ,
#cond( &秒=0 , #progn( #set(秒,&秒+1) , #set(STR,"請求書(控)") ) ,
&秒=1 , #progn( #set(秒,0) , #set(STR,"請求書") ) ) )

冗長な式ですが、もし一括処理かイベントを使える場面なら、
タックシール印刷のコマンドを発行する直前に、
  &秒 = 0  としておけば、以下のように少し短くでき、かつ処理が確実になります。
#progn(#cond( &秒=0 , #progn( #set(秒,&秒+1) , #set(STR,"請求書(控)") ) ,
&秒=1 , #progn( #set(秒,0) , #set(STR,"請求書") ) ) )


23217 Re:タックシール印刷で1枚目を請求書(控)、2枚目を請求書にしたい アックン 2003/11/06-11:48
記事番号23216へのコメント
先ほどの
#progn( #cond(#明細連番=1 .and&STR="請求書" , #set(秒,0) ) ,
ここは
#progn( #cond(#明細連番=1 .and.not&STR="請求書(控)" ,#set(秒,0) ) ,
とした方がいいようです。
ここはいったいなにやってるのかと言いますと、最初に組み込み変数 &秒 の値を 0 にしているだけです。
ですから、幅田さんの回答にあるように、変数管理であらかじめ設定しておくか、
あるいは一括かイベントで &秒 = 0 とするのと同じです。
23218 Re:タックシール印刷で1枚目を請求書(控)、2枚目を請求書にしたい うにん 2003/11/06-11:51
記事番号23216へのコメント

>  &秒 = 0  としておけば、以下のように少し短くでき、かつ処理が確実に
>なります。
>#progn(
>#cond( &秒=0 , #progn( #set(秒,&秒+1) , #set(STR,"請求書(控)") ) ,
>&秒=1 , #progn( #set(秒,0) , #set(STR,"請求書") ) ) )

#cond( &秒=0 , #progn( #set(秒,1) , "請求書(控)") ,
&秒=1 , #progn( #set(秒,0) , "請求書") )

でいいんじゃないでしょうか。

23219 Re:タックシール印刷で1枚目を請求書(控)、2枚目を請求書にしたい アックン 2003/11/06-12:00
記事番号23218へのコメント
うにんさん、フォローどうも。
>でいいんじゃないでしょうか。
そのとおりでごじゃります〜。(^^;
あれこれ書いていたら、複雑になってしまって、そのまんま不要な箇所が残っておりました。
最後に &STR を置いたり、&秒 の値を 1,2 にしたりした名残です。
たしかに冗長なはずだわ。(^^;だはは...
23242 ありがとうございました 田中 2003/11/07-10:48
記事番号23214へのコメント
幅田さん、アックン、うにんさん、ありがとうございました。

私のわかりにくい質問の意味を理解して、回答いただきましてありがとうございます。
いずれの方法でも、うまくいきました。

戻る