■記事リスト / ▼下のスレッド
/ ▲上のスレッド
■14424 / 親記事) |
変数値の取得方法について
|
□投稿者/ ジェダイの桐 -(2024/06/12(Wed) 09:39:57)
| 2024/06/12(Wed) 12:37:48 編集(投稿者)
桐10s Windows10を使用しています。
万年カレンダ―に、会社の休日を表示させたいと思い 休日.TBX と カレンダー.WFX と カレンダー.kexを作成しました。
やりたい事自体は実現出来たのですが、分からない事があります。
prc休日表示 で 休日.TBXにある日付を &mDate[1] <= [] <= &mDate[42] の範囲絞り込んでいます。
#総件数でレコード件数を求め、&recordCountに代入する。 &recordCountの値が 42 の時、休日.TBXの先頭行から最終行まで 項目名 休日 の値を &m休日 に代入する。
このやり方だと、レコード数が 42 ないと思い通りになりません。
&mDate[1] <= [] <= &mDate[42] の範囲を、項目名 休日が定義済のみ絞り込み
&mDate[&i] と 項目名 日付 の値が同じ時、 &mDate[&i] と同じ要素数の &m休日[&i] に 項目名 休日 を代入する
このようなやり方は有りますでしょうか? 分かる方、お時間のある時教えて頂ければ幸いです。
名札 メイン 変数宣言 局所, 日時 { &mReferenceDate, &mFirstDayOfTheMonth, &mDate[42] } 変数宣言 局所, 整数 { &mYear, &mMonth, &mFirstWeekOfTheMonth, &mDay[42], &m元号 } 変数宣言 局所, 文字列 { &m休日[42] }
&mReferenceDate = #日時値 &m元号 = 0 *
手続き定義開始 prcカレンダー作成() 変数宣言 自動, 整数 { &i, &num, &step = 1 }
&mYear = #年( &mReferenceDate ) &mMonth = #月( &mReferenceDate ) &mFirstDayOfTheMonth = #日時値生成( &mYear, &mMonth, 1 ) &mFirstWeekOfTheMonth = #文字位置( "日月火水木金土", #曜日( #日時値生成( &mYear, &mMonth, 1 ) ) )
&num = 1 繰り返し &i = 1, 42, &step
&mDate[&i] = #日数加算( &mFirstDayOfTheMonth, -( &mFirstWeekOfTheMonth - &num ) ) &mDay[&i] = #日( &mDate[&i] ) &num = &num + 1
繰り返し終了
手続き実行 prc休日表示() 手続き実行 prc当日表示() 手続き実行 prc今月日付表示() 手続き実行 prc休日色表示()
手続き定義終了
手続き定義開始 prc休日表示() 変数宣言 自動, 整数 { &i, &step = 1, &multiTblNum } 変数宣言 自動, 長整数 { &recordNum, &recordCount } 変数宣言 自動, 文字列 { &休日 }
多重化 &multiTblNum = #is表
解除 * 絞り込み [日付]{ &mDate[1] <= [] <= &mDate[42] } &recordCount = #総件数
if ( &recordCount = 42 )
ジャンプ 行番号 = 先頭
&i = 1 繰り返し ( .not #eof )
&休日 = #u &休日 = [休日] &m休日[&i] = &休日 &i = &i + 1
ジャンプ 行番号 = 次行
繰り返し終了 else
繰り返し &i = 1, 42, &step
&m休日[&i] = #u
繰り返し終了
end
終了 表 &multiTblNum 編集表 &hwindow
手続き定義終了
・ ・ ・ ・
|
|
|
▽[全レス16件(ResNo.12-16 表示)]
■14438 / ResNo.12) |
Re[6]: 変数値の取得方法について
|
□投稿者/ ジェダイの桐 -(2024/06/14(Fri) 16:19:12)
| ONnojiさん
> >>そうそう、「目からウロコのデータベース桐プログラミング入門」の続編を公開しました。 >> >>気付いていませんでした! >>早速読ませて頂きます(^^♪ > > 「のほか掲示板」で告知していますので、 > > All 「目からウロコの・・・パート2」を公開.. / ONnoji (24/06/11(Tue) 16:31) #1445 1718091910.jpg/44KB > > 読後の感想をフィードバックしていただけると嬉しいです。(^^ゞ
はい! 感想を書き込みますね(^^♪
> p.s. > > 次の過去ログが何かのお役に立つかもしれませんので、ご一読をお勧めします。 > > こちら > ↓ > 過去ログ89 > http://tayu.o0o0.jp/bbs/kiri/cbbs.cgi?mode=al2&namber=13213&no=0&KLOG=89
情報ありがとうございます。 読み込んでいきます!
|
|
|
■14439 / ResNo.13) |
Re[3]: 変数値の取得方法について
|
□投稿者/ ONnoji -(2024/06/14(Fri) 16:51:58)
| >> &indexList = &indexList + #cond( &indexList <> #u, &comma ) + #str( 1 + #日数( &mDate[1], [日付] ) ) >> トレース出力 _&indexList > この時までは、&commma を付ける目的は、トレースした時に見やすくする為だなと思ったんです。(実際見やすいので、確認しやすいです(^^)) > まさか > >&dimNum = #num( #対応文字列( &indexList, &i ) ) > #対応文字列に使用する為とは考えもつきませんでした!
こちら ↓ 29 半角コンマで区切った文字列を利用する|桐の釣魚大全のトップ > フォームアプリケーション教書 第2部 http://silicon7565.html.xdomain.jp/guide/guide_Part2.htm#section29
> プログラムを書き写しました。( コピペではなく、手打ちです! )
コピペで良かったのに。アハハハha
> #対応文字列は、文字列の並びから n番目の文字を取り出す関数です。 > > #対応文字列( 1, 1 ) > #対応文字列( 8, 2 ) > #対応文字列( 14, 3 ) > プログラムを見ただけの時は何故かこの様に理解してしまっていました。
× #対応文字列は、文字列の並びから n番目の文字を取り出す関数です。
〇 #対応文字列は、半角コンマで区切られた文字列から n番目の文字列を取り出す関数です。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・
#sstr( )関数と勘違いしましたね。
> 結果が > :&loop : 11 &i : 1 &indexList : 1,8,14,15,21,22,28,29,35,36,42 &dimNum : 1 > :&loop : 11 &i : 2 &indexList : 1,8,14,15,21,22,28,29,35,36,42 &dimNum : 8 > :&loop : 11 &i : 3 &indexList : 1,8,14,15,21,22,28,29,35,36,42 &dimNum : 14 > これで、&commma の意味と #対応文字列( &indexList, &i ) の意味が分かったのでした(^^ゞ
お疲れ様でした。
> >&m休日 = { "" } /* すべての要素値を未定義にします cf. 桐ヘルプ [代入]コマンド */ > これは、シビレました! > 要素値を未定義にすると言う発想が全く有りませんでした。
休日の配列変数を1〜42すべてクリアしなければならないでしょ。
ワザワザ繰り返し...繰り返し終了でクリアしても良いですが、手っ取り早いのと意味が明瞭になるので、これは便利ですね。
手っ取り早いさよりも、意味が明瞭になることの方が価値がありますね。
> 疑問 > >&indexCount = 1 + #文字数( &indexList ) - #文字数( #文字置換( &indexList, &comma, #u ) ) > この値が 11 になる理由が分かりませんでした。
次のように計算しているだけですよ #文字置換( )で半角コンマを消しています ↓ 1 + #文字数( "1,8,14,15,21,22,28,29,35,36,42" ) - #文字数( "18141521222829353642" )
種明かしでした。アハハハha > いつも、丁寧なプログラム有難うございます! > 今回の質問事項は、自分の中で結構応用範囲が広く使えると感じています。 > たかがカレンダーなのですが、 > 変数のソース値に日にちを入れる(これだけならNULLで可能) > 表にある情報を変数に入れる(今の私にはかなりハードルが高かったです) > 等、桐のプログラムを勉強する上で基本的な事が詰め込まれていたと思います。
ジェダイの桐さんが情熱が持てるテーマなので、頑張れたと思いますね。
|
|
|
■14440 / ResNo.14) |
Re[4]: 変数値の取得方法について
|
□投稿者/ ジェダイの桐 -(2024/06/17(Mon) 10:15:52)
| ONnojiさん
>>疑問 >>>&indexCount = 1 + #文字数( &indexList ) - #文字数( #文字置換( &indexList, &comma, #u ) ) >>この値が 11 になる理由が分かりませんでした。 > > 次のように計算しているだけですよ #文字置換( )で半角コンマを消しています > ↓ > 1 + #文字数( "1,8,14,15,21,22,28,29,35,36,42" ) - #文字数( "18141521222829353642" ) > > 種明かしでした。アハハハha
理解出来ました! 素直に一文字づつ数えていたのですね(^^♪
本当にありがとうございましたm(__)m
|
解決済み! |
|
■14441 / ResNo.15) |
Re[5]: 変数値の取得方法について
|
□投稿者/ うにん -(2024/06/18(Tue) 20:50:12)
| #対応文字列数2( str1 ,str2 ) なんて関数ができてますね。 「str1 内に str2 で区切られた部分文字列がいくつあるかを求めます。」
|
|
|
■14442 / ResNo.16) |
Re[6]: 変数値の取得方法について
|
□投稿者/ ジェダイの桐 -(2024/06/19(Wed) 17:21:49)
| うにんさん
こんにちは。
> #対応文字列数2( str1 ,str2 ) > なんて関数ができてますね。 > 「str1 内に str2 で区切られた部分文字列がいくつあるかを求めます。」
#対応文字列数2 という関数を新たに作った(需要が有る)のなら #対応文字列 #対応文字列2だけでは実現出来ない 何かがあるのかもしれないないですね。
|
|
|
■記事リスト /
レス記事表示 →
[親記事-9]
[10-16]
|