| 2024/03/18(Mon) 15:45:48 編集(投稿者)
> 項目名 [番号]に 1から100 までの番号が振られた行データがあります。 > 例えば、 1番、5番、25番の行データを 表形式でなく、1番のレポートデータ、5番のレポートデータ、25番のレポートデータを出力したいとき > > キー入力 (15,10),プロンプト=”何番を印刷しますか ”モード=確定,上書き=する,&印刷数 ,終了状態=&終了状態 > > 上記のようにコマンド表示させ、入力を 1,5,25 と コンマで区切って入力した後、エンターキーを押すことによって、レポート出力したいのです。
当方は一括処理(履歴を含む)は一切使っていないので、
[キー入力]コマンドの替わりにフォームのテキストボックスに入力してコマンドボタンを実行する例をご案内します。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
これは単に入力の方法が異なるだけす。
入力された文字列型データ(例:"1,5,25")を元にして、レポート印刷をする処理(流れ)は一括処理でも[フォーム+イベント処理]でも同じです。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ コンマで区切られた文字列を左から順番に移動して、 ・・・・・・・・・・・・・・・・・・・・・・・
該当するレコードを探索(絞り込み)して、レポート印刷するというロジックなので繰り返し処理が必要になります。
この繰り返しのロジックは、一括処理(履歴を含む)でも、[フォーム+イベント処理]でも同じです。
添付ファイルを解凍すると以下のファイルがあります。
コンマ区切りの.kex コンマ区切りの.WFX ← これを開いてください コンマ区切りの.TBX コンマ区切りの.RPX
なお、添付ファイルは数日を目途に削除しますので、ダウンロードはお早めに願います。
p.s.
<参考>
名札 メイン 変数宣言 局所,文字列{ &m印刷レコードList }
*
手続き定義開始 cmdレポート印刷Click( ) 変数宣言 自動,文字列{ &icon, &title = "cmdレポート印刷Click( ))", &msg } 変数宣言 自動,文字列{ &stringList } 変数宣言 自動,整数 { &ans }
&stringList = #trim( &m印刷レコードList, 4 ) ┌if ( &stringList <> #u ) │ │ &msg = "コンマで区切った番号のレコードをレポート印刷しますか?" │ &msg = &msg + "\n\n"+ &stringList │ メッセージボックス &title, &msg, アイコン = ?, ボタン指定 = 2, 制御文字展開 = する, &ans │ │┌if ( &ans = 1 ) /* OK:1 キャンセル:2 */ ││ ││ 手続き実行 prcレポート印刷( &stringList ) │└end ├else │ │ &msg = "レポート印刷できません" │ &msg = &msg + "\n\n<ヒント>" │ &msg = &msg + "\n\nコンマで区切った番号を入力してから実行してください" │ メッセージボックス &title, &msg, アイコン = !, ボタン指定 = 1, 制御文字展開 = する └end
手続き定義終了
手続き定義開始 prcレポート印刷( 文字列 &stringList ) 変数宣言 自動,文字列{ &icon, &title = "prcレポート印刷( )", &msg } 変数宣言 自動,文字列{ &string } 変数宣言 自動,文字列{ &expression } 変数宣言 自動,文字列{ &comma = #jis( #hex("2C") ) } /* これはコンマ( , ) */ 変数宣言 自動,整数 { &tblNum, &multiTblNum } 変数宣言 自動,整数 { &i, &loop, &step = 1 }
&tblNum = #is表 多重化 &multiTblNum = #is表
&stringList = #半角( &stringList ) &loop = 1 + #文字数( &stringList ) - #文字数( #文字置換( &stringList, &comma, #u ) ) ┌繰り返し &i = 1, &loop, &step │ │ &string = #対応文字列( &stringList, &i ) │ トレース出力 _&i, " ", _&string │ │ 解除 * │ &expression = &string │ 絞り込み [番号]_&expression │ トレース出力 _&expression, " ", _( .not #eof ) │ │┌if ( .not #eof ) ││ ││ レポート印刷 "コンマ区切りの.rpx",プレビュー = する │├else ││ ││ &msg = "レポート印刷できません" ││ &msg = &msg + "\n\n<ヒント>" ││ &msg = &msg + "\n\n[番号]が " + &string + " のレコードが見つかりません" ││ メッセージボックス &title, &msg, アイコン = !, ボタン指定 = 1, 制御文字展開 = する │└end └繰り返し終了
終了 表 &multiTblNum 編集表 &tblNum /* 必要ならば */
手続き定義終了
p.p.s.
なお、絞り込み [番号]_&expression は、[比較式自身を変数:&expression に代入]して[絞り込み]コマンドを実行しています。
しかし、慣れていない人が多いと思いますので、ご自身が慣れていらっしゃる方法で[絞り込み]コマンドを実行してください。
例えば、
&expression = &string 絞り込み [番号]_&expression
は、
絞り込み [番号]{ #num( &string ) } /* [番号]が数値型なので、数値型に変換して比較します */
と同じです。
※21.5 [絞り込み(検索):比較式]コマンドの高度な使い方|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部 http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section21-5
|