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

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

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

■10021 / inTopicNo.1)  テーブル内で条件付き合計の計算
  
□投稿者/ モモンガ -(2016/08/23(Tue) 11:53:06)
    お世話になっております。

    在庫数をテーブル内で品目ごとに自動計算させたいのですが
    条件付き合計は可能でしょうか?

    環境:windows8,桐9S

    【例】
    品目名 利用区分(1:補充 2:使用)  使用枚数 在庫数
    CD   1                100  85
    DVD   1                 50  44
    CD   2                 3  85
    DVD   2                 4  44
    CD   2                 10  85
    CD   2                 5  85
    DVD   2                 2  44
    CD   2                 3  85
    CD   2                 4  85
    CD   1                 10  85

    在庫数の結果
    CD :100-3-10-5-3-4+10=85
    DVD:50-4-2=44

1471920786.zip
/5KB
引用返信 [メール受信/OFF] 削除キー/
■10024 / inTopicNo.2)  Re[1]: テーブル内で条件付き合計の計算
□投稿者/ たゆー -(2016/08/23(Tue) 16:40:27)
    計算式を設定してみました

    > 条件付き合計は可能でしょうか?
    この意味は不明ですが
    > 在庫数の結果
    このようになります
    参考にされてください


1471938027.zip
/7KB
引用返信 [メール受信/OFF] 削除キー/
■10025 / inTopicNo.3)  Re[1]: テーブル内で条件付き合計の計算
□投稿者/ Vision Maker -(2016/08/23(Tue) 22:11:29)

    > 在庫数をテーブル内で品目ごとに自動計算させたいのですが

    自動計算は、履歴や一括処理を使ってもいいのでしょうか?

    > 条件付き合計は可能でしょうか?

    在庫の項目計算式を下記のようにします。

    #条件選択( [利用区分]="2" , [使用枚数]×-1,1, [使用枚数] )

    行集計を使って計算します。

    > 在庫数の結果
    > CD :100-3-10-5-3-4+10=85
    > DVD:50-4-2=44
825×237 => 250×71

1471957889.png
/38KB
引用返信 [メール受信/OFF] 削除キー/
■10026 / inTopicNo.4)  Re[2]: テーブル内で条件付き合計の計算
□投稿者/ モモンガ -(2016/08/24(Wed) 10:16:02)
    たゆーさん、Vision Makerさん

    ありがとうございます。
    教えて頂いた方法をもとに色々と試してみましたが
    力不足で実現できませんでした。

    やりたい事としては、入力画面で登録・修正する際に
    常に品目全体の総数を表示させたいです。

    今回の作成して頂いたサンプルの場合ですと
    CDは全て85
    DVDは全て44
    と、表記したいです。

    SQLだと品目名でグループ化して合計した結果と元データを連結する事で
    合計を表示できるのですが、桐の場合は実現方法が見つかりません・・・


1472001362.zip
/12KB
引用返信 [メール受信/OFF] 削除キー/
■10028 / inTopicNo.5)  Re[3]: テーブル内で条件付き合計の計算
□投稿者/ たゆー -(2016/08/24(Wed) 13:46:13)
    せっかくフォームまで添付いただきましたが、イベントが添付されていません
    フォームの変数エラーがでないようそれだけ追加しました

    さて、そのフォームに
    「↑残枚数には常に最新の残数を表示させたいです。」と記載されてますが
    それは出来ないですね
    ○行追加状態や、終端行へいったときは、項目の値は表示されません
    また、DVDまたはCD行へ移動しないとそれぞれの残数はわかりません
    そこで、仮のグループ項目を作成し、それぞれの現在残を常に
    表示するサンプルを作成してみました。参考にしてください
    もっとイベント他を利用すればいろいろ出来ると思います


1472013973.zip
/12KB
引用返信 [メール受信/OFF] 削除キー/
■10029 / inTopicNo.6)  Re[4]: テーブル内で条件付き合計の計算
□投稿者/ モモンガ -(2016/08/24(Wed) 14:35:24)
    たゆーさん

    回答ありがとうございます。
    > せっかくフォームまで添付いただきましたが、イベントが添付されていません
    > フォームの変数エラーがでないようそれだけ追加しました

    すみません。残枚数に変数が残っていましたね^^;
    イベントで絞込みと小計を行った結果を残枚数にセットする事で
    実現できないかと思い試したのですが、フォームに表示されているデータも
    絞り込まれてしまい一旦挫折しました^^;

    > 「↑残枚数には常に最新の残数を表示させたいです。」と記載されてますが
    > それは出来ないですね
    > ○行追加状態や、終端行へいったときは、項目の値は表示されません
    > また、DVDまたはCD行へ移動しないとそれぞれの残数はわかりません
    > そこで、仮のグループ項目を作成し、それぞれの現在残を常に
    > 表示するサンプルを作成してみました。参考にしてください
    > もっとイベント他を利用すればいろいろ出来ると思います

    この方法ですと品目が可変の場合に厳しくなってくるので、
    おっしゃる通りイベントの処理を使って解決できないか考えてみます。

    あと関連してよくわかっていないところが2点ほどあり、
    ご教授頂けると助かります。

    @対象フォームが使用(リンク)しているテーブルと同じテーブルを、
     フォーム内のイベントで対象フォームに影響なく操作(集計・参照等)可能でしょうか?
     (VB等の場合:cloneや別のRecordsetを使用)


    Aデバッグの方法についてですが、クリック時などのイベントにブレイクポイントを設けて
     フォームから実行しても、ブレイクポイントで止まってくれません。
     現状は一括処理を新たに作ってフォームを呼び出す手前にブレークポイントを設けて
     ボタンクリック時までステップ実行していますが、良い方法はないでしょうか?
     (私の操作方法が悪いのかもですが・・・)


引用返信 [メール受信/OFF] 削除キー/
■10030 / inTopicNo.7)  桐の場合は、表を多重化することが出来ます
□投稿者/ ONnoji -(2016/08/24(Wed) 15:03:19)
    2016/08/24(Wed) 17:07:04 編集(投稿者)
    2016/08/24(Wed) 15:05:18 編集(投稿者)

    > @対象フォームが使用(リンク)しているテーブルと同じテーブルを、
    >  フォーム内のイベントで対象フォームに影響なく操作(集計・参照等)可能でしょうか?
    >  (VB等の場合:cloneや別のRecordsetを使用)

    桐の場合は、表を多重化することが出来ます。

    多重化した表は、素のままでオープンします。つまり並べ替えも絞込みもされていない状態です。

    分かりやすく言うと「すっぽんぽん」でオープンということです。

    表示モードで[多重化]コマンドを実行すれば、表はいくつでも多重化できます。

    いくつでも多重化すると、表のオープン数をオーバーしたり、編集表の切り替えが大変になります。

    そのためにコツとしては

    ・多重化したら、必要がなくなったら閉じる。編集表をフォームの編集対象表に戻すのを忘れないこと。

    ・または、一度多重化したら、次回は新たに多重化しないで、編集表を切り替えるだけにする。

    ※フォームの編集対象表には、編集表 &hwindow で切り替えられます。

    詳しくは、コマンドリファレンスをお読みください。

    なお、一括処理を離れて、表編集でもメニューバー[ウィンドウ]メニュー → [新しい表を開く]で多重化できます。

    表編集で多重化を試す方が多重化を早く実感出来ると思います。


    なお、具体例があったほうが良いと思うので、以下に拙作を例示しておきます。


    <イベント処理の一般手続きの使用例>

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

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

      if ( &tblNum )

       ** 実行コマンド群

       終了 表 &tblNum
      end
      編集表 &hwindow

     end

    手続き定義終了



    ■プロシージャ:TBLprcTableMultiOpen

    手続き定義開始 TBLprcTableMultiOpen( 整数 &targetTblNum, 参照 整数 &tblNum, 参照 整数 &done )
     変数宣言 自動,文字列{ &icon, &title = "TBLprcTableMultiOpen( )", &msg }
     変数宣言 自動,文字列{ &targetTblName, &currentTblName, &yen = #jis( #hex("5C") ) }
     変数宣言 自動,整数 { &primaryTblNum, &secondaryTblNum, &multiTblNum, &debug = 0 }
     変数宣言 自動,整数 { &traceON }
     &traceON = #対応番号( #uc( #変数( "INFmTraceModuleNameList" ) ), "ALL" ) .or #対応番号( #uc( #変数( "INFmTraceModuleNameList" ) ), "TBL" )
     変数宣言 自動,文字列{ &traceMsg }
     &traceMsg = #cond( #変数( "INFmTraceFormPathAdd" ), &INFmMyWfmPath ) + &INFmMyWfmName + " hdl=" + #last( " " + #str( &hwindow ), 2 ) + ">" + &title
     条件 ( &traceON ) トレース出力 &traceMsg + "を実行開始しました"

     &tblNum = #u
     &done = 0

     &targetTblName = #表ファイル名( &targetTblNum )
     if ( &targetTblName <> #u )

      &primaryTblNum = #表番号取得( &targetTblName, 1 )
      &secondaryTblNum = #表番号取得( &targetTblName, 2 )
      if ( &primaryTblNum .and &secondaryTblNum )
       if ( &primaryTblNum = &targetTblNum )
        &multiTblNum = &secondaryTblNum
       else
        &multiTblNum = &primaryTblNum
       end
      end

      if ( .not &multiTblNum )
       多重化
       &tblNum = #is表
       条件 ( &traceON ) トレース出力 &traceMsg + " 多重化に成功しました( 表番号:" + #str( &tblNum ) + " )"
      else
       編集表 &multiTblNum
       &tblNum = &multiTblNum
       条件 ( &traceON ) トレース出力 &traceMsg + " 多重化された表に編集対象表を変更しました( 表番号:" + #str( &tblNum ) + " )"
      end
      &done = 1

      &msg = "フォルダ: " + #文字置換( #ファイル名( &targetTblName, 5 ), &yen, &yen + &yen )
      &msg = &msg + "\n\nファイル: " + #ファイル名( &targetTblName, 3 )
      &msg = &msg + "\n\n&primaryTblNum = " + #str( &primaryTblNum )
      &msg = &msg + "\n\n&secondaryTblNum = " + #str( &secondaryTblNum )
      &msg = &msg + "\n\n&tblNum = " + #str( &tblNum )
      条件 ( &debug ) 手続き実行 INFprcMsgPause( &icon, &title, &msg )
     else

      条件 ( &traceON ) トレース出力 &traceMsg + " 多重化に失敗しました( 編集対象表がありません )"
      &icon = "!"
      &msg = "編集対象表がありません"
      &msg = &msg + "\n\n多重化できませんでした"
      手続き実行 INFprcMsgPause( &icon, &title, &msg )
     end

     条件 ( &traceON ) トレース出力 &traceMsg + "を実行終了しました"
    手続き定義終了

引用返信 [メール受信/OFF] 削除キー/
■10031 / inTopicNo.8)  Re[3]: テーブル内で条件付き合計の計算
□投稿者/ 今村 誠 -(2016/08/24(Wed) 17:10:50)
    モモンガさんこんにちはサンプルは桐10で作っています。

    > やりたい事としては、入力画面で登録・修正する際に
    > 常に品目全体の総数を表示させたいです。
    > SQLだと品目名でグループ化して合計した結果と元データを連結する事で
    > 合計を表示できるのですが、桐の場合は実現方法が見つかりません・・・

    イベントを駆使して在庫数量を計算するのもひとつの方法ですが
    グループ化という方法はフォームの一覧表フォームで簡単に実現可能です。
    当然在庫数量もグループ化する時点で自動更新されます。
    項目名を少し変更しました。

    1)[利用区分]は一緒ですが利用や補充の個数を[数量]としました。

    2)計算項目として[在庫数量]を[使用枚数]に変更しました。
    #条件選択( [利用区分]="2" , [数量]×-1,1, [数量] )

    3)[在庫数量]を計算項目としました。
    #直前値([在庫数],0)+[使用枚数]

    品目名が少ないのであれば今のままで充分使えると思います。
    フォームの再定義でオプションタブの開始時に実行するボタンに
    "c項目名"を指定すれば移動も簡単です。
    サンプルファイルはすべて展開しないと正常には動作しません。

1472026250.zip
/10KB
引用返信 [メール受信/OFF] 削除キー/
■10032 / inTopicNo.9)  Re[6]: 桐の場合は、表を多重化することが出来ます
□投稿者/ モモンガ -(2016/08/24(Wed) 17:57:41)
    ONnojiさん

    ありがとうございます。
    多重化する事で編集画面とは別に、絞込みなどが行えるという事ですね^^

    >なお、一括処理を離れて、表編集でもメニューバー[ウィンドウ]メニュー → [新しい表を開く]で多重化できます。

    >表編集で多重化を試す方が多重化を早く実感出来ると思います。

    こちらについては確認できましたが、提供して頂いたソースのほうはフォームにボタンを追加して実行してみましたが
    修正漏れがあるようでまだ確認できていません。

    引き続き検証したいと思います。

引用返信 [メール受信/OFF] 削除キー/
■10033 / inTopicNo.10)  Re[4]: テーブル内で条件付き合計の計算
□投稿者/ モモンガ -(2016/08/24(Wed) 18:03:15)
    今村さん

    サンプルありがとうございます。
    桐10の購入をしていないので確認できないですが
    購入できしだい参照してみます^^

引用返信 [メール受信/OFF] 削除キー/
■10034 / inTopicNo.11)  Re[5]: テーブル内で条件付き合計の計算
□投稿者/ 今村 誠 -(2016/08/24(Wed) 22:07:18)
    モモンガさんこんにちは
    > 桐10の購入をしていないので確認できないですが

    30日間無料の体験版を管理工学からインストールしたら
    良いのでは?
引用返信 [メール受信/OFF] 削除キー/
■10035 / inTopicNo.12)  Re[6]: 桐の場合は、表を多重化することが出来ます
□投稿者/ 尾形 -(2016/08/25(Thu) 09:53:20)
    どうも、こんにちは

    > ※フォームの編集対象表には、編集表 &hwindow で切り替えられます。
    &hwindow って表番号ではなく
    ウインドウハンドルでは?

引用返信 [メール受信/OFF] 削除キー/
■10036 / inTopicNo.13)  Re[7]: 桐の場合は、表を多重化することが出来ます
□投稿者/ ONnoji -(2016/08/25(Thu) 10:16:56)
    2016/08/25(Thu) 16:11:24 編集(投稿者)
    2016/08/25(Thu) 13:14:35 編集(投稿者)
    2016/08/25(Thu) 13:08:17 編集(投稿者)
    2016/08/25(Thu) 12:21:35 編集(投稿者)

    >>※フォームの編集対象表には、編集表 &hwindow で切り替えられます。
    > &hwindow って表番号ではなく
    > ウインドウハンドルでは?

    確かに &hwindow は 桐が管理しているウィンドウハンドルの番号です。

    (暗黙の了解というか)すでに気が付いている人も多いと思いますが、

    <編集対象表があるフォーム>ではウィンドウハンドル:&hwindow の値 とフォームの編集対象表:表番号は同値です。

    <NULLフォーム>では、フォームの編集対象表がありませんので #is表 はゼロ( 0 )ですが、<編集対象表があるフォーム>では #is表 も同値です。

    確認するには、[フォーム開始]イベントハンドラの引数:&表番号 と &hwindow を比較します。

    編集対象表があるフォームでは、同値であることがわかりますよ。


    >※フォームの編集対象表には、編集表 &hwindow で切り替えられます。



    &hwindow の替わりに、[フォーム開始]イベントハンドラの引数:&表番号 の値を利用してもOKです。

    この方が納得しやすいかもしれませんね。(^^ゞ



    しかしこれだと、このために[フォーム開始]イベントハンドラを用意する必要があります。

    これはとても面倒なので、同値の &hwindow と説明した次第です。

    なお、拙作のオリジナルでは &hwindow の代わりに、&INFmMyTblNum を使用しています。

    しかし、&hwindow と &INFmMyTblNum は同値なのでどちらを使用しても問題ありません。

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

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

      if ( &tblNum )

       ** 実行コマンド群

       終了 表 &tblNum
      end
      編集表 &INFmMyTblNum

     end

    手続き定義終了

    手続き定義開始 フォーム::フォーム開始(長整数 &表番号)

     &INFmMyTblNum = &表番号

    手続き定義終了


    <蛇足>

    まとめ

    ■編集対象表があるフォーム

    ・&hwindow
    ・[フォーム開始]イベントの引数:&表番号
    ・ #is表

    すべて同値。


    ■NULLフォーム

    ・&hwindow
    ・[フォーム開始]イベントの引数:&表番号

    上二つは同値だが、

    ・ #is表

    は ゼロ( 0 )。

    ※注意

    #is表 の値は、[編集表]コマンドや[多重化]コマンドを実行すると、変わるので注意が必要です。



引用返信 [メール受信/OFF] 削除キー/
■10037 / inTopicNo.14)  Re[7]: 桐の場合は、表を多重化することが出来ます
□投稿者/ ONnoji -(2016/08/25(Thu) 10:35:43)
    2016/08/25(Thu) 16:12:10 編集(投稿者)
    2016/08/25(Thu) 13:07:32 編集(投稿者)
    2016/08/25(Thu) 12:22:12 編集(投稿者)
    2016/08/25(Thu) 11:57:43 編集(投稿者)

    > 多重化する事で編集画面とは別に、絞込みなどが行えるという事ですね^^

    その通りです。

    > こちらについては確認できましたが、提供して頂いたソースのほうはフォームにボタンを追加して実行してみましたが
    > 修正漏れがあるようでまだ確認できていません。
    > 引き続き検証したいと思います。

    使用例はあくまでも参考例です。

    私は、一括処理でアプリケーションを作りませんので、表番号を指定して表( .tbl )を開きません。

    もしも、イベント処理( .kev )の一般手続きで表( .tbl )を開く場合には、表番号の管理は、すべて桐の自動に任せています。

    参考例は、この条件で使用しているものです。

    なお、拙作プロシージャ:TBLprcTableMultiOpen は以下のAパターンとBパターンの両方に対応しているので、ちょいとややこしいです。

    もっとも、デバッグ用のトレースやメッセージボックスを取り払て見れば、

    たいしたことをしていないとご理解いただけると思います。


    <イベント処理の一般手続きの使用例>

    ■Aパターン

    多重化したら、必要がなくなったら閉じる。編集表をフォームの編集対象表に戻すのを忘れないこと。


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

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

      if ( &tblNum )

       ** 実行コマンド群

       終了 表 &tblNum
      end
      編集表 &hwindow

     end

    手続き定義終了



    ■Bパターン

    または、一度多重化したら、次回は新たに多重化しないで、編集表を切り替えるだけにする。


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

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

      if ( &tblNum )

       ** 実行コマンド群

       ** &tblNum の編集表を閉じない 終了 表 &tblNum
      end
      編集表 &hwindow

     end

    手続き定義終了


    <追伸>


    &hwindow は 桐が管理しているウィンドウハンドルの番号です。

    (暗黙の了解というか)すでに気が付いている人も多いと思いますが、

    <編集対象表があるフォーム>ではウィンドウハンドル:&hwindow の値 とフォームの編集対象表:表番号は同値です。

    <NULLフォーム>では、フォームの編集対象表がありませんので #is表 はゼロ( 0 )ですが、<編集対象表があるフォーム>では #is表 も同値です。

    確認するには、[フォーム開始]イベントハンドラの引数:&表番号 と &hwindow を比較します。

    編集対象表があるフォームでは、同値であることがわかりますよ。


    >※フォームの編集対象表には、編集表 &hwindow で切り替えられます。



    &hwindow の替わりに、[フォーム開始]イベントハンドラの引数:&表番号 の値を利用してもOKです。

    この方が納得しやすいかもしれませんね。(^^ゞ

    しかしこれだと、このために[フォーム開始]イベントハンドラを用意する必要があります。

    これはとても面倒なので、同値の &hwindow と説明した次第です。

    なお、拙作のオリジナルでは &hwindow の代わりに、&INFmMyTblNum を使用しています。

    しかし、&hwindow と &INFmMyTblNum は同値なのでどちらを使用しても問題ありません。

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

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

      if ( &tblNum )

       ** 実行コマンド群

       終了 表 &tblNum
      end
      編集表 &INFmMyTblNum

     end

    手続き定義終了

    手続き定義開始 フォーム::フォーム開始(長整数 &表番号)

     &INFmMyTblNum = &表番号

    手続き定義終了


引用返信 [メール受信/OFF] 削除キー/
■10038 / inTopicNo.15)  Re[8]: 桐の場合は、表を多重化することが出来ます
□投稿者/ 尾形 -(2016/08/25(Thu) 17:13:14)
    どうも、こんにちは

    > (暗黙の了解というか)すでに気が付いている人も多いと思いますが、
    > <編集対象表があるフォーム>ではウィンドウハンドル:&hwindow の値 とフォ
    そうだったのですね (^^;
    気づいてませんでした

    勉強になりました ^^


引用返信 [メール受信/OFF] 削除キー/
■10043 / inTopicNo.16)  Re[6]: テーブル内で条件付き合計の計算
□投稿者/ モモンガ -(2016/08/26(Fri) 13:39:38)
    今村さん

    体験版にて確認いたしました。
    (今なら年末まで使用できるようです)

    この方法であれば品目の数が増えても対応できそうですね。
    ありがとうございます。

    因みにコマンドボタンについてですが、イベントのマウス
    左クリックと同じ扱いになるのでしょうか?

    >4個以上の機能を割り当てたい場合は、イベント処理ファイルに
    >手続きを定義し、このボタンの[機能名]属性を「手続き実行」に、
    >[機能パラメータリスト]属性に手続き名を指定します。
    >
    >イベント処理ファイルに定義した手続きに一括処理コマンドを記述することで、
    >複数の機能を実行できるようになります。
    と記載がありましたので、同じイベントであればマウス左クリックの
    イベントに直接書いたほうが良いのかもと思いました。(4つ以上の場合)


引用返信 [メール受信/OFF] 削除キー/
■10044 / inTopicNo.17)  Re[8]: 桐の場合は、表を多重化することが出来ます
□投稿者/ モモンガ -(2016/08/26(Fri) 13:57:59)
    ONnojiさん

    頂いたサンプルで多重化の確認ができました。
    ありがとうございます。

    早速イベントを使って集計結果を表示してみようと思ったのですが、
    集計結果を変数にセットする事ができませんでした。
    (もともと対応してないかもですが・・・)

    &残枚数に在庫数の合計をセットしたかったのですが、
    書き出しで別テーブルに出力した後に、そのテーブルを
    参照しないと取得できないのでしょうか??

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

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

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

    手続き定義終了

引用返信 [メール受信/OFF] 削除キー/
■10045 / inTopicNo.18)  Re[7]: テーブル内で条件付き合計の計算
□投稿者/ 今村 誠 -(2016/08/26(Fri) 14:11:04)
    モモンガさんこんにちは
    > 因みにコマンドボタンについてですが、イベントのマウス
    > 左クリックと同じ扱いになるのでしょうか?

    違います。
    ボタンはフォーカスがあるとEnterキーで動作させることができるし
    実行順序が違います。
    マウスでクリックすると最初に左クリックが実行された後にボタンの
    機能が順次実行されます。
    ボタンの場合ショートカットキー(&+英数字)が使えますが、左クリック
    は実行されません。クリックしていないからです。
    ボタンの手続き実行は左クリックでも実行可能ですが、メソッドの実行()
    はボタンでないと動作しません。
    ラベルなどに左クリックは設定するかもしれませんが、ボタンに左クリック
    を設定することはイベントファイルの見通しの面でも複雑化させるだけだと
    私は思っていますのでほとんど使っていません。
    イベントの作り込みは個人の自由ですのでお好きに作って下さい。

    > >4個以上の機能を割り当てたい場合は、イベント処理ファイルに
    > >手続きを定義し、このボタンの[機能名]属性を「手続き実行」に、
    > >[機能パラメータリスト]属性に手続き名を指定します。
    > >イベント処理ファイルに定義した手続きに一括処理コマンドを記述することで、
    > >複数の機能を実行できるようになります。
    > と記載がありましたので、同じイベントであればマウス左クリックの
    > イベントに直接書いたほうが良いのかもと思いました。(4つ以上の場合)

    左クリックイベントもボタンの手続き実行もほとんど違いはないので
    4個以下でも普通に使いますよ。
    ボタンの機能で出来ないときにイベントを使うと考えた方が良いと思います。

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

    回答ありがとうございます。
    ショートカットキーやイベントの順序などの違いがあるのですね。
    勉強になります。

    コマンドボタンのクリックについては、マウスを使用しない場合も考慮して
    イベントではなくコマンドボタンを使用するようにいたします。

解決済み!
引用返信 [メール受信/OFF] 削除キー/
■10047 / inTopicNo.20)  Re[7]: テーブル内で条件付き合計の計算
□投稿者/ ONnoji -(2016/08/26(Fri) 14:22:32)

    横レス失礼。m(__)m

    > 因みにコマンドボタンについてですが、イベントのマウス
    > 左クリックと同じ扱いになるのでしょうか?

    微妙に違いますので以下に説明します。

    コマンドボタンを実行するタイミングには、

    ・マウスでコマンドボタンをクリックした時
    ・コマンドボタンにフォーカスがある時に[スペース]キーを押した時
    ・コマンドボタンのアクセスキーを押した時

    があります。

    桐の場合には、

    ・コマンドボタンにフォーカスがある時に[スペース]キーを押した時
    ・コマンドボタンのアクセスキーを押した時

    も含めるので、コマンドボタンでイベント処理( .kev )のプロシージャを実行したい場合には

    [マウス左クリックイベント]を使わずに、

    コマンドボタンの機能名:手続き実行 で機能:パラメータリストにプロシージャ名(必要ならば引数も)を指定しますよ。

    > >4個以上の機能を割り当てたい場合は、イベント処理ファイルに
    > >手続きを定義し、このボタンの[機能名]属性を「手続き実行」に、
    > >[機能パラメータリスト]属性に手続き名を指定します。

    今回のサンプルでは、今村さんはあえてイベント処理( .kev )を使用しないで機能を実現していると思われます。

    イベント処理( .kev )を使用しないくても、コマンドボタンの機能だけで結構なことが出来るということを示されていると思いますよ。

    > >イベント処理ファイルに定義した手続きに一括処理コマンドを記述することで、
    > >複数の機能を実行できるようになります。
    > と記載がありましたので、同じイベントであればマウス左クリックの
    > イベントに直接書いたほうが良いのかもと思いました。(4つ以上の場合)

    繰り返しになりますが、

    一般的にフォームでを操作するユーザは、

    ・コマンドボタンにフォーカスがある時に[スペース]キーを押した時
    ・コマンドボタンのアクセスキーを押した時

    の場合にもコマンドボタンが実行されると認知しています。

    しかし、桐の場合だけかもしれませんが

    ・コマンドボタンにフォーカスがある時に[スペース]キーを押した時
    ・コマンドボタンのアクセスキーを押した時

    には、意外に思うかもしれませんが[マウス左クリックイベント]は発生しないのです。

    当然、イベントハンドラは実行されないのです。

    だから、桐の場合には、

    コマンドボタンの機能名:手続き実行 で機能:パラメータリストにプロシージャ名(必要ならば引数も)を指定するのが望ましいのです。

    ちなみに、プロシージャの中から、メソッドで任意のコマンドボタンを実行することも出来ます。

    <蛇足>

    コマンドボタンオブジェクト以外の[マウス左クリックイベント]は普通に使用すればOKですが、

    コマンドボタンの[マウス左クリックイベント]に関しては、注意が必要です。

    詳しくは、以下の拙作の解説を是非ご一読ください。

    こちら
     ↓
    コラム1 コマンドボタンの手続き実行|桐のイベント道場
    http://www.geocities.jp/siliconvalley_bay_7565/column01.htm



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

次の20件>

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

[このトピックに返信]
Mode/  Pass/

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

- Child Tree -
- Antispam Version -