コンボボックスのリストに変動情報をいれたい
現在、画像のようなカレンダー選択プログラムを作成しております。
選択中のコンボボックスに、2024年(システム年)から前後100年分の年情報をリスト表示させたいです。
どのような作成方法があるかご教示いただけますと幸いです。
よろしくお願いいたします。
-
▼以下案です。
▼その実行例
-
上記例は、選択項目リストに文字列式を埋め込みました。
選択項目リストに文字列式を直接設定せずに
変数を指定することも出来ます。
変数に、変動情報を格納させれば、コンボボックスの選択値も
変動可能だと思います。
他にもコンボボックスには、DBを指定することもできますね。 -
nkmtさん
ご回答ありがとうございます。
変数に変動情報を格納する方法でやってみたいのですが、
下記画像のとおり、式の記述がエラーになってしまいます。
恐れ入りますが、訂正箇所をご教示いただけますと幸いです。
よろしくお願いいたします。
-
速度が今一つですが出来ました。
-
やっぱり速度がおそくて今一つでした。
-
Year関数が返すのは数値なので、文字との合体は出来ません。
STR(Year( date() ),'4') みたいな感じで文字列化が必要です。 -
沢山あるなら、1000年分くらいの
それ用のデータを作ってデータソースに入れてしまうのもよいかと
式だけで、50年くらいなら
EvalStr(RepStr('Str(@+1 ,''4P0'')&'',''&Str(@+2 ,''4P0'')&'',''&Str(@+3 ,''4P0'')&'',''&Str(@+4,''4P0'')&'',''&Str(@+5,''4P0'')&'',''&Str(@+6,''4P0'')&'',''&Str(@+7,''4P0'')&'',''&Str(@+8,''4P0'')&'',''&Str(@+9,''4P0'')&'',''&Str(@+10,''4P0'')&
'',''&Str(@+11,''4P0'')&'',''&Str(@+12,''4P0'')&'',''&Str(@+13,''4P0'')&'',''&Str(@+14,''4P0'')&'',''&Str(@+15,''4P0'')&'',''&Str(@+16,''4P0'')&'',''&Str(@+17,''4P0'')&'',''&Str(@+18,''4P0'')&'',''&Str(@+19,''4P0'')&'',''&Str(@+20,''4P0'')&
'',''&Str(@+21,''4P0'')&'',''&Str(@+22,''4P0'')&'',''&Str(@+23,''4P0'')&'',''&Str(@+24,''4P0'')&'',''&Str(@+25,''4P0'')&'',''&Str(@+26,''4P0'')&'',''&Str(@+27,''4P0'')&'',''&Str(@+28,''4P0'')&'',''&Str(@+29,''4P0'')&'',''&Str(@+30,''4P0'')&
'',''&Str(@+31,''4P0'')&'',''&Str(@+32,''4P0'')&'',''&Str(@+33,''4P0'')&'',''&Str(@+34,''4P0'')&'',''&Str(@+35,''4P0'')&'',''&Str(@+36,''4P0'')&'',''&Str(@+37,''4P0'')&'',''&Str(@+38,''4P0'')&'',''&Str(@+39,''4P0'')&'',''&Str(@+40,''4P0'')&
'',''&Str(@+41,''4P0'')&'',''&Str(@+42,''4P0'')&'',''&Str(@+43,''4P0'')&'',''&Str(@+44,''4P0'')&'',''&Str(@+45,''4P0'')&'',''&Str(@+46,''4P0'')&'',''&Str(@+47,''4P0'')','@','2024'),'')
とかでもいけそうな気もしますけど、2048文字くらいで式テーブルの桁あふれるので
工夫しないとダメそうですね -
こんな感じのデータを用意しておいて
こんな感じで表示するのが速度難はないかもしれません。 -
nkmtさん
ご回答ありがとうございます。
参考にさせていただき、コンボボックスにデータを入れることができました!
ただ、おっしゃる通り速度の問題で、表示がもたついてしまうのでリスト件数を減らそうと思います。
ご教示いただきありがとうございました。
今後ともよろしくお願いいたします。
-
nkmtさん
すみません。ページ更新のタイミングが悪く、反応が遅れてしました。
文字列化が必要ですと、データソースを紐づける方法が良さそうですね。
こちらの方法で、再チャレンジしてみようと思います。
ご教示いただきありがとうございます。
-
質問者ではありませんが、vgさんの投稿は今気が付きました。
-
vgさん
反応が遅れてしまい、すみません。nkmtさんのコメントで気付きました…。
ご回答いただきありがとうございます。
式テーブルには上限桁数があるのですね。大変勉強になります。
また、ご回答の式にある「EvalStr」関数というのは、ヘルプを参照しましたが理解が難しいです。
恐れ入りますが、ご解説いただけますと幸いです。
よろしくお願いいたします。
-
承認待ちになっていたので表示が遅れていたみたいですね
EvalStrは第1引数の文字列をそのまま式として扱えるという関数で
Evalstr("STR(1,'1P0')" ,'') と STR(1,'1P0') は同じにことになります
なので、さっきの式は Str(2024+1 ,''4P0'')&','&str(2024+2・・・・ という式の中身を書いた文字列を作って、それを使うというような趣旨になります。 -
vgさんの投稿がアルファベットがいっぱいだったので承認待ちになったのですかね?
私も承認待ちで投稿がなかなか反映されなかったことが1度ありました。 -
vgさん
ご解説ありがとうございます。
私が最初に投稿した式も、画像のようにEvalStr関数を使うことで実現できました…!
もう1つのRepStr関数も、大変勉強になりました。
ご教示いただきありがとうございました。
-
nkmtさん、vgさん
承認待ちの基準はよく分かりませんが、
返信前に、ページ更新をするように留意いたします。
今回は、いろいろな方法をご教示いただきありがとうございました。
今後ともよろしくお願いいたします。
サインインしてコメントを残してください。
コメント
16件のコメント