過去の桐井戸端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へのコメント 幅田さん、アックン、うにんさん、ありがとうございました。 私のわかりにくい質問の意味を理解して、回答いただきましてありがとうございます。 いずれの方法でも、うまくいきました。 |