HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
ファイル一覧
検索
過去ログ
[
最新記事及び返信フォームをトピックトップへ
]
[ トピック内全6記事(1-6 表示) ] <<
0
>>
■14218
/ inTopicNo.1)
レポート印刷
▼
■
□投稿者/ maru
-(2024/03/18(Mon) 06:57:54)
windows10
桐10sを使用しています。
項目名 [番号]に 1から100 までの番号が振られた行データがあります。
例えば、 1番、5番、25番の行データを 表形式でなく、1番のレポートデータ、5番のレポートデータ、25番のレポートデータを出力したいとき
キー入力 (15,10),プロンプト=”何番を印刷しますか ”モード=確定,上書き=する,&印刷数 ,終了状態=&終了状態
上記のようにコマンド表示させ、入力を 1,5,25 と コンマで区切って入力した後、エンターキーを押すことによって、レポート出力したいのです。
ヒントをご教授お願いいたします。
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14219
/ inTopicNo.2)
Re[1]: レポート印刷
▲
▼
■
□投稿者/ ONnoji
-(2024/03/18(Mon) 10:59:51)
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
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14220
/ inTopicNo.3)
Re[2]: レポート印刷
▲
▼
■
□投稿者/ maru
-(2024/03/18(Mon) 18:45:43)
早速のアドバイスありがとうございます。
参考の手続きの流れ、研究させていただきます。
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14221
/ inTopicNo.4)
Re[3]: レポート印刷
▲
▼
■
□投稿者/ ONnoji
-(2024/03/18(Mon) 23:07:07)
2024/03/18(Mon) 23:37:22 編集(投稿者)
老婆心ながら、補足を・・・(^^ゞ
サンプルでは、絞り込みを
&expression = &string
絞り込み [番号]_&expression
または
絞り込み [番号]{ #num( &string ) } /* [番号]が数値型なので、数値型に変換して比較します */
のように、1件ずつ行っています。
これって、超面倒臭く感じたかもしれませんね。(^^ゞ
もちろん、やり方によっては "1,5,25" を元にして一発で絞り込むことも可能です。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
しかし、なぜそうしなかったのかというと、
例えば、もしも、"1,5,25,999" のように、該当しない値 "999"が含まれている場合、
4レコード絞り込まれずに、3レコード絞り込まれますが、
その場合に絞り込みに失敗した値 "999"の失敗情報はフィードバックされません。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
ということで、面倒ながら、"1" → "5" → "25" → "999" とコンマで区切られた文字列を左から1件ずつ調べている次第です。
なお、サンプルでは多重化していますが、レコード移動が見苦しくなければ、多重化はしなくてもOKですよ。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
p.s.
今回の "1,5,25" のようにコンマで区切って指定するという印刷の場合のUI(ユーザインターフェース)は普通に見受けられますが、
桐のフォームならば、フォーム上でチェックボックスのオンで指定するというUI(ユーザインターフェース)も可能かと思いますよ。
おそらく、チェックボックスのオンで指定するUI(ユーザインターフェース)の方が直感的だと思います。
しかし、もちろん、個人個人の好みがあるので、最終的にはどちらとも決められませんが・・・
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14222
/ inTopicNo.5)
Re[4]: レポート印刷
▲
▼
■
□投稿者/ ONnoji
-(2024/03/19(Tue) 14:34:19)
2024/03/19(Tue) 15:29:21 編集(投稿者)
> サンプルでは、絞り込みを
>
> &expression = &string
> 絞り込み [番号]_&expression
>
> または
>
> 絞り込み [番号]{ #num( &string ) } /* [番号]が数値型なので、数値型に変換して比較します */
>
> のように、1件ずつ行っています。
>
> これって、超面倒臭く感じたかもしれませんね。(^^ゞ
>
> もちろん、やり方によっては "1,5,25" を元にして一発で絞り込むことも可能です。
> ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
もしも、簡易的で良しというのであれば、※元々の質問の趣旨だったかな?
次のように "1,5,25" を元にして一発で絞り込むことも可能です。※おススメはしませんけれど(^^ゞ
手続き定義開始 cmdTestClick( )
変数宣言 自動,文字列{ &icon, &title = "cmdTestClick( )", &msg }
変数宣言 自動,文字列{ &stringList }
変数宣言 自動,文字列{ &expression }
&stringList = #trim( &m印刷レコードList, 4 )
&stringList = #半角( &stringList )
&expression = "#対応番号( &stringList, #str( [番号] ) ) > 0"
解除 *
絞り込み [番号]_&expression
if ( .not #eof )
レポート印刷 "コンマ区切りの.rpx",プレビュー = する
end
手続き定義終了
p.s.
詳しくは次のwebページを参考にしてください。
21.6 比較式の左辺と右辺の両方に計算式を指定する|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部
http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section21-6
p.p.s.
もちろん、
&expression = "#対応番号( &stringList, #str( [番号] ) ) > 0"
解除 *
絞り込み [番号]_&expression
は、
解除 *
絞り込み [番号]{ #対応番号( &stringList, #str( [番号] ) ) > 0 }
と同じです。
&expression に関しては、単純に私( ONnoji )の習慣でして[比較式をリテラルに書かない]というだけですよ。(^^ゞ
引用返信
[メール受信/OFF]
削除キー/
編集
削除
■14226
/ inTopicNo.6)
Re[1]: レポート印刷
▲
▼
■
□投稿者/ natsu
-(2024/03/21(Thu) 00:39:31)
> 上記のようにコマンド表示させ、入力を 1,5,25 と コンマで区切って入力した後、エンターキーを押すことによって、レポート出力したいのです。
[番号]が定義されている表を"元表.tbl"として、この"元表.tbl"に文字列項目[ダミー]を追加してください。
次に、キー入力で得られたコンマ区切りの文字列をCSVファイル変換を経由して、桐のテーブル"tenchi.tbl"に変換します。
"元表.tbl"の[ダミー]に対し、置換(#表引き)で該当行にフラグを付与します。 こあとは、[ダミー]をフラグあり行で絞り込んでレポート印刷実行です。
"元表.tbl"の[ダミー]フラグの初期化や絞り込み解除、中間ファイルの削除などはお好みでどうぞ。
最近はエクセルVBAばっかりで桐のコマンドをすっかり忘れてしまいましたが、桐はデータベースだけあってスクリプトの行数が少なくてすみますね。
変数宣言 固有,文字列{ &印刷数 }
変数宣言 固有,数値{ &終了状態 }
キー入力 (15,10),プロンプト=”何番を印刷しますか ”モード=確定,上書き=する,&印刷数 ,終了状態=&終了状態
印字開始 "INSATSU.csv"
印字 "X," + &印刷数
印字終了
ファイル変換 CSV,"INSATSU.csv","INSATSU.tbl",項目名行=あり,自動設定=する,データ開始行=1
書き出し 転置,"tenchi.tbl",データ型=文字列,*
表 "tenchi.tbl"
項目属性変更 変更, [X],{,"整数"}
項目属性変更 追加, {"Y","文字列"}
置換 [Y]="●"
表 "元表.tbl"
置換 [ダミー]=#表引き([番号],=,"tenchi.tbl",[X],[Y])
表
引用返信
[メール受信/OFF]
削除キー/
編集
削除
このトピックをツリーで一括表示
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
削除キーを覚えておくと、自分の記事の編集・削除ができます。
URLは自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
使用例:
No123 → 記事No123の記事リンクになります(指定表示)。
No123,130,134 → 記事No123/130/134 の記事リンクになります(複数表示)。
No123-130 → 記事No123〜130 の記事リンクになります(連続表示)。
■お願い−−−−−−−
質問には、できるだけ「OS・桐 Ver」等ご記入願います
将来ここに掲載されました内容を、桐のファイルへ変換予定です。
できましたら、3,500文字以内位での投稿お願い致します
■ご注意(Comment)−−−−−
通常モード・・・通常文章等
図表モード・・・等幅表示(イベントや数字等を記入したとき:
初期設定
)
■
解決しましたら最下段にチェックを入れてください
■
引用文は、最小限に、お願いいたします
Name
/
E-Mail
/
└> 関連するレス記事をメールで受信しますか?
NO
YES
/ アドレス
非公開
公開
Title
/
メッセージ中には下記URLと同じURLを書き込まないで下さい
URL
/
Comment/ 通常モード->
図表モード->
(適当に改行して下さい/半角10000文字以内)
■No14219に返信(ONnojiさんの記事) > 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 >
File
/
アップ可能拡張子=> /
.gif
/
.jpg
/
.jpeg
/
.png
/.txt/.lzh/.zip/.mid
圧縮ファイル[lzh,zip]は、事前に解凍してご利用下さい。
1) 太字の拡張子は画像として認識されます。
2) 画像は初期状態で縮小サイズ250×250ピクセル以下で表示されます。
3) 同名ファイルがある、またはファイル名が不適切な場合、
ファイル名が自動変更されます。
4) アップ可能ファイルサイズは1回
100KB
(1KB=1024Bytes)までです。
5) ファイルアップ時はプレビューは利用できません。
6) スレッド内の合計ファイルサイズ:[0/500KB]
残り:[500KB]
パスワード
/
半角小文字で「ケイ・アイ・アール・アイ」を入力
削除キー
/
(半角8文字以内)
解決済み!
BOX/
解決したらチェックしてください!
プレビュー/
Mode/
通常管理
表示許可
Pass/
HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
ファイル一覧
検索
過去ログ
-
Child Tree
-
-
Antispam Version
-