過去の桐井戸端BBS (桐ver.9)
28584 サブフォームで絞り込みが反映されない ぽち 2004/12/22-14:35
▼ 状況説明

メインフォームから一覧表フォームA.wfm(編集対象表はA.tbl)を
フォーム呼び出しで表示します。
A.wfmのフッタにボタン(Aボタン)が配置されており、
これをクリックするとサブフォーム付き(編集対象表はB.tbl)の
カード形式フォームB.wfm(編集対象表はA.tbl)を表示します。

▼ 具体的な流れ

Aボタンをクリックするとまず、

CODE: 表 "B.tbl"

で編集対象表を開いて

CODE: 絞り込み 比較式

でB.tblの該当レコードを絞り込みます。その後、

CODE: 表 "A.tbl"
CODE: 多重化
CODE: フォーム呼び出し "B.wfm", 編集表=する

としてA.tblを多重化した上でフォームB.wfmを表示します。

▼ 問題点

表示されたフォームB.wfmのサブフォームで絞り込みが反映されません。
ためしにB.tblを開いた状態で上記の一連の流れにしたがってフォームB.wfmを表示すると、
確かにB.tblが絞り込まれているのですが、サブフォームには反映されません。
一体どこに問題があるのか検討がつきません。
ご教示よろしくお願い致します。
28585 Re:サブフォームに絞り込みが反映されない bonito 2004/12/22-16:25
記事番号28584へのコメント
ぽちさん
No.28515での納得(というか着地点)にそもそも問題ありのような気がしてなりません、
失礼ながら何かすっごく遠回りなさっているんじゃないでしょうか?
質問(タイトル)の答えにはなっていませんが、この程度の結果なら
>CODE:
が何を(.cmd内のコマンド? .kev内のコマンド?)意味するのか
判りませんがフォームの機能だけで得る事が出来ると思います。

宮城さんの
>フォームを開くことにより同時に表を開くのが普通です。
がNo.28515の質問の答えの正しい方向性を示していたと思います。

私なら (検索対象項目を仮に[Key]とすると)

>カード形式フォームB.wfm(編集対象表はA.tbl)
フォームの許可作業の多重化をONにしておく
開始時実行ボタンを作成設定する......検索_比較式.....[Key]=&key
>サブフォーム付き(編集対象表はB.tbl)
このサブフォームがカードであろうが伝票であろうが形式に拘わらず
これにヘッダをつけ(表示するかどうかはケースバイケース)そこに
グループ項目[Key](複数可)をおいてメインフォームとリンクさせる
>A.wfmのフッタにボタン(Aボタン)
は対象行の[Key]を変数&Keyに取得し...なし.............#代入(&Key,[Key])
B.wfmを呼び出す....................モーダルフォーム.."B.wfm"

とすると思いますが...
仮にそうしないとしてもフォームの対象表を事前に開いて何か操作した
後にフォームでもってそれを表示するという方法は余程特殊な場合を
除いて避けた方が無難だと思います。(フォーム開始時の実行ボタンと
イベントのフォーム開始等を使用したりして回避出来ます)

最後に唯一答えらしい事を言ってみるとサブフォームには「表の引継ぎ」の
ON・OFFがありますね。

28586 Re:サブフォームに絞り込みが反映されない 宮城 2004/12/22-16:25
記事番号28584へのコメント
ぽちさん、こんにちは。

>一体どこに問題があるのか検討がつきません。

簡単なテストをしてみてはいかが?

多重化
表形式編集

これだけの CMDを A.tblと同じフォルダに適当な名前で作ります。
A.tblを開き適当に絞込みをかけます。そこでえいやっとこの CMDを動かしてみてください。

私も同様にはまったクチです。(^^;;
28587 Re:サブフォームに絞り込みが反映されない 悲しげ 2004/12/22-23:14
記事番号28584へのコメント
多重化して開いた表は、元表とは全く独立しています。
云い換えれば、元表が並べ替え状態だろうと絞り込み状態だろうと、
多重化表は、常にスッポンポンの基本状態でしかオープンされなかったと記憶します。※
ですから、多重化表に「絞り込みが反映されない」のは、至極当然のことだと思います。
この点については、私も当初悩んだ記憶があります、寸時でしたが。
ぽちさんが何をやろうとしているのかは判りませんが、
いずれにせよそういうことですので、別な方法でアプローチするのがよいと思います。
例えば、多重化しないで元表のままを反映させるとか、多重化するなら
多重化表オープン直後に同様の絞り込みをさせるような組み方をするとか。

※ここ2ケ月ほど桐にさわる機会が皆無だったので、記憶が徐々に薄らいでいたりします。(^^;)

ついでに云えば、どうやら私だけの固有の現象らしいのですが、
この板だけ屡々アクセス不能に(または超遅く)なっておりまして、
なかなか投稿できなくなっていたりします。

28590 Re:サブフォームに絞り込みが反映されない 宮城 2004/12/23-13:29
記事番号28587へのコメント
悲しげさん、お久しぶりです。

>多重化して開いた表は、元表とは全く独立しています。
>云い換えれば、元表が並べ替え状態だろうと絞り込み状態だろうと、
>多重化表は、常にスッポンポンの基本状態でしかオープンされなか
>ったと記憶します。※

リファランスが誤解を招く元だと思います。

> ひとつの表を多重化して作業する場合、一方のウィンドウの編集
> 状態に応じて、もう一方のウィンドウの更新操作が制限されます。
> たとえば、一方のウィンドウで絞り込み状態にすると、もう一方
> のウィンドウでも行挿入コマンドや行移動コマンドなどの操作が
> できなくなります。

ここに「ただし、絞り込み状態は継承されません」という一言が欲しいですね。

28595 Re:サブフォームに絞り込みが反映されない 悲しげ 2004/12/23-19:04
記事番号28590へのコメント
どもっ、宮城さん

>ここに「ただし、絞り込み状態は継承されません」という一言が欲
>しいですね。

御意。「並べ替え状態」も含めて、ね。

ps.
う〜ん、この数行を書き込むのに要する待ち時間だけで数分かかります。(?_?)

28599 多重化とは 佐田 守弘 2004/12/24-00:47
記事番号28595へのコメント
皆様
多分、多重化の定義と状態の説明がきちんとされていないので、誤解を招くのでしょうね。
ヘルプには、
 >作業中の表をもうひとつ開き、ふたつのウィンドウに同じ表を表示します。
 >これを表の多重化といいます。
と書いてありますが、これだけでは明確な定義や説明とは言い難いですね。

というか、多重化とは表がどの様になっていて、内部的にもどの様に扱われている状態なのかが良く分らないのです。

これが正しいのかどうか分りませんが、私は、多重化とは一人のユーザーによる
半共有的な状態なのではなかろうかと、解釈しています。
専有で開いた状態は保たれながら、共有的に同じ表が開かれている様な状態の様に思います。

多重化で開いた表は元の表の編集状態は継承されない点は、共有に似ています。
しかしバックアップありで開かれた専有状態(テンポラリファイルが作られる)
から多重化できる点では、共有とは違います。
そして1つの表の状態(絞り込みや行集計)に入ると、他の表の操作が制限されます。
この点も共有状態とは異なります。

バックアップありで編集の際に作られるテンポラリファイルとは別に、
絞り込みや行集計の際には、その状態を作り出すためにワークファイルが作られます。
どうやら上記の制限は、この事と関連している様にも思えます。

つまり多重化で開く表は、テンポラリファイル(バックアップなしの時には
元の表ファイル)を共用して開くが、ワークファイルは共用も参照もしないし
できないのではと理解しています。

佐田守弘(KS-00119)
28603 Re:多重化とは bonito 2004/12/24-12:14
記事番号28599へのコメント
ぽちさんがはまっているのは多重化にからむ事でしょうか?

"B.tbl"(サブフォームの編集対象表)を開いて
絞り込みして
"A.tbl"を多重化してフォーム呼び出して
問題点は
表示されたフォームのサブフォームで絞り込みが
反映されません...(つまりB.tblの絞り込み状態)
と書かれている
まぁサブフォームも(B.tblを)多重化許可しないと既にB.tbl
は開かれているので普通はエラーになりますが、その辺に
関する記述は見当たりませんね...

そっかぁ
フォーム呼び出し "B.wfm", 編集表=する
でサブフォームも(B.tbl)を 編集表=する になると思った訳か
これはメインの<フォームファイル名>の編集表にだけ有効なんじゃ
ないのかなぁ...
っで代替品のようにサブフォームのプロパティに「表の引継ぎ」の
ON・OFFが用意されているって事かも知れないですね

28607 Re:多重化とは きりぎりす 2004/12/24-14:46
記事番号28603へのコメント
こんにちは、またまた久々の登場になりました

サブフォーム(オブジェクト)のプロパティに指定する「表の引継ぎ」は
サブフォームをダイナミックに変更する場合、対象表を切替え先のフォームに引継ぐかどうかを指定します。
 サブフォーム名を文字列式の形式で指定することに注意してください。
すなわちここには文字列型の変数さえ指定できるわけです、変数値を変更することにより、
たとえば伝票形式からカード型へのフォームの切替がダイナミックに実行できます。

>そっかぁ
>フォーム呼び出し "B.wfm", 編集表=する
>でサブフォームも(B.tbl)を 編集表=する になると思った訳か
>これはメインの<フォームファイル名>の編集表にだけ有効なんじゃ
>ないのかなぁ...
>っで代替品のようにサブフォームのプロパティに「表の引継ぎ」の
>ON・OFFが用意されているって事かも知れないですね
>

28609 Re:多重化とは bonito 2004/12/25-14:22
記事番号28607へのコメント
きりぎりすさん、済みません
折角高名な方からコメントを頂きましたが
私の桐はv8sp6なので(でしょうか)全容を理解できません

「表の引継ぎ」で?(ヘルプ)マウスをクリックすると
----------------------------------------------------
サブフォームの表がすでに開かれているとき、そのまま使用
するには [表の引き継ぎ] チェック ボックスを ONにします。
サブフォームの表が開かれているときでも、一度閉じてから
開き直すようにするには、[表の引き継ぎ] チェックボックスを OFF にします。
-----------------------------------------------------
とでてきますが

>サブフォーム名を文字列式の形式で指定することに注意してください。
>すなわちここには文字列型の変数さえ指定できるわけです、

サブフォーム名を文字列式の形式で指定する...場所がどこだかわかりません...これってv9から新設された場所なんでしょうか?

ps.
済みません最初にバージョンを書くべきでした
28616 Re:多重化とは きりぎりす 2004/12/27-12:41
記事番号28609へのコメント
きりぎりすです

メインフォームに張付ける「サブフォーム」オブジェクト
で指定するサブフォーム名そのものですけど...
オブジェクトリストで言えば「データ」タグの「サブフォーム」
プロパティのことです。
少なくともV8にも実装されている機能です

ヘルプは・・・確かに分かりにくいですね
どこかにこの機能を利用したタブシートもどきの実装があったような
どなたか知ってらしたらフォローをお願いします。
>
>サブフォーム名を文字列式の形式で指定する...場所がどこだかわかり
>ません...これってv9から新設された場所なんでしょうか?
>
>ps.
>済みません最初にバージョンを書くべきでした

戻る