(現在 過去ログ65 を表示中)

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

[ 最新記事及び返信フォームをトピックトップへ ]

■10048 / inTopicNo.21)  Re[9]: テーブル内で条件付き合計の計算
  
□投稿者/ ONnoji -(2016/08/26(Fri) 14:26:59)
    投稿のタイミングで横レスにレスがリンクしてしまいましたね。

    私の横レスもご一読ください。


引用返信 [メール受信/OFF] 削除キー/
■10050 / inTopicNo.22)  Re[10]: テーブル内で条件付き合計の計算
□投稿者/ モモンガ -(2016/08/26(Fri) 14:38:04)
    ONnojiさん

    うーむ、知らずに作りこむと痛い目にあいそうですね・・・・
    詳しく教えて頂きありがとうございました。
引用返信 [メール受信/OFF] 削除キー/
■10051 / inTopicNo.23)  コマンドボタンでは[マウス左クリック]を絶対に使わないと思うのは早計です
□投稿者/ ONnoji -(2016/08/26(Fri) 14:49:26)
    2016/08/26(Fri) 14:56:51 編集(投稿者)
    2016/08/26(Fri) 14:52:03 編集(投稿者)


    コマンドボタンでは[マウス左クリック]を絶対に使わないと思うのは早計です。

    特殊な場合には、コマンドボタンでも[マウス左クリック]を使います。


    拙作の具体例を示すと、

    任意のコマンドボタンを

    ・Shift + 左クリックした時

    ・Ctrl + 左クリックした時

    ・普通に左クリックした時(コマンドボタンにフォーカスがある時に[スペース]キーを押した時、コマンドボタンのアクセスキーを押した時を含む)

    という具合に、3つのモードがある場合、

    Shift や Ctrl のフラグを検出するために [マウス左クリック]イベントを使用する必要があります。


    なお、Shift + 左クリックした時 は 参照 長整数 &処理中止 の値を1に

    同様に Ctrl + 左クリックした時 は 参照 長整数 &処理中止 の値を1に

    して、Shift や Ctrl の場合にコマンドボタン本体が実行されないようにします。

    &処理中止 = 1 を忘れると、[マウス左クリック]イベントハンドラの実行が終了した後に、コマンドボタンが実行されてしまいます。

    これがコツですよ。



    拙作:utx_list3.wfm / .kev の具体例を以下に示します。

    ■コマンドボタン:cmd以前開いたファイル のイベントハンドラ

    手続き定義開始 cmd以前開いたファイル::マウス左クリック(長整数 &マウス位置[2],長整数 &明細番号,長整数 &フラグ,参照 長整数 &処理中止)
     変数宣言 自動,文字列{ &icon, &title = "cmd以前開いたファイル::マウス左クリック( )", &msg }

     ** &処理中止 = 1 でコマンドボタン:cmd以前開いたファイルの機能名を実行しない

     ** [shift] = 4
     if ( &フラグ >= 4 .and &フラグ < 8 )
      &msg = "&フラグ = " + #str( &フラグ )
      **手続き実行 INFprcMsgPause( &icon, &title, &msg )

      手続き実行 cmd以前開いたファイルShiftClick( )

      &処理中止 = 1
     end

     ** [Ctrl] = 8 / [Ctrl] + [Shift] = 12
     if ( &フラグ >= 8 )
      &msg = "&フラグ = " + #str( &フラグ )
      **手続き実行 INFprcMsgPause( &icon, &title, &msg )

      **メソッド呼び出し @cmdFileHistoryDimクリア.実行( )
      手続き実行 cmdFileHistoryDimクリアClick( )

      &処理中止 = 1
     end

    手続き定義終了


    ■コマンドボタン:cmd以前開いたファイル

     コマンドボタン:cmd以前開いたファイル
       機能名    機能パラメータリスト
    [1]なし
    [2]表示
    [3]手続き実行  cmd以前開いたファイルClick
    [4]なし


引用返信 [メール受信/OFF] 削除キー/
■10052 / inTopicNo.24)  Re[9]: 桐の場合は、表を多重化することが出来ます
□投稿者/ 通りすがり -(2016/08/26(Fri) 15:38:41)
    通りすがって、斜め読みですが…


     項目集計 [在庫数]
     &残枚数=&合計値
引用返信 [メール受信/OFF] 削除キー/
■10053 / inTopicNo.25)  Re[9]: 桐の場合は、表を多重化することが出来ます
□投稿者/ ONnoji -(2016/08/26(Fri) 15:43:25)
    2016/08/26(Fri) 21:12:33 編集(投稿者)
    2016/08/26(Fri) 15:53:22 編集(投稿者)
    2016/08/26(Fri) 15:51:11 編集(投稿者)
    2016/08/26(Fri) 15:46:44 編集(投稿者)

    > 早速イベントを使って集計結果を表示してみようと思ったのですが、
    > 集計結果を変数にセットする事ができませんでした。
    > (もともと対応してないかもですが・・・)
    >
    > &残枚数に在庫数の合計をセットしたかったのですが、
    > 書き出しで別テーブルに出力した後に、そのテーブルを
    > 参照しないと取得できないのでしょうか??
    >
    > ----------------------------------------------------------
    > 手続き定義開始 prcTest( )
    >  変数宣言 自動,文字列{ &icon, &title = "prcTest( )", &msg }
    >  変数宣言 自動,整数 { &targetTblNum, &tblNum, &done }
    >
    >   &targetTblNum = &hwindow
    >   手続き実行 TBLprcTableMultiOpen( &targetTblNum, &tblNum, &done )
    >
    >   if ( &tblNum )
    > *     編集表  "在庫管理"
    >      絞り込み [品目名]="CD"
    >      行集計  データ行=無効,並べ替え=する,\
    >           小計[在庫数]{[品目名]#項目値,[在庫数]#合計}
    >      代入   &残枚数=[在庫数] ←この行で集計した在庫数をセットしたいです。
    >    終了 表 &tblNum
    >   end
    >   編集表 &hwindow
    >
    > 手続き定義終了


    > 集計結果を変数にセットする事ができませんでした。

    1.テキストボックスに値が表示されない事と、集計結果を変数にセットする事は別のことです。

     テキストボックスに値が表示されない事を解消するには、

       メソッド呼び出し @フォーム.変数変更( )

     を実行して、変数の値を再描画(リドロウ)してください。

    2.予想した値と違うことと、集計結果を変数にセットする事は別のことです。

      現行の場合、行集計の指定が誤っていないですか???

        行集計  データ行=無効, 総計{[在庫数]#合計}

      これならば、総計行が1つなので間違えないでしょう。

    3.行集計の結果を直接確認することをお勧めします。

      ※確認する場合には一括処理から実行しないでフォーム単体でオープンしてください。
      ※当方は一括処理でアプリケーションを作らないので、一括処理から実行した場合にはどうなるかワカリマセン。

      ウィンドウ作成 表

      このコマンドで、行集計の結果が表ウィンドウとして見られます。

      乱暴ですが、確実です。

      ※ウィンドウ作成 表 の代わりに、書き出し 表 でディスクに保存することも有効です。

      なお、

      終了 表 &tblNum

      で、「KU1066:イベントハンドラでは表示中の表を閉じることはできません」になりますが、無視して構いません。

      確認が済んだら、ウィンドウ作成 表 はコメントアウトしてください。

    4.すっぽんぽんの基本状態であることが判っていても、絞込みの直前には

       解除 *

      を実行して、石橋を叩いて渡ってください。


    オシマイ。


    <変更前>

    手続き定義開始 prcTest( )
     変数宣言 自動,文字列{ &icon, &title = "prcTest( )", &msg }
     変数宣言 自動,整数 { &targetTblNum, &tblNum, &done }

     &targetTblNum = &hwindow
     手続き実行 TBLprcTableMultiOpen( &targetTblNum, &tblNum, &done )

     if ( &tblNum )
      *     編集表  "在庫管理"
      絞り込み [品目名]="CD"
      行集計  データ行=無効,並べ替え=する,\
       小計[在庫数]{[品目名]#項目値,[在庫数]#合計}
      代入   &残枚数=[在庫数] /* ←この行で集計した在庫数をセットしたいです。*/
      終了 表 &tblNum
     end
     編集表 &hwindow

    手続き定義終了



    <変更後>

    手続き定義開始 prcTest( )
     変数宣言 自動,文字列{ &icon, &title = "prcTest( )", &msg }
     変数宣言 自動,整数 { &targetTblNum, &tblNum, &done }

     &targetTblNum = &hwindow
     手続き実行 TBLprcTableMultiOpen( &targetTblNum, &tblNum, &done )

     if ( &tblNum )
      **編集表  "在庫管理"


      解除 *

      絞り込み [品目名]="CD"

      **行集計  データ行=無効,並べ替え=する,\
       **     小計[在庫数]{[品目名]#項目値,[在庫数]#合計}

      行集計  データ行=無効, 総計{[在庫数]#合計}

      代入   &残枚数=[在庫数] /* ←この行で集計した在庫数をセットしたいです。*/

      **ウィンドウ作成 表

      メソッド呼び出し @フォーム.変数変更( )

      終了 表 &tblNum
     end
     編集表 &hwindow

    手続き定義終了


    <追伸>

    通りすがりさんが書いてくださったように、行集計するまでもなく

    項目集計 [在庫数]
     &残枚数=&合計値

    でOKじゃないですか。




引用返信 [メール受信/OFF] 削除キー/
■10054 / inTopicNo.26)  Re[10]: 桐の場合は、表を多重化することが出来ます
□投稿者/ 通りすがり -(2016/08/26(Fri) 15:46:44)
引用返信 [メール受信/OFF] 削除キー/
■10055 / inTopicNo.27)  Re[11]: 桐の場合は、表を多重化することが出来ます
□投稿者/ モモンガ -(2016/08/26(Fri) 15:56:11)
    通りすがりさん

    >通りすがって、斜め読みですが…

    華麗に回答して頂きありがとうございます。
    期待した結果が得られました^^
引用返信 [メール受信/OFF] 削除キー/
■10056 / inTopicNo.28)  Re[10]: 桐の場合は、表を多重化することが出来ます
□投稿者/ モモンガ -(2016/08/26(Fri) 16:02:28)
    ONnojiさん

    細かく指導して頂きありがとうございます。
    変更後のサンプルで期待した結果が得られました。

    解除 * などは、変数の初期化と同じで確かに必要ですね。
    現行のシステム不具合対応など、こういった部分の記載漏れも考慮して
    デバックしていきます。

解決済み!
引用返信 [メール受信/OFF] 削除キー/

<前の20件

トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

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

- Child Tree -
- Antispam Version -