過去の桐井戸端BBS (桐ver.9)
18050 サブフォームの編集対象表を動的に切り替えてその内容を表示したい 米田昌弘 2002/11/26-00:14
サブフォームの編集対象表の動的変更について お教えください
環境
桐Ver9
win2k

サブフォームの対象表を &SUB対象TBL といたしまして
メインフォームで この変数(&SUB対象TBL)の値を変更して
サブフォームの対象表を動的に切り替えて
その内容を表示させたいのですが
よろしく お願いいたします。

18058 Re:サブフォームの編集対照表の動的変更 ONnoji 2002/11/26-15:17
記事番号18050へのコメント
米田さん、こんにちは。

>サブフォームの対象表を動的に切り替えてその内容を表示させたい

この話題は少し前に、ONnoji(私)とpokoponさんの二人で試してみたことがあります。
以下を参考にしてください。

なお、当方の桐V8と桐V9で試しておりますので、動くと思いますが…

■サブフォームにするフォームのイベント( .kev )の仕掛け

[名札]メインに以下の仕掛けを用意します。
&mTableName という未定義でない場合に編集対象表を変更します。

※この例ではフォーム名を price.wfm とします。

※"フォーム"は半角カタカナです。
*--------------------------------------------------*
名札 メイン

 if ( #変数( "mTableName" ) <> #未定義 )
  オブジェクト操作 @フォーム.編集対象表 = #変数("mTableName")
 end

 *
*--------------------------------------------------*


■ダミー用のフォーム

ダミー用のフォーム(何でも構いません)を作ります。
※ダミー用のフォームはNULLフォームならなんでも構いません。
※ダミー用なのでオブジェクトはひとつも要りません。
※ダミー用なので参照表も編集対象表のどちらも指定しません。

この例では dummy_form.wfm とします。
※ダミーフォームを利用しないと、上手くサブフォームの編集対象表が切り替わりません。


■メインフォームにするフォームとイベント( .kev )の仕掛け

(1)まず、[サブフォーム]オブジェクトの属性の[サブフォーム]タブの、
[サブフォーム]に変数を指定します。
この例では、&mSbform とします。
なお、変数の内容は price.wfm とします。
変数は文字列型ならOKです。

(2)このとき、同じタブに有る[表の引継ぎ]のチェックを必ず消します。
※この指定をOFFにすることがコツです。

(3)次に、コマンドボタンを用意します。
この例では、コマンドボタンのオブジェクト名を
cmd対象表変更 とします。

   機能名      機能パラメータリスト
[1]表示
[2]手続き実行   cmd対象表変更Click
[3]なし
[4]なし


(4)最後にイベントを次のようにします。

ダミー用のフォーム( dummy_form.wfm )へ切り替えた後に、
タイマー1で目的のフォーム( price.wfm )を開くのがコツです。
※こうしないと、上手くサブフォーム( price.wfm )の編集対象表( price2.tbl )に切り替わりません。


※"フォーム"は半角カタカナです。
※"タイマー"も半角カタカナです。
*--------------------------------------------------*
名札 メイン

 変数宣言 局所,文字列{ &mSbform, &mTableName }

 &mSbform   = #一括パス名 + "price.wfm"
 &mTableName = #一括パス名 + "price1.tbl"
 オブジェクト操作 @フォーム.タイマー1 = "0"

 *

手続き定義開始 cmd対象表変更Click( )

 &mSbform = #一括パス名 + "dummy_form.wfm"
 メソッド呼び出し @フォーム.変数変更( )

 オブジェクト操作 @フォーム.タイマー値1 = "0.2"
 オブジェクト操作 @フォーム.タイマー1 = "1"

手続き定義終了



手続き定義開始 フォーム::タイマー1( )

 オブジェクト操作 @フォーム.タイマー1 = "0"

 &mSbform   = #一括パス名 + "price.wfm"
 &mTableName = #一括パス名 + "price2.tbl"
 メソッド呼び出し @フォーム.変数変更( )

手続き定義終了
*--------------------------------------------------*


18064 ありがとうございます。 米田昌弘 2002/11/27-00:05
記事番号18058へのコメント
ONnojiさん ありがとうございます。
ちょっと難しそうですね。
 早速試してみます。
とりあえず 御礼まで。

18083 ヒントを 米田昌弘 2002/11/27-22:35
記事番号18058へのコメント
ONnojiさん
過去レス 編集対象表 で 検索いたしましたら
みつかりました。失礼いたしました。ちゃんと検索もしないで。
でも どこがいけないのやら
コマンドボタンの
 表示   コマンドには パラメーターついちゃうんですが
これは関係ないですよね
素人が陥りそうなミスございましたらヒントいただけないでしょうか。
現在の状況
フオーム 表 は 切り替わっていそうですが
編集できないのです  また切り替わった後は
フォームが編集対象表を認識していないような
イベントも無効にならないのでエラーは発生していないと思うのですが。

うまく動かないんです もう少しガンバリます。

よろしくお願いいたします。

18086 Re:ヒントを ONnoji 2002/11/28-09:53
記事番号18083へのコメント
>コマンドボタンの
> 表示   コマンドには パラメーターついちゃうんですが
>これは関係ないですよね

米田さん、こんにちは。

コマンドボタンの[機能名:表示]の[機能パラメータ]は空っぽで構いませんよ。

表示モードにする理由ですが、
訂正モード等だと(大抵の場合に)イベント処理でのコマンド実行がエラーになるからです。
※もちろん例外もありますが、訂正モードで実行できるコマンドの種類は非常に少ないです。

>現在の状況
>フオーム 表 は 切り替わっていそうですが
>編集できないのです  また切り替わった後は
>フォームが編集対象表を認識していないような

切り替った表が編集できない理由は、私には判りません。
どうなっているのでしょうか?

前にご説明した方法はメインとサブフォームのリンクを考慮していませんので、その関係でしょうか???


18096 ありがとうございました 米田昌弘 2002/11/28-17:38
記事番号18086へのコメント
ONnojiさんへ
>コマンドボタンの[機能名:表示]の[機能パラメータ]は空っぽで構いませんよ。
は 編集 の  表示  の 機能パラメータなんですね

私は  表示 の ?????? の 機能パラメータと頭から 間違っておりました。
これは大きな問題とはおもわないのですが
何が間違っていて動作しなかったのかよく理解できないのですが
ONnojiさんのやり方で
一括処理にて変数値を 変更設定して うまく動作いたしました。
問題があったとしましたら

 1. 私の場合 一括から フォーム呼び出しにての処理の為
        モーダル???? ・・・ の関係でうまく動作しなかった
ここらへんかなと思います。
メールまでいたたきありがとう御座います。
また 今村さん メールありがとう御座いました。
一人で何時間も試行錯誤して試してもうまく動かなかったのに本当にたすかりました。
余談になりますが
桐 Ver9 に なって 道具箱って 最初は あっそう と実質的機能拡張でもなく
軽く考えていましたが 良くなりましたね
最近ライブラリや条件登録 道具箱を利用して
プログラムがすっきり見通しよくなりました。
管理工学さん 桐を UNICODE 対応にして 全世界に向けて販売しては
dbMagic や FileMaker より アクセスなんか論外
パソコンを 真に パソコンにしてくれるこんなすばらしいソフト
ぜひ英語圏の人にも・・・
少しほめすぎかも
桐を始めて知ってもう15年ぐらいになりますか
桐様様 です パソコンも桐がなければただの箱状態です。
桐大好き人間 50のおっさん米田昌弘 でした。
 ありがとうございました。       

戻る