過去の桐井戸端BBS (桐ver.8)
4374 行削除、行訂正についてメインフォームに設けたコマンドボタンでサブフォームを操作したい Rockey 2000/1/30-18:06
桐v8sp2です
御質問します。
メイン&サブフォームにチャレンジしましたが、
コマンドボタンをメインフォームにつけ
コマンドボタンを押したらサブフォームを
操作される方法、たとえば、売上伝票を例にして
サブフォームに商品名、単価、数量などを操作できる
様にして、メインフォームのコマンドボタンの
"行追加"ボタンを押したら、サブフォームの最後に
行追加するモードになる。
同様に行削除、行訂正などもメインフォームに
設けたコマンドボタンでサブフォームを操作するには
どうしたらよいでしょうか?
サブフォームにコマンドボタンをつければ
可能なのでしょうが....
ちなみに、KEVでサブフォームにフォーカスを移し、
行追加をするようにしても、メインフォームの
行追加になってしまいます。
桐のHELPを探してもサブフォームからメインに
フォーカスを移すには&hwindowとありますが、
その逆が見当たりません。
よろしくお願いします。

4375 Re:メイン&サブフォームについて 悲しげ 2000/1/30-19:25
記事番号4374へのコメント
どもっ、Rockeyさん、
この件は書くと長くなりますので、手抜きします。(^^;)

【多遊】さんのホームページ(このHPにもリンク有り)
の「観験桐(ダウンロードコーナ)」のNo37の中に補足
説明文が同梱されていまして、その中で延々と記述して
ありますので参考にして下さい。


4383 悩みのメイン、サブフォーム Rockey 2000/1/31-10:39
悲しげ様、長編を読ませていただきました。
method @サブフォーム.@ボタン.実行()
これがポイントでしたね。
私は method でフォーカスをサブフォームに移して
method @ボタン.実行()としてみたのですが
"手続き実行のネストが深すぎます"と
わけのわからないエラーがでてどうしたものか
悩みました。
おかげさまでわかりました。
ありがとうございました。
メイン&サブフォームで不便(?)なところは
メイン部を削除してもサブフォームのデータは
そのまま残ってしまうので、KEVで該当する
サブフォームのデータを削除しないと余分なデータが
残ってしまいますよね?
また、メイン部が訂正されたときはサブフォームの
リンクが変わってしまうのでこれはどう解決
したら良いものか.....
やはり画面伝票形式にした方が良いかと
またまた悩んでしまいました。
皆様いかがでしょうか?

4409 Re:メイン&サブフォーム(続) 悲しげ 2000/02/02-21:01
記事番号4383へのコメント
どもっ、Rockeyさん、
一昨日の件なんですが、随分前のコメントのような
感じですね。(^^;)
いえ、それだけこのHpが盛況だってことなんですが。
このHpは今現在、桐については日本一、否、世界一
ホットなサイトですからね。(^^)v

さて、

>メイン&サブフォームで不便(?)なところは
>メイン部を削除してもサブフォームのデータは
>そのまま残ってしまうので、KEVで該当する
>サブフォームのデータを削除しないと余分なデータが
>残ってしまいますよね?

う〜ん、この辺りまではまだ試していないのですが、
メイン部のデータとサブ部のそれは、それぞれ独立
した別表となっていますから、メイン部を削除した
場合は、サブ部の該当データも削除しておかないと
整合性が崩れてしまいます。この辺りは自動的に削
除するような仕様には桐はなっていないので、ユー
ザ側で意識的に実行する必要があるでしょうね。

>また、メイン部が訂正されたときはサブフォームの
>リンクが変わってしまうのでこれはどう解決
>したら良いものか.....

これも同様で、リンクの整合性を保持するためには、
サブフォームのグループ項目値も、メイン部データ
の値でもってグループ値訂正しておく必要が出て来
ることになると思います、これも意識的に。どのよ
うなタイミングで行うのが妥当なのかは、そのうち
色々調べてみようと思ってはおります(あくまで、
そのうち)。

>やはり画面伝票形式にした方が良いかと
>またまた悩んでしまいました。

画面伝票の方は、そもそもがひとつの表ですから、
この辺りは自動的に行われると思います。ただ、
Win桐の画面伝票はヘッダ部で扱える項目がかなり
制限されているのが辛いところですね。
どちらがよいかは、色々お試しの上、結果をまた
教えて下さい。

4415 参照整合性を定義してみては su 2000/02/03-11:26
記事番号4383へのコメント
Rockeyさんこんにちは。悲しげさんいつもお世話になっています。
メインフォームのデータが削除されたならば、サブフォームのデータも削除するに
は、参照整合性を定義すればよいのではと思います。
メインフォームの表および、サブフォームの表を桐ファイルパレットの定義から開
き、それぞれ主キーを設定ます。その後、ツールの中の参照整合性により、メイン
フォームとサブフォームが関連づけられている項目をつなぎ、「主キーを削除する
とき」「参照項目も削除する」の設定にします。
おそらくこれで目的が達成されると思います。
4419 Re:参照整合性を定義してみては 悲しげ 2000/02/03-18:13
記事番号4415へのコメント
どもっ、suさん、
参照整合性ですね。なるほど、ようやくわかりました。
いえ、恥かしながら、私はこの参照整合性定義ってのは、使った
ことがありませんでした。(^^;)
実は桐ではなくて他の某DBMSに関してなんですが「参照整合性は
使い物にならないので、これを敢えて設定せず、主キーの削除な
り変更なりに対してはゴリゴリとプロシージャを記述して対応す
ることにした……」云々との話を聞いたことがあったので、私も
その頭があり、桐でも同様の考えでおりました。
この度、初めて試してみて、ようやくその仕組みを認識できた次
第であります。(^^;)

>メインフォームの表および、サブフォームの表を桐ファイルパレ
>ットの定義から開き、それぞれ主キーを設定します。
>その後、ツールの中の参照整合性により、メインフォームとサブ
>フォームが関連づけられている項目をつなぎ、

ただし、上記のとおりではできませんでした。え〜、サブの表に
おいては、リンク項目はグループ項目となるものでしたから、重
複禁止たる「主キー」は設定できませんでした。「主キー」は、
この場合、メインの表だけでしたね。(^^;)
あと、参照整合性定義のやり方も、メニューバーの「ツール」か
ら行う方法(ドラッグして線で繋ぐ)と、サブの表定義時にツー
ルバーの「表+鍵」マークから項目指定する方法の2種類があり
まして、私はどちらかと云うと後者の方が判りやすかったです。
と云うか、前者のやり方が判るのにエラク時間がかかりました。(^^;)

さて、と云う訳で、設定して試してみましたが、これって面白い
ですね。テストにおいては、メイン&サブフォームではなく、二
つの独立した表だけで試してみました。参照整合性定義に当たっ
ては、当然「主キーを削除する時→参照項目も削除」、「主キー
を更新する時→参照項目も更新」としてあります。
1)メイン表の1行を削除→サブ表の当該グループも自動的に削
除された。
2)メイン表の1行の主キー値を変更→サブ表の当該グループ項
目値も自動的に更新された。
3)削除行の復活テスト。メイン表が削除状態のまま、サブ表の
当該グループ行を復活させようとした→参照整合性のため不可。
うん、この挙動は正しいです。ただし、メイン表の削除行を復活
してもサブ表の当該グループ行は自動的には復活しなかったです、
ま、いいけど。(^^;)

と云う訳で、Rickeyさん、これって面白いですよ。メイン&サブ
フォームで実際に試してみて下さい。私もそのうち挙動の安定性
とか試してみます。
suさん、どうもありがとうございました。

4421 Re:参照整合性を定義してみては Rockey 2000/02/03-19:15
記事番号4419へのコメント
>
>と云う訳で、Rickeyさん、これって面白いですよ。メイン&サブ
>フォームで実際に試してみて下さい。私もそのうち挙動の安定性
>とか試してみます。

>
いやー、私もわからなかったです。
参照整合性ですか、てっきり結合表に
使うものかと思って、使おうとはしませんでした。
悲しげさん>
確かに面白いですね、
それにバッチリうまくいきました。
SUさん>
ありがとうございました。
実は、メイン&サブは始めてチャレンジしたような
もので、使いこなすには厄介かなと思っていました。
でも、わかってみればなかなかいいですね。
またよろしくお願いします。

戻る