過去の桐井戸端BBS (桐ver.8)
5864 コマンドボタンで条件選択は可能? kaz 2000/05/03-22:50
皆様にはまたまたお世話になります。

フォームの中のコマンドボタンに「印刷」を指定しました。
[あ項目]でAの場合は A.rptを
     Bの場合は B.rptを印刷したいのですが
どのように指定すればいいのでしょうか?
先輩諸氏のアドヴァイスをお願いいたします。

5867 Re:コマンドボタンで条件選択は可能? 悲しげ 2000/05/04-11:29
記事番号5864へのコメント
どもっ、kazさんけ
コマンドボタンだけで行う処理は私はちょっと不得手なのでどうやったらいいのか判りません。
で、出来るのかもしれないが、もし出来ないと云うことなのであれば、
私なら次のように設定してみると思います。
牡丹を印刷Aと印刷Bのふたつ作ります。(^^;)
これだけでは芸がないので、牡丹の設定を次のようにします。

印刷A 実行条件     [あ項目]="A"
   レポート印刷    a.rpt
印刷B 実行条件     [あ項目]="B"
   レポート印刷    b.rpt

こうすると、あ項目がAの場合は印刷B牡丹の表示が使用不可
に変わりアクセスできなくなるはずです。(挙動は未確認)
5870 Re:コマンドボタンで条件選択は可能? kaz 2000/05/04-15:53
記事番号5867へのコメント
悲しげさん こん**は

またまたお世話になります。(なってます)

ありがとうございました。
実は800×600画面のノートでも使用の
伝票処理でして印刷ボタンは1つにしたいのです。
ま,工夫で何とかなるかもしれませんが
出来れば一つで1つですませればかっこいいかな・・・
と思っております。
そのご,考えたのは

「手続き実行」コマンドにして一括処理に条件選択を書く

ですが,ちょっとだいさいかな・・・・・
何かいい方法があれば是非ご教示下さい。

5872 Re:コマンドボタンで条件選択は可能? 悲しげ 2000/05/04-19:03
記事番号5870へのコメント
あ、一括処理(kev)を使ってもいいんなら、例えば次のような方法なんかどうでしょう?
印刷a牡丹の上に印刷b牡丹を重ねる。
操作としては「複写」がいいと思います。
で、上になっている印刷b牡丹の画面表示を「しない」にしておく。
項目値aの例えば「ソース値更新」イベントでは

手続き定義開始 t項目値a::ソース値更新()
 if([項目値a]="あ")
  オブジェクト操作 @b印刷a.画面表示="1",@b印刷b.画面表示="0"
 else if([項目値a]="い")
  オブジェクト操作 @b印刷a.画面表示="0",@b印刷b.画面表示="1"
 end
手続き定義終了

フォームの「レコード移動」イベントで

手続き定義開始 フォーム::レコード移動(長整数 &行番号,……
 if([項目値a]="あ")
  オブジェクト操作 @b印刷a.画面表示="1",@b印刷b.画面表示="0"
 else if([項目値a]="い")
  オブジェクト操作 @b印刷a.画面表示="0",@b印刷b.画面表示="1"
 end
手続き定義終了

試してみて気がつきましたが、両牡丹とも印刷指定の前の行に、
  実行条件  .not #EOF
と入れておいた方がいいかもしれません。

5873 Re:コマンドボタンで条件選択は可能? 一括処理ができないHAS 2000/05/04-19:14
記事番号5864へのコメント
>フォームの中のコマンドボタンに「印刷」を指定しました。
>[あ項目]でAの場合は A.rptを
>     Bの場合は B.rptを印刷したいのですが


確認しておりませんが、

機能名      :レポート印刷
機能パラメーター :#条件選択([あ項目]="A","A.rpt",
          [あ項目]"B","B.rpt")

で出来ると思います。

5874 Re:コマンドボタンで条件選択は可能? 一括処理ができないHAS 2000/05/04-19:28
記事番号5873へのコメント
すみません一字ぬけました。

機能パラメーター :

#条件選択([あ項目]="A","A.rpt",[あ項目]="B","B.rpt")

5876 Re:コマンドボタンで条件選択は可能? kaz 2000/05/04-20:29
記事番号5872へのコメント
悲しげさん こんばんは

ありがとうございます。で,いつまでたっても初心者にちょっと教えてください。

>試してみて気がつきましたが、両牡丹とも印刷指定の前の行に、実行条件・・・・・・
                   ~~~~~~~~~~~~~~~~~~~ 
これって,どこでどうすればいいのでしょうか?

5877 Re:コマンドボタンで条件選択は可能? kaz 2000/05/04-20:32
記事番号5874へのコメント
一括処理ができないHASさん  こん**は

ありがとうございました。これからやってみます。
何のことはなっかたのですね・・・・・・・・・・
でも,初心者のわたしにとってはそれがわからない!!!
本当に感激です。
悲しげさんからはイベント処理もレクチャーしていただき,
それも試したいと思っています。
広がります。桐の世界が!
皆様のおかげですね。
5878 Re:コマンドボタンで条件選択は可能? 悲しげ 2000/05/04-20:42
記事番号5873へのコメント
あつ、ほんとうだつ!
何だ、kazさん、できるじゃないですか?
てっきり、できないものと確認済の質問かと思ってました。(^^;)

5879 Re:コマンドボタンで条件選択は可能? 悲しげ 2000/05/04-20:45
記事番号5876へのコメント
牡丹の機能名   同パラメータ
------------------------------
 実行条件    .not #EOF
 レポート印刷  某.rpt

5882 Re:コマンドボタンで条件選択は可能? kaz 2000/05/05-01:16
記事番号5878へのコメント
悲しげさん 一括処理ができないHASさん
こん**は

問題発生です・・・・・・・・・・・・
 先の質問は伝票印刷なのですが
 伝票が複数枚ありまして,それぞれがA印刷かB印刷
 なのです。
 で,コマンドボタンを実行いたしますと
 条件選択が出来ないまま,同じA.rptで印刷してしまいます。

それぞれの伝票に応じて印刷できないものでしょうか?

5893 Re:コマンドボタンで条件選択は可能? 悲しげ 2000/05/05-17:35
記事番号5882へのコメント
どもっ、kazさん、
できない!?
私は(プレビューだけですが)試してみたらうまく行ったよう
に見えましたが(少なくとも別なrptに見えた)。

あとは、一括処理ができないHASさんに実地に確認していただきましょう。(^^;)
なお、kazさんが設定した牡丹の機能と同パラメータをここで書いた方がいいと思います。

5905 Re:コマンドボタンで条件選択は可能? bonito 2000/05/05-23:01
記事番号5893へのコメント
おじゃまします(南州太郎<古い)

>私は(プレビューだけですが)試してみたらうまく行ったよう
>に見えましたが(少なくとも別なrptに見えた)。

私も完全にうまく行きました。
一括処理ができないHASさん、ご教授ありがとうございました。

今まで、コマンドボタンのパラメータには変数や計算式は特別な場合以外
使えないものと勘違いしていました。(本当は特別使えない場合もあるって感じなのね)
ためしに、変数&STRにフォーム名を格納後、コマンドボタンで
機能名:開く パラメータ:&STR、としたらうまく行きました。
いやはや、先入観はおそろしい。

5923 Re:コマンドボタンで条件選択は可能? kaz 2000/05/06-23:42
記事番号5905へのコメント

No.5882で発言しましたとおりですが、
画面表示されている伝票のみが条件選択できます。
しかし、別の伝票は一切条件選択はしません。
印刷がはじまってしまえばもうだめなのです。
で、1行目のコマンド実行時、該当のページ指定をして
  2行目にも同じコマンドを書いてページ指定をしてみましたが
だめでした。

一括処理へいって実行すればできるでしょうか?<all

5924 Re:コマンドボタンで条件選択は可能? 悲しげ 2000/05/07-00:31
記事番号5864へのコメント
どもっ、kazさん、
やっと云ってる意味が判りました。つまり、

[項目]








おさ〜るさ〜んだよ〜

失礼しました。<(_ _)>









とあるようなデータにおいて(印刷を牡丹で指定するかどうかはさておき)、
項目値が「あ」の行は"a.rpt"、「い」の行なら"b.rpt"で印刷させたい、と。
で、おそらくはa bのrptとも単票(wfmで云えばカード)だと思われます。
これは牡丹の設定の問題ではありませんね、一括処理が必要だと思います。
私なら、印刷速度の関係から、まず「あ」のみを絞り込んでa.rptを印刷させ、
次に絞り込み解除後、「い」のみを絞り込んでb.rptで印刷させて、ハイ終わりにすると思います。

1行ずつrpt印刷させていくやり方は、おそらくかなり遅くなるような気がするのですが、
どうしてもやりたければ、例えば

&i=1
繰り返し(.not #EOF)
 if([項目]="あ")
  レポート印刷 "a.rpt",\
    開始ページ=&i,終了ページ=&i,終了状態=&OK
 else if([項目]="い")
  レポート印刷 "b.rpt",\
    開始ページ=&i,終了ページ=&i,終了状態=&OK
 end
 &i=&i+1
 ジャンプ 行番号=&i
繰り返し終了

のような方法(ただし挙動未確認)でやれるかと思います。
牡丹はこの処理を呼び出すだけです。牡丹の左クリックイベントか、
あるいは牡丹の機能で手続き実行するか、いずれにせよ
kevの記述を要すると思います。
5928 Re:コマンドボタンで条件選択は可能? bonito 2000/05/07-12:49
記事番号5924へのコメント
振出しに戻ったって感じですね。

さて仕切りなおして、kazさん、#5923で

>画面表示されている伝票のみが条件選択できます。
>しかし、別の伝票は一切条件選択はしません。
>印刷がはじまってしまえばもうだめなのです。

とありますが、「伝票」? 伝票形式のWFMなのですか?
グループ化しているのでしょうか? (どんな項目で…?)
印刷がはじまってしまえばもうだめって…?

もう一度もう少し具体的に(出来れば項目名等も)お書きになれば、
上がり(ゴール)は近いような気がしますが…。

5930 Re:コマンドボタンで条件選択は可能? 一括処理ができないHAS 2000/05/07-14:32
記事番号5928へのコメント
おそらく、
伝票形式のフォーム
伝票形式のレポート
グループ項目は、[あ項目]

編集対象のグループだけでなく一気に他のグループも
印刷したいということだと思います。


>画面表示されている伝票のみが条件選択できます。

コマンドボタンを押したときのグループの[あ項目]の値でレポートが選択されます。


>しかし、別の伝票は一切条件選択はしません。
>印刷がはじまってしまえばもうだめなのです。

当然といえば、当然、グループ移動したうえで、
再度、[あ項目]の値を評価し、レポートを選択しなおさなければ出来ないと思います。


コマンドボタンには、繰り返しコマンドも無いようですし、
行数も5行では、コマンドボタンだけでは無理なように思います。

5932 Re:コマンドボタンで条件選択は可能? 悲しげ 2000/05/07-16:38
記事番号5924へのコメント
あ、rptの形式はどうやら伝票みたいですね。
それなら、

>私なら、印刷速度の関係から、まず「あ」のみを絞り込んで
>a.rptを印刷させ、次に絞り込み解除後、「い」のみを絞り込
>んでb.rptで印刷させて、

がやはり簡単だと思います、印刷順が気にいらないかもしれませんけど。
kevの記述としては、そうですね、現在のフォームも伝票すなわち
グループ項目のあるwfmかもしれません(判りませんけど)、
とすれば、グループ選択解除とかを考えると、またまたややこしくなるので、
ここは汎用的に「多重化表」を使ってみることにします。
----------------------------
変数宣言 長整数{&表番号,&OK}   /*不要?*/
編集表 "某.TBL"
多重化
&表番号=#表番号取得("某.TBL",2)  /*多重化表の表番号*/
並べ替え ……          /*必要があれば*/
絞り込み [項目]{"あ"}
条件(&選択件数>0) レポート印刷 "a.rpt",編集表=する,終了状態=&OK
絞り込み解除 1
絞り込み [項目]{"い"}
条件(&選択件数>0) レポート印刷 "b.rpt",編集表=する,終了状態=&OK
終了 表 &表番号          /*多重化表を閉じる*/
編集表 "某.TBL"
----------------------------
牡丹はこの処理を呼び出すだけです。牡丹の左クリックイベントか、
あるいは牡丹の機能で手続き実行する。
(ただし挙動未確認です、すいません)
5953 Re:コマンドボタンで条件選択は可能? kaz 2000/05/08-20:02
記事番号5932へのコメント
悲しげさん  こん**は

>あ、rptの形式はどうやら伝票みたいですね。

単票形式です。

>・・・「多重化表」を使ってみること

多重化って何でしょうか?
とてもそそられる感じです。

>----------------------------
>変数宣言 長整数{&表番号,&OK} 
>編集表 "某.TBL"      →処理する伝票の種類に応じて表が違うのです。(28あります)
>多重化           →この意味ですね?
>&表番号=#表番号取得("某.TBL",2)  /*多重化表の表番号*/
>並べ替え ……          /*必要があれば*/
>絞り込み [項目]{"あ"}
>条件(&選択件数>0) レポート印刷 "a.rpt",編集表=する,終了状態=&OK
>絞り込み解除 1
>絞り込み [項目]{"い"}
>条件(&選択件数>0) レポート印刷 "b.rpt",編集表=する,終了状態=&OK
>終了 表 &表番号          /*多重化表を閉じる*/
>編集表 "某.TBL"      →この記述の意味が??です。
>----------------------------

とりあえず,表示されている1枚のみを印刷すればよいので
コマンドボタンの条件選択パラメーターで処理できます。
でも,ゆくゆくは誰でも間違いなく簡単に印刷処理できるように
していきたいのです。

5955 Re:コマンドボタンで条件選択は可能? 悲しげ 2000/05/08-21:24
記事番号5953へのコメント
単票で1枚だけ印刷するなら、特に多重化表を使う必要はありません。
グループ項目のある伝票wfmから実行するんなら、
多重化してグループ選択とは関係ないスッポンポンの
表からやった方が簡単かなと思ったまでです。
で、多重化については、別途お勉強してもらうことにして、
最後の

>編集表 "某.TBL"      →この記述の意味が??です。

ここでこうしているのは、多重化表と云えども別表ですから、
編集表を別表に移した後、その別表を閉じた時、
(もし同時に開いている表が複数あったとしたら)
次にどの表が編集表になるか判らないので、
念のため編集表を指定して元の表に戻しているつもりです。

最初の

>編集表 "某.TBL"      →処理する伝票の種類に応じて表が違うのです。
               (28あります)
さて、多重化の件とは別に、表が28あると云うことで、
う〜ん、もしフォームから自身の対象表を指定して印刷させるのであれば、
印刷対象表を指定する必要はなさそうですが、
それ以外の表を印刷対象とするのなら、項目値が「あ」とか「い」とかの前に、
この時点で印刷対象表を先ず指定しなければならないように思えます。
さらに、印刷するrptも、項目値云々の前にrpt/印刷対象表の関係の方が
先んずる問題のような気もします。
この辺りで、どうも何をしようとしているのか、ますます判らなくなって来ました。(?_?)

あ、ムラムラと想像してきました。(^^;)
28個の表/wfmを作る気なんですね、何か効率が悪いような気がしますけど。(^^;)
で、フォーム(カード)で表示している現在の処理対象行1行のみを
(その項目値によってa .or b.rptで)印刷させたいと。
そしたら、現在処理対象行だけじゃなく、1件目から最後まで全部ズラズラと
印刷されてしまった(項目値によりrptを変えるどころじゃなかった)、と。
この場合のポイントは1行のみの絞り込みだと思います。
一括処理で書けば次のようになります。

行マーク定義 1
絞り込み 行数=1
条件([項目]="あ") レポート印刷 "a.rpt",……
条件([項目]="い") レポート印刷 "b.rpt",……
絞り込み解除 1
ジャンプ 行マーク=1
行マーク解除 1

さて、これをボタンの4行に入れるには? ->宿題 (^^;)

あ、次の方が行数が少ないかもしれない。
(1レコードが必ず1頁に印刷されるのならば絞り込み不要)
次のような感じでちょっと試してみませんか?

機能        パラメータ
--------------------------------------------------------
実行条件   .not #EOF
なし     #代入(&件数,#行番号)
レポート印刷 #cond([項目]="あ","a.rpt",[項目]="い","b.rpt"),開始ペ
       ージ=&件数,終了ページ=&件数


戻る