HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

No14028 の記事


■14028 / )  Re[3]: 変数を反映させたい
□投稿者/ ONnoji -(2023/11/02(Thu) 20:57:58)
    2023/11/03(Fri) 16:01:01 編集(投稿者)
    2023/11/02(Thu) 21:13:54 編集(投稿者)

    > 「変数宣言コマンドで上書きすると困る」との意ではありません。

    了解です。(^^ゞ

    > kevで頭初に宣言した共通変数です。
    > wfxでその変数に取得した値をそっくりそのままcmxに反映させたいとの趣旨です。

    貴殿は桐10だそうですから、イベント処理ファイルの拡張子は.kex ですよね。
    確認しますが、貴殿がkevと称している物はイベント処理ファイルの事でよろしいですね。
    同様にwfxと称している物はフォームの事でよろしいですね。

    > 具体的には平成35年10月を&指定年=35,&指定月=10、とwfxで取得し、
    > cmxの「年月」 {&指定年*100+&指定月}にしたい。「年月=3510としたい。

    &指定年 の値が 35
    &指定月 の値が 10

    である時、

    &年月 = &指定年 * 100 + &指定月

    とすれば、 &年月 の値は 35 * 100 + 10 であるから、3510 となるハズ。

    ただし、&指定年・&指定月・&年月の各変数のデータ型は、(長)整数または数値(通貨)である。

    ここまではOKでしょうか?

    データ型が文字列になっているなんてことはありませんか? ※エラーが表示されるはずです

    と、最初の一歩を書きましたが、単純にデータ型の問題ならば簡単に解決します。

     ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

    しかし、データ型が(長)整数または数値(通貨)の場合に、

    &年月 = &指定年 * 100 + &指定月

    の結果が、3510 にならずに別の値になるということでしょうか?? ※値が空っぽの場合を含みます

    おそらく、フォーム(.wfx)に2つのテキストボックス(仮称:txt指定年 と 仮称:txt指定月)が配置されていて、

    それぞれのテキストボックスの[ソース]が、&指定年 と &指定月 なんでしょうね。

    ここで問題になるのは、&年月 = &指定年 * 100 + &指定月 を計算するタイミングですが、

    仮称:txt指定年 と txt指定月 のテキストボックスのどちらかにキャレット(縦棒の入力カーソル)が表示されているタイミングではありませんか??

    何を言いたいかというと、テキストボックスに数字が見えていても、入力を確定していないと、値が変数に反映されないということです。
    ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

    この場合、コマンドボタンで確定する方法が一番簡単です。
    以下に拙作webより引用します。

      【引用】13 コマンドボタンでプロシージャを実行する|桐の釣魚大全のトップ > フォームアプリケーション教書 第1部

       ■表示モードに遷移してからプロシージャを実行する
       プロシージャ内で実行するコマンド・メソッドは、表示モードでしか実行できないものが多いです。
      そのために、呼び出したプロシージャ内で、[更新モード設定]メソッドで表示モードにすることも出来ますが、
      次のように[機能名:表示]を加えることで、簡単に表示モードに遷移出来ます。

      ┌─────────────────────────────────────────────┐
      │オブジェクト名: cmdプロシージャを実行する                        │
      │標題     :プロシージャを実行する                          │
      │                                             │
      │ 機能名      機能パラメータリスト                         │
      │1 表示                                          │
      │2 手続き実行    プロシージャ名,引数1,引数2,… ,引数n             │
      │3 なし                                          │
      │4 なし                                          │
      └─────────────────────────────────────────────┘

    ※ [機能名2]の[手続き実行]は、[開く]で一括処理(.cmx)を実行するとしてもOKです。

    ※なお、私( ONnoji )は、[開く]で一括処理(.cmx)を実行することは絶対にお勧めしませんが、
    ※プログラムの作り方は自由なので、とやかくとは申しませんけれど・・・
    ※ 2.2 フォーム+履歴を改変した一括処理
    ※ http://silicon7565.html.xdomain.jp/guide/guide_Part1.htm#section2-2

    と、以上のようにテキストボックスの入力値が[確定]されていない状態で計算をしている可能性を指摘したいと思います。

    なお、テキストボックスの入力値を[確定]させるには、
     ・F4キーを押して表示モードに遷移する(コマンドボタンの機能名[表示]と同じ効果があります) 
     ・tabキーを押して別のオブジェクトへフォーカスを移動する
    でも出来ますよ。

    p.s.

    > 具体的には平成35年10月を&指定年=35,&指定月=10、とwfxで取得し、
    > cmxの「年月」 {&指定年*100+&指定月}にしたい。「年月=3510としたい。
     ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
       ↑
    とにかくこの調子では誰にも理解できませんよ。

    この説明ならば、[代入]コマンドで
     代入 &年月 = &指定年 * 100 + &指定月
    または単に
      &年月 = &指定年 * 100 + &指定月 ※[代入]コマンドは省略できます
    を実行すればという回答になります。

    他人に判るように説明するのは難しいですが、質問する時のコツは、

    1.まず、具体的に何々をどのようにして
    2.実行したら、期待した結果と違う
    3.結果がどのように違うかを具体的に示す 値が空っぽ、エラーが表示される、etc.

    このように具体的に書いてもらわないと、謎解きゲームをしているようになってしまいますよ。


返信 [メール受信/OFF] 削除キー/


Mode/  Pass/

HOME HELP 新規作成 新着記事 ツリー表示 スレッド表示 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -