過去の桐井戸端BBS (桐ver.9)
30998 一覧表印刷でデータの無い項目を印刷しないようにしたい ちー 2006/01/27-15:03
桐ver9sp1使用

項目が多いので、印刷時にはデータの無い項目を外しているのですが、
(一覧表印刷の属性→印字項目にて削除・追加)
毎回編集するのも手間で、おまけにミスも起こるので
自動的に「データのある項目だけ印刷」というのはできませんか?
30999 Re:データの無い項目を印刷しないようにしたい うにん 2006/01/28-13:30
記事番号30998へのコメント

>自動的に「データのある項目だけ印刷」というのはできませんか?

一括処理作ればどうにでもできると思いますが、印字幅の調整もしないと美しくないのでその辺をどういうコンセプトにするかですね。

31000 Re:データの無い項目を印刷しないようにしたい アックン 2006/01/28-18:37
記事番号30998へのコメント
ちーさん
現在、当掲示板の障害でサンプルをアップ出来ないようなので、復旧次第アップします。m(__)m

ちーさん、こんにちは。文が長いので分割します。
一括処理(cmd)をアップしました。V9-2006(2004 sp3)対応
表を開いてから、一括処理を実行してください。

a: 一覧表定義の表示幅で印刷する一括処理
b: 表定義の表示幅で印刷する一括処理

bの方が作成手順が短いので楽ですが、
表の表示幅と一覧表の印刷幅が異なる項目があるときは、aを選んでください。

以下は作業手順です。
●1:ab共通
一覧表印刷の条件名を作成済だと思うので、それを使います。
データのあるなしにかかわらず、印刷する可能性がある項目すべての表示幅を設定してください。
出来上がったら、一覧表印刷の定義画面を閉じます。

●2:ab共通 履歴登録
メニューバーの「ツール」→「履歴登録」→「新規作成」(ボタン)→「OK」(ボタン)
画面右上の方に、小さなリモコンのような履歴登録パネルが現れます。

メニューバーの「ファイル」→「印刷」→「一覧表」→
手順1で作成した条件名を選択して、「変更」(ボタン)→
→「OK」(ボタン)→→「閉じる」(ボタン)
→履歴登録パネルの「履歴登録終了」(黒色の四角形のボタン)

以上の操作で、履歴ファイル(****_CMD)が出来ます。

●3:ab共通 履歴書き出し
履歴ファイルを定義画面で開きます。
桐メニュー「表示」→「ファイルパレット」→「一括・イベント」(ボタン)→
履歴ファイル(****_CMD)を選択して、左上の方の定義(Alt+D)(ボタン)

**----履歴の定義画面
履歴開始 ・・(略)
変数宣言 ・・(略)
使用フォーム
条件 (.NOT ・・(略)
一覧表印刷条件開始 ・・(略)
 :(略)
一覧表印刷条件終了
履歴終了 ・・(略)
**----------------------

一覧表印刷条件開始 から 一覧表印刷条件終了 までの行を絞り込みます。
桐メニュー「ファイル」→「書き出し」→「一括」→
任意のファイル名を付けてください。aとbを別のファイル名にしてください。
「ファイルの種類」は 一括処理(*.CMD) のままでいいです。
→実行(ボタン)

●4:ab共通 一括処理編集
先ほど書き出した一括処理を定義画面で開きます。
桐メニュー「表示」→「ファイルパレット」→「一括・イベント」(ボタン)→
ファイル名を選択して、左上の方の定義(Alt+D)(ボタン)

**---- 一括処理の定義画面
一覧表印刷条件開始 ・・(略)
 :(略)
一覧表印刷条件終了
**----------------------

以下、具体的に編集作業を書きます。
1行目
一覧表印刷条件開始 ・・(略)
 ↓1行目をコピーします。2行目に行挿入→直前値 でもいいです。
一覧表印刷条件開始 ・・(略)
一覧表印刷条件開始 ・・(略)
 ↓1行目の先頭に * を付けます。これでこの行は注釈行になり、実行しません。
*一覧表印刷条件開始 ・・(略)
一覧表印刷条件開始 ・・(略)


31001 Re:データの無い項目を印刷しないようにしたい アックン 2006/01/28-18:39
記事番号31000へのコメント
続きです。
●5:a: 一覧表定義の表示幅で印刷する一括処理 の手順
2行目(コピーした行)を複数の行に分けます。
一覧表印刷条件開始 "印刷01"・・"MS ゴシック",960,標準,1},{[お届け先名]
C1200/しない,[電話番号]C1300//しない}
 ↓項目名が書かれている部分を分けます。(改行したい位置で Ctrl+Enter )
一覧表印刷条件開始 "印刷01"・・"MS ゴシック",960,標準,1},{[お届け先名]C1200/しない
 :略
,[電話番号]C1300//しない}
 ↓ 先頭の ,{ と次行以降の先頭の , と最後の行の } を削除します。
一覧表印刷条件開始 "印刷01"・・"MS ゴシック",960,標準,1}
[お届け先名]C1200/しない
 :略
[電話番号]C1300//しない

2行目に書き足します
一覧表印刷条件開始 "印刷01"・・"MS ゴシック",960,標準,1}
  ↓ダブルクォーテーション( " )1個を2個に増やします。
一覧表印刷条件開始 ""印刷01""・・""MS ゴシック"",960,標準,1}
  ↓前後にダブルクォーテーションを付けます。
"一覧表印刷条件開始 ""印刷01""・・""MS ゴシック"",960,標準,1}"
  ↓先頭に書き足します
&STR = "一覧表印刷条件開始 ""印刷01""・・""MS ゴシック"",960,標準,1}"
 ↓条件名だけを変更します。。わかりやすい名にしてください
&STR = "一覧表印刷条件開始 ""一覧表定義の表示幅""・・略

3行目から
[お届け先名]C1200/しない
 :略
[電話番号]C1300//しない
 ↓先頭に式の一部を書き足して、最後に " を付けます。
 ↓各項目毎に、&f[1]〜&f[5] のように順番に数字を入れてください。
 ↓項目名が書かれている行の順に連番を書いてください。
cond(&有効件数) &f[1]=&str+","+"[お届け先名]C1200//しない"
 :略
cond(&有効件数) &f[5]=&str+","+"[電話番号]C1300//しない"
 ↓項目集計コマンドの行を入れます。
項目集計 [お届け先名]
cond(&有効件数) &f[1]=&str+","+"[お届け先名]C1200//しない"
 :略
項目集計 [電話番号]
cond(&有効件数) &f[5]=&str+","+"[電話番号]C1300//しない"

次ぎに、2行目と3行目
&STR = "一覧表印刷条件開始 ・・略
項目集計 ・・略
 ↓2行入れます。
&STR = "一覧表印刷条件開始 ・・略
var 数値{ &i , &項目数=#項目数 }
var 共通,文字列{ &f[#項目数] , &str }
項目集計 ・・略

次ぎに、cond(&有効件数)・・が終わる行
cond(&有効件数) &f[5]=&str+","+"[電話番号]・・略
一覧表印刷条件 表属性・・略
 ↓5行入れます。
cond(&有効件数) &f[5]=&str+","+"[電話番号]・・略
for &i=1,&項目数
&str = &str+#v("f",&i)
end
&str = &STR+",{"+#sstr(&str,2)+"}"
コマンド &str
一覧表印刷条件 表属性・・略

●6:b: 表定義の表示幅で印刷する一括処理 の手順
4からの続きです。
2行目(コピーした行)を編集します。
一覧表印刷条件開始 "印刷01"・・"MS ゴシック",960,標準,1},{[お届け先名]
C1200/しない,[電話番号]C1300//しない}
 ↓後半の項目名が書かれている部分を削除します。
一覧表印刷条件開始 "印刷01"・・"MS ゴシック",960,標準,1}
 ↓ダブルクォーテーション( " )1個を2個に増やします。
一覧表印刷条件開始 ""印刷01""・・""MS ゴシック"",960,標準,1}
 ↓前後にダブルクォーテーションを付けます。
"一覧表印刷条件開始 ""印刷01""・・""MS ゴシック"",960,標準,1}"
 ↓先頭に書き足します。
&STR = "一覧表印刷条件開始 ""印刷01""・・""MS ゴシック"",960,標準,1}"
 ↓条件名だけを変更します。。わかりやすい名にしてください
&STR = "一覧表印刷条件開始 ""表定義の表示幅""・・略

31002 Re:データの無い項目を印刷しないようにしたい アックン 2006/01/28-18:39
記事番号31001へのコメント
さらに続きです。
●7:ab共通
一覧表印刷条件の項目名属性・データ属性・列属性 の各行

一覧表印刷条件 項目名属性,[お届け先名]・・略
 :略
一覧表印刷条件 項目名属性,[電話番号]・・略
一覧表印刷条件 データ属性,[お届け先名]・・略
 :略
一覧表印刷条件 データ属性,[電話番号]・・略
一覧表印刷条件 列属性,[お届け先名]・・略
 :略
一覧表印刷条件 列属性,[電話番号]・・略
 ↓cond(&f[1]) のように、数字を入れます。
 ↓数字と項目名がずれないようにしてください。
cond(&f[1]) 一覧表印刷条件 項目名属性,[お届け先名]・・略
 :略
cond(&f[5]) 一覧表印刷条件 項目名属性,[電話番号]・・略
cond(&f[1]) 一覧表印刷条件 データ属性,[お届け先名]・・略
 :略
cond(&f[5]) 一覧表印刷条件 データ属性,[電話番号]・・略
cond(&f[1]) 一覧表印刷条件 列属性,[お届け先名]・・略
 :略
cond(&f[5]) 一覧表印刷条件 列属性,[電話番号]・・略

●8:b: 表定義の表示幅で印刷する一括処理 の手順
2行目と3行目
&STR = "一覧表印刷条件開始 ・・略
一覧表印刷条件 表属性・・略
 ↓9行入れます。
&STR = "一覧表印刷条件開始 ・・略
var 数値{ &i , &項目数=#項目数 }
var 共通,文字列{ &f[#項目数] , &項目名 , &str }
for &i=1,&項目数
&項目名 = #項目属性(&i,1)
項目集計 &項目名
&str = &str+#cond(&有効件数,#setvar("f",&i,","+"["+#項目属性(&i,1)+"]"),1,"")
end
&str = &STR+",{"+#sstr(&str,2)+"}"
コマンド &str
一覧表印刷条件 表属性・・略

●9:ab共通
最後の行
一覧表印刷条件終了
 ↓最後に1行追加します。
一覧表印刷条件終了
確認 "一覧表印刷条件を作成しました。"
31003 Re:データの無い項目を印刷しないようにしたい アックン 2006/01/28-18:49
記事番号31002へのコメント
サンプルをアップしました。

31004 Re:データの無い項目を印刷しないようにしたい ちー 2006/01/30-11:12
記事番号31003へのコメント
アックンさんへ

長い回答をありがとうございました<m(__)m>。
時間を費やして頂いてほんとに有り難く思っています。
この手順で作ってみようと思いますが、時間がかかりそうなので
先ずはお礼まで・・・

サンプルの件ですが、
試しにDLして郵便番号のデータを全部削除してみました。
一覧表印刷の条件名でどちらを選んでも
郵便番号の項目が表示されるのですが、私のやり方が違うのでしょうか?

31005 Re:データの無い項目を印刷しないようにしたい ちー 2006/01/30-11:26
記事番号30999へのコメント
うにんさん、ありがとうございました。
31006 Re:データの無い項目を印刷しないようにしたい アックン 2006/01/30-11:59
記事番号31004へのコメント
ちーさん
サンプルの中に、ab2通りの一括処理(cmd)ファイルがあります。
任意の項目のデータを削除した後、一括処理を実行すれば、新しい条件がすぐ出来ます。
試してみてください。
わからない点はまた質問してくださいね。

31007 Re:データの無い項目を印刷しないようにしたい ちー 2006/01/30-13:23
記事番号31006へのコメント
アックンさん、ありがとうございます。

一括処理の使い方がよくわからないのですが、
データを削除して、印刷ボタン→条件名を指定→プレビューではだめなのですね?
ツール→履歴実行をみてもファイルがないのですが・・・
ファイルパレットから呼び出して実行しても、
「給紙方法は使用できません」とエラーメッセージがでます。
すいませんが、一括処理の実行の仕方をお教え下さい。
31008 Re:データの無い項目を印刷しないようにしたい アックン 2006/01/30-14:42
記事番号31007へのコメント
ちーさん
>データを削除して、印刷ボタン→条件名を指定→プレビューではだめなのですね?
はい。その条件名ふたつは削除してかまいません。
このふたつは、全項目のデータが存在する時点で作成したので、全項目を印刷する定義内容です。

>ツール→履歴実行をみてもファイルがないのですが・・・
履歴のファイル名には私の名が自動的に付くので、ちーさんの桐の環境では実行できないのでしょう。
この履歴は実行しなくていいです。ご自分で一括処理を作成するときの参考にと思ってアップしたものです。

>「給紙方法は使用できません」とエラーメッセージがでます。
給紙方法がぼくのパソコンの設定のままでした。すみません。
下記ふたつの一括処理(cmd)を編集してもらえますか。

一括処理ファイル
・データのある項目だけを一覧表定義の表示幅で印刷する_.cmd
・データのある項目だけを表定義の表示幅で印刷する .cmd

一括処理の編集画面を開くには
ファイルパレット→「一括・イベント」(ボタン)または「ファイル」(ボタン)
→上記ふたつのファイルを選択→左上の方の「定義(Alt+D)」(アイコン)

2行目
&STR = "一覧表印刷条件開始 ""印刷_一覧表定義の表示幅"",用紙サイズ=""A4 210 x
297 mm"",給紙方法=""オートシートフィーダ"",・・略
  ↓削除する箇所
給紙方法=""オートシートフィーダ"",

もし、さらに他のエラーが出るようでしたら、2行目のエラーになると思う箇所を削除してみてください。(^^;

>ファイルパレットから呼び出して実行しても、
それもいいですし、または、
桐メニュー「ファイル」→「一括処理実行」
または
桐メニュー「ファイル」→ファイル名:ファイル名を指定
            ファイルの種類:一括処理(*.cmd)
どれでもいいです。
31009 Re:データの無い項目を印刷しないようにしたい ちー 2006/01/30-15:07
記事番号31008へのコメント
アックンさん

ありがとうございました。
給紙方法だけ削除したらサンプルの一括処理実行ができました。

お〜(^^♪データの無い項目が表示されていませんね〜!
今から、頂いた作業手順を基に作ってみます。
サンプルもとても参考になり助かります。

何度も丁寧な回答をありがとうございました。

!<m(__)m>!<m(__)m>!<m(__)m>!<m(__)m>!<m(__)m>!


31010 Re:データの無い項目を印刷しないようにしたい アックン 2006/01/30-15:56
記事番号31009へのコメント
ちーさん
サンプルが動いてよかったですね。お手を煩わせました。

>今から、頂いた作業手順を基に作ってみます。
かなりややこしいので、わからないところは気軽にまた質問してくださいね。

項目にデータがあるかないかを探るには、一般に項目集計または行集計をするのですが、
行集計状態で印刷するケースがあることを想定して、項目集計を一括処理に使いました。
項目の数だけ項目集計を繰り返しますから、その時間がちょっとかかります。(^^;

うにんさんが書いていたように、ぼくもレイアウトのことが気になっていたのですが、
その点はあまり差し障りがないのでしょうか。
同じような幅の項目がたくさんある横に長い表なら、一括処理が生かせるかもしれません。

31012 Re:データの無い項目を印刷しないようにしたい ちー 2006/01/30-18:00
記事番号31010へのコメント
アックンさん

細かい変更が多いので不安でしたが、なんとかできました!
でも、また問題が・・・
数式が入っている項目があり、0というデータが入っているので、削除できていません。
これはどうすれば良いですか?
エクセルみたいに「0=非表示にする」という設定ができるのでしょうか?
31013 Re:データの無い項目を印刷しないようにしたい アックン 2006/01/30-19:39
記事番号31012へのコメント
ちーさん
条件式を変更してみてください。

cond(&有効件数)・・略

cond(&合計値)・・略

cond(&有効件数)と書かれている行すべてを変更して差しつかえありません。

cond は 条件 というコマンドです。
「&合計値 が 0 または未定義でなければ」という条件式になります。

0 を表示している項目のデータ型が、数値・整数・長整数・実数の場合はこれでいけます。
まさか文字列ってことはないですよね。(^^;

31016 Re:データの無い項目を印刷しないようにしたい ちー 2006/01/31-10:08
記事番号31013へのコメント
アックンさん、おはようございます。

文字列の項目以外を「合計値」に直したら上手くいきました!
レイアウトも、同じ幅がほとんどなので問題ありません。

いつも丁寧な説明をしてくださり、とても判りやすかったです。

<m(__)m>お世話になりました( ^^) _旦~~

戻る