| 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, ¤tTblName, ¥ = #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 ), ¥, ¥ + ¥ ) &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 + "を実行終了しました" 手続き定義終了
|