過去の桐井戸端BBS (桐ver.9)
25259 サブフォームの編集表切替えで「編集対象表がありません」のエラーがでる neco 2004/03/05-12:50
イベント内で条件によって

&表="..\"+&STR+".TBL"
メッセージボックス "",#STR(#表番号取得("formtbl",1))
表 &表
メッセージボックス "",#STR(#表番号取得("formtbl",1))

とすると、

直前では 2
直後では ヌル表示
となる。

"formtbl"はイベント元フォームの編集対象表。
エラーはイベント内の後で、編集表 "formtbl" の時発生

どなたか教えてください。
25260 追補 neco 2004/03/05-13:02
記事番号25259へのコメント
表 &表
自体は正常に開いています。
25263 Re:KU1175:編集対象表がありません neco 2004/03/05-13:50
記事番号25260へのコメント
タイトルは正しくは、
KU1175:編集対象表がありません
のエラーです。

メッセージボックス #STR(#表オープン状態("formtbl",1))
でも試しましたが、
直前 : 0
直後 : ヌル表示
でした。
25264 Re:KU1175:編集対象表がありません 宮城 2004/03/05-14:15
記事番号25263へのコメント
necoさん、こんにちは。

>&表="..\"+&STR+".TBL"
>メッセージボックス "",#STR(#表番号取得("formtbl",1))
>表 &表
>メッセージボックス "",#STR(#表番号取得("formtbl",1)

これでは判じ物です。ここに入る前にどんな表が開いているのでしょうか。
&STRの中身はなんでしょうか。それらと「formtbl」はどのような関係にあるのでしょうか。

25266 Re:サブフォームの編集表切替えで見つかりませんのエラー 悲しげ 2004/03/05-14:40
記事番号25259へのコメント
どもっ、necoさん

一般に、表番号を取得するのは、「#is表」関数で十分なことが多いように思います、経験的に。
「#表番号取得」関数は、多重化表の表番号を取得したい時に使ったことが有りましたが、
それとて上記「#is表」関数の方が使い勝手がよかった印象があります。
「#表番号取得」関数で指定するファイル名はフルパスで記述しなければならないのが、いささか面倒でした。
「..\」の記述が生きるかどうかは未確認ですが。
また、「#表オープン状態」関数は、編集表の共有モードまたは更新モードを調べるものですから、
ここでそのモードを調べる意味がよく判りません。

で、何のために「表番号」やら「表オープン状態」が知りたいのでしょう?

>"formtbl"はイベント元フォームの編集対象表。

当該フォームのイベントの記述において、その編集対象表の表番号を知る必要が果たしてあるのでしょうか?
編集表の切り替えは、むしろ表ファイル名自身を記述した方が簡単だと思います。
例えば

 編集表 "某.tbl"  /*もちろんファイル名は変数で記述しても可*/

ここで改めて#25259のタイトルを見るに、「サブフォームの編集表切替え」となっています。
う〜ん、サブフォームの編集表切替えは、けっこう難しかったと思います。
私は試したことありませんが、例えば
http://www.fuku3.com/~habata/kbbs/kakov9/18050.htm
とか。

25267 Re:KU1175:編集対象表がありません neco 2004/03/05-14:57
記事番号25264へのコメント
宮城さん、こんにちは。

問題対象は&表ではなく"formtbl"の方なんです。(別物です)
コマンド >>表 &表
を実行することにより、
それまで開かれていたはずの"formtbl"が見つけられなくなるのです。
ちなみに&表は正常に開かれています。
&表はこの後、フォーム呼び出し ・・・・,編集表=する
のためのものです。
その後、"formtbl"の項目訂正を行うために、編集表 "formtbl"
とするのですが、ここでエラー(KU1175:編集対象表がありません)が
発生するので、調べていったら コマンド >>表 &表
の部分で変化していたわけです。
25268 Re:サブフォームの編集表切替えで見つかりませんのエラー neco 2004/03/05-15:02
記事番号25266へのコメント
悲しげさん、いつもありがとうございます。
解かりにくい書き方になり、すみません。

宮城さんへのRe:を読んでいただけませんか?

25271 データパス名の問題では? 悲しげ 2004/03/05-15:29
記事番号25267へのコメント
どもっ、necoさん

&表="..\"+&STR+".TBL"
表 &表         (1)
・・・・・・
編集表 "formtbl.tbl"  (2)
フォーム呼び出し "formtblを対象表とするwfm",編集表=する

(1)の時点でデータパスが..\に移動している。ゆえに
(2)の時点では、そのフォルダ内に当該表が存在しないのでエラー。

とすれば、「データパス名」コマンドでその辺りを調整するか、
(2)の時点でもフルパス名で記述するとか。

25274 Re:データパス名の問題では? neco 2004/03/05-16:03
記事番号25271へのコメント
悲しげさん、どうもありがとう。
メインフォーム・イベントファイルのメインで
 データパス名 "フルパス",固定 = する
としていたので、安心していたのですが
もう一度サブフォーム・イベントのメインで記述したところ
問題なく動きました。
でもそうすると、他の全てのサブフォームでも記述しなければならないのでしょうか?
サブフォームは6個あるんです。またそれぞれのイベントファイルも有り、
各々からまた別のフォーム&イベントを呼び出してます。

ちょっと変な気もしますが・・・
25275 Re:データパス名の問題では? 悲しげ 2004/03/05-16:19
記事番号25274へのコメント
>でもそうすると、他の全てのサブフォームでも記述しなければ
>ならないのでしょうか?

さて、どうなんでしょうね。
その辺は色々実験して、その結果を私にも教えて下さいな。(^^;)

25305 Re:サブフォームの編集表切替えで見つかりませんのエラー neco 2004/03/08-10:22
記事番号25259へのコメント
一括処理では無く、フォーム&イベントのみでのアプリケーションの場合、
データパス名 "データパス名",固定 = する
をイベントファイルに記述しても、下記、桐ヘルプを見ると
固定 = する
ハンドラ内で実行した場合は、そのフォームを閉じるまで、指定したパスに固定します。
一括処理で実行した場合は、つぎにこのコマンドを実行するまで、指定したパスに固定します。
とあるので、本来フォーム毎に定義し直す必要があるのではと思えます。

ただ私の場合には、メインフォームのイベント・メインで定義していたわけですから
サブフォームでも定義し直すことまでは考えなかったし、メインフォーム自体は開いたままなのですから、
ヘルプ通りとすればフォームを閉じるまで、指定したパスに固定されると解釈しがちだと思います。

もう一つの一括処理の記述を見たとき、一括処理では再実行するまであるいは終了するまでと受け採られるのに対し、
フォームのイベント・ハンドラに記述した場合は、
そのフォームを閉じるまでとなっているので、この時の範囲はそのフォーム内で処理している間だけとも採れます。
 そうすると、メインフォームに記述していても、サブフォーム(リンクしてある表を除き)内で別ディレクトリの表を開いたり、
別ディレクトリの編集表へ切替えたりした場合にはデータパスが変更されてしまうのだと思います。
 実際に
メッセージボックス #データパス
表 &表               /*--別ディレクトリの表--*/
メッセージボックス #データパス
と実行してみると、やはりその通りでした。
これが同一ディレクトリであれば問題の無いところだったのですが、
同一ディレクトリに事務処理に必要なファイル全て(数百)を置くのもどうかと思います。

 コメント頂いた方々へ感謝しつつ、取り敢えず、ご報告まで。

戻る