過去の桐井戸端BBS (桐ver.9)
20906 グループ移動をコマンドボタンのみで行いたい La未知 2003/06/16-19:23
 コマンドボタンにグループ指定を設定して、パラメータで前・次へ
移動していますが、指定した値へ移動するにはどうするのか、
いろいろ試行錯誤しましたが、思うようにできません。

 結果としてボタンのクリックだけで移動できれば、イベント処理でもかまいません。

 具体的には、営業日報で[訪問日][訪問先][訪問内容]のTBLを[訪問日]で
グループ化した日別日報.wfmのフォーム上に「次の日」や「前の日」は簡単にボタン配置できましたが、
「翌週」や「翌月」それと「本日」のボタンを作りたいのですが、うまくできません。

 やってみた事
ボタンのオブジェクト属性→コマンドボタンで、
   < 機能名 >  <機能パラメータリスト>
  1.グループ検索   なし
  2.手続き実行    今日へ移動

イベント定義
  手続き定義開始 今日へ移動()
    メソッド呼び出し @訪問日.編集文字列設定("H15-06-16")
  手続き定義終了

 上記の様に設定しましたが、グループの[訪問日]に今日の日付は入りますが、
さらにリターンキーを押さないと表示が変わりません。
「今日」のボタンクリックだけで行う方法をアドバイス願います。

20907 Re:グループ移動をコマンドボタンのみでする方法は? 悲しげ 2003/06/16-20:25
記事番号20906へのコメント
どもっ、La未知さん
ひとつの例です。

ボタン名 機能     同パラ
来週   手続き実行  移動,来週
来月   手続き実行  移動,来月
本日   手続き実行  移動,本日
先週   手続き実行  移動,先週
先月   手続き実行  移動,先月

kev ※項目[訪問日]のデータ型が「日時」の場合
手続き定義開始 移動(文字列 &指定)
 変数宣言 自動,日時{&日付,&本日=#日時値生成(&年,&月,&日)}
 if(&指定="来週")
  &日付=#日数加算(&本日,7)
 else if(&指定="来月")
  &日付=#月数加算(&本日,1,1)
 else if(&指定="本日")
  &日付=&本日
 else if(&指定="先週")
  &日付=#日数加算(&本日,-7)
 else if(&指定="先月")
  &日付=#月数加算(&本日,-1,1)
 end
 グループ検索 {[訪問日]=&日付},終了状態=&実行リターン
 条件(&実行リターン<>1) 確認 &指定+"のデータは存在しませんでした!"
手続き定義終了

20912 Re:解決、グループ移動のコマンドボタン La未知 2003/06/17-00:36
記事番号20907へのコメント
 悲しげさん、早速のアドバイスありがとうございました。

 非常に簡便な記述で、私の力でなかな思い浮かば無い内容でしたので、
取りあえずそのまま転用させて頂き動作確認いたしました。 動作okです。

 これだけの事に丸2日間も頭を悩ませていました。
私も、グループ検索コマンドを使おうと思って記述してみましたが、
「KU1048:フォームに組み込まれている状態ではこのコマンドは使用できません 」とかのエラー表示が出たりして、
あれこれ悩んでいました。

 悲しげさんの正しいコマンド記載を拝見させて頂いて、原因はコマンドの記述方法が誤っていた事にあったようです。

 第一段階が解決できましたので、これから存在しない日付のグループを指定した時に
自動的に次の日付へ移動する様に改良を加えるべく、また試行錯誤です。


 試行錯誤と云えば、桐5の時代から愛用してしまったこのソフトですが、
単純な表データから始めて、使いながら少しずつ改良が加えられる手軽さの魔力に染まってしまい、
ついには一括処理・イベント処理と見よう見まねで手を出してしまい、
こんな事で良いのか考えてしまいます。

 桐9の一括処理・イベント処理の例題がたくさん載っている参考書等をご存知でしたら、ご紹介願います。

20926 Re:解決、グループ移動のコマンドボタン 悲しげ 2003/06/17-22:17
記事番号20912へのコメント
>第一段階が解決できましたので、これから存在しない日付のグループを
>指定した時に自動的に次の日付へ移動する様に改良を加えるべく、また
>試行錯誤です。

その後、10時間ほど過ぎていますが、そろそろ答は出ましたでしょうか?
一応、解答例(^^;)を出しておきます。

 *グループ検索 {[訪問日]=&日付},終了状態=&実行リターン
 *条件(&実行リターン<>1) 確認 &指定+"のデータは存在しませんでした"
 繰り返し
  グループ検索 {[訪問日]=&日付},終了状態=&実行リターン
  if(&実行リターン=1)
   繰り返し中止
  else
   メッセージボックス "確 認" \
    ,&指定+"のデータは存在しませんでした。\nその翌日に移動しますか?" \
    ,アイコン=?,ボタン指定=5,制御文字展開=する,&実行リターン
   条件(&実行リターン<>6) 繰り返し中止
   &日付=#日数加算(&日付,1)
  end
 繰り返し終了


それと前回の
  &本日=#日時値生成(&年,&月,&日)
のところは変数 &日 を変更して試した名残でして、ふつうは
  &本日=#日時日付(#日時値)
と書くと思います。


>桐9の一括処理・イベント処理の例題がたくさん載っている参考書等
>をご存知でしたら、ご紹介願います。

私は書籍は存じません。が、例なら
http://isweb8.infoseek.co.jp/animal/mokuchan/download/dl-list.htm
辺りはどうでしょう?

20953 Re:解決、グループ移動のコマンドボタン La未知 2003/06/19-12:12
記事番号20926へのコメント
悲しげさん、早速ご解答を頂いてありがとうございます。

 急に泊まりの出張が入ってしまい、丸一日アクセスしてませんでした。
レスを頂いてかなり時間が経ってしまい、お詫び申し上げます。

 さて、ご指導頂いておりましたコマンドの使い方ですが、私の記述したものは
とても人に見せられるものでないので、恥ずかしいのですが、以下の通りでした。
一度プログラミングの基本を学ばないいけない、と思いつつ安易に分岐コマンドやifでその場処理してるのが現状です。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
グループ検索 {[訪問日]=&日付},終了状態=&実行リターン

繰り返し(&実行リターン<>1)
if(&指定="来週")
   &日付=#日数加算(&日付,1)
else if(&指定="来月")
   &日付=#日数加算(&日付,1)
   else if(&指定="本日")
   &日付=#日数加算(&日付,-1)
   else if(&指定="先週")
      &日付=#日数加算(&日付,-1)
else if(&指定="先月")
      &日付=#日数加算(&日付,-1)
 end
グループ検索 {[訪問日]=&日付},終了状態=&実行リターン
     
繰り返し終了
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
 ご覧の通り、悲しげさんの記載例を一日分追加して繰り返しただけです。


>    ,アイコン=?,ボタン指定=5,制御文字展開=する,&実行リターン
>   条件(&実行リターン<>6) 繰り返し中止

 この辺の使い方が私にはまだまだですし、&実行リターン 変数の使い方も
勉強しないといけません。
参考となるホームページの紹介も頂きまして、本当にありがとうございます。

20958 Re:解決、グループ移動のコマンドボタン 悲しげ 2003/06/19-17:28
記事番号20953へのコメント
どもっ、La未知さん

>&実行リターン 変数の使い方も勉強しないといけません。

たぶん誤解はないと思うのですが、この場合の変数「&実行リターン」と云うのは、
既存の変数をちょっと借りただけのことでして、何でもよかったのです。
「メッセージボックス」コマンドの終了状態の返り値(つまりどのボタンを押したか等)を受ける変数ですから、
改めて「&msg」なる整数系の変数を宣言して書いた方が判りやすいかったかもしれません。
(このことは、その前の「グループ検索」コマンドの終了状態の返り値を受ける変数についても云えます)

……以上、無用な補足である可能性が高いですが(^^;)、念のため。

戻る