過去の桐井戸端BBS (桐ver.9)
18123 多重化した表を「表」コマンドで閉じてもうまく閉じられていないようだ 米田昌弘 2002/12/01-12:32
お教えください。
環境
桐Ver9
OS W2K

&会社別処理月指定TBL を 多重化して すでにオープンいたしております。

次に下記コマンドの実行結果について



確認 #連結("編集表番号=>", #文字列 (#表番号取得( &会社別処理月指定TBL)))
確認 #連結("多重化その1=>", #文字列 (#表番号取得( &会社別処理月指定TBL,1 )))
確認 #連結("多重化その2=>", #文字列 (#表番号取得( &会社別処理月指定TBL,2 )))
確認 #連結("多重化その3=>", #文字列 (#表番号取得( &会社別処理月指定TBL,3 )))

条件 ((#表番号取得( &会社別処理月指定TBL,1 ))<>"") 編集表  #表番号取得( &会社別処理月指定TBL,1 )

上記の用な場合
表 にて 全ての表が閉じられていると思うのですが
にもかかわらず
 #表番号取得( XXX, 1)
#表番号取得( XXX, 2)
#表番号取得( XXX, 3)
は Null が帰らないのです
また
 番号が 帰ってくるんならと思い
編集表 #表番号取得( &会社別処理月指定TBL,1 )
 これは エラーになります。

これらのコマンドは ライブラリの中に記述していますが
これって 正常 
それとも 私の大きな勘違いですか
宜しくお願いいたします。

18124 Re:表 コマンドと 多重化について ONnoji 2002/12/01-13:41
記事番号18123へのコメント
米田さん、こんにちは。

#表番号取得( &会社別処理月指定TBL,1 ) <> ""

という条件式では変数で指定した表が開いていると判りますが、
しかし、多重化されている場合にもこの条件式は真になると思います。

#表番号取得( &会社別処理月指定TBL,2 ) = ""

とすると、変数で指定した表が多重化されていないと判定できると思います。

※多重化の判定を行うには二番めの引数の値を2にする必要があります。


18125 Re:表 コマンドと 多重化について 米田昌弘 2002/12/01-14:09
記事番号18124へのコメント
ONnoji さん
さっそくのアドバイスありがとうございます。
おっしゃる通りでございました。
私がUPしたのは 何か変だとおもい
試行錯誤にて 変更したりしたそのままでしたので誤りですが

私が申し上げたいことは
 // たとえ 多重化にて いくつも 表が 開いていても
 表          
 //これで全部閉じているつもり
 // つぎに

 確認 #文字列( #表番号取得( &会社別処理月指定TBL,2 ) )   

// 前記 表 にて全部閉じているつもり  なので Null を 期待します
 //にも拘らず この関数が Null を 返さないということなんですが
表 コマンドは ウインドウハンドル  多重化  サブフォーム ライブラリ等に
関係なく 全ての編集対象表 を 閉じる のではないのでしょうか
そして 全て閉じた後は #表番号取得( &会社別処理月指定TBL,2 ) は Nullになるのではなかったでしょうか

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



18127 Re:表 コマンドと 多重化について 悲しげ 2002/12/01-15:14
記事番号18125へのコメント
どもっ、米田昌弘さん
次のような記述で試してみましたが(v9で)
期待通りの結果を返します。

表 "main.tbl" /*表ファイル名はテキトー*/
多重化
多重化
多重化 /*あえて四重化まで*/
確認 "その1→"+#str(#表番号取得("main.tbl")) \
   +"+"+#str(#表番号取得("main.tbl",2)) \
   +"+"+#str(#表番号取得("main.tbl",3)) \
   +"+"+#str(#表番号取得("main.tbl",4)) \
   +"+"+#str(#表番号取得("main.tbl",5)) \
   +"+"+#str(#表番号取得("main.tbl",6))

確認 "その2→"+#str(#表番号取得("main.tbl")) \
   +"+"+#str(#表番号取得("main.tbl",2)) \
   +"+"+#str(#表番号取得("main.tbl",3)) \
   +"+"+#str(#表番号取得("main.tbl",4)) \
   +"+"+#str(#表番号取得("main.tbl",5)) \
   +"+"+#str(#表番号取得("main.tbl",6))

ですから、問題の所在は別なところにあるような気がします。
例えば、「表」コマンドでフォームの対象表を閉じることは
閉じることはできないとか(v8ではエラーとなった記憶が?
v9では未確認)。あるいは・・・・?
18128 Re:表 コマンドと 多重化について 米田昌弘 2002/12/01-15:52
記事番号18127へのコメント
悲しげさん
わざわざ試験までしていただき
お時間をおとりしまして ありがとう御座います。
物理的に一つの CMD ファイルですと
ちゃんと動いているのですが
 ライブラリ フォームの関係もあろうかと思いますが

 仮に
> 表 コマンドでフォームの対象表を閉じることは
>閉じることはできないとか(v8ではエラーとなった記憶が?
>v9では未確認)。あるいは・・・・?
 閉じないとしましても
 その 表番号で 再度 編集表 に しようとすると
 こんどは そんな表はないとしかられるんですよ
 なんか変 なんです。
 もう少し検証してみます。
 いままで桐にはバグがないと思っていたんですが
 なんだか論理矛盾に陥ったような 


18129 Re:表 コマンドと 多重化について ONnoji 2002/12/01-16:34
記事番号18125へのコメント
米田さん、こんにちは。

>おっしゃる通りでございました。
>私がUPしたのは 何か変だとおもい
>試行錯誤にて 変更したりしたそのままでしたので
>誤りですが

やっぱり!、ですね。変だと思いました。(^^ゞ

>私が申し上げたいことは
> たとえ 多重化にて いくつも 表が 開いていても
> 表          
> これで全部閉じているつもり
> つぎに
>
> 確認 #文字列( #表番号取得( &会社別処理月指定TBL,2 ) )   
> 前記 表 にて全部閉じているつもり  なので Null を 期待します
> にも拘らず この関数が Null を 返さないということなんですが
>表 コマンドは ウインドウハンドル  多重化  サブフォーム ライブラリ等に
>関係なく 全ての編集対照表 を 閉じる のではないのでしょうか
>そして 全て閉じた後は #表番号取得( &会社別処理月指定TBL,2 ) は Null
>になるのではなかったでしょうか


表          
確認 #文字列( #表番号取得( &会社別処理月指定TBL,2 ) )

と連続してコマンドを実行しても数値が返りますか????

当方の桐V9β版ですが…
*-----------------------*
表 "○×△.tbl"
多重化
多重化
多重化
多重化

確認 #文字列( #表番号取得( "○×△.tbl",2 ) )   
*-----------------------*
と、試したところ#表番号取得は未定義値を返しましたが…

例えば、ファイルパレットで編集表をご覧になるとか…
※一括実行中にファイルパレットが見れるのか分りませんが???

悲しげさんもコメントされていますが、
>問題の所在は別なところにあるような気がします。
私もそのような気がします。


18130 Re:表 コマンドと 多重化について 米田昌弘 2002/12/01-16:43
記事番号18128へのコメント
途中報告いたします。
ウィンドウ作成 モーダル=しない
ウインドウ会話 
 ------>このメインフォーム内にサブフォームの定義あります
ウインドウ終了
にて
#表番号取得(&会社別処理月指定TBL,* )
の関数を使用した場合 なにか変
私なりに推理いたしましたところ
サブフォームの編集対象表を 
オブジェクト操作 @フォーム.編集対象表 = &会社別処理月指定TBL
にて操作いたしておりますが
メインのウインドウ終了 にて サブフォームの編集対象表が
うまく閉じられていないような
(#表番号取得関数で閉じているようで開いているような)
オブジェクト操作 @フォーム.編集対象表 = &会社別処理月指定TBL
にて サブフォームの編集対象表を 操作しましたら
なんか 別のオブジェクト操作
コマンドにて終了処理が必要なんでしょうか
メインのウィンドウ終了で
全て終わってないんでしょうか
なんか 変では ないのかな

18131 Re:表 コマンドと 多重化について 米田昌弘 2002/12/01-16:52
記事番号18129へのコメント
ONnojiさん ありがとう御座います。
>当方の桐V9β版ですが…
>*-----------------------*
>表 "○×△.tbl"
>多重化
>多重化
>多重化
>多重化
>表
>確認 #文字列( #表番号取得( "○×△.tbl",2 ) )   
>*-----------------------*
>と、試したところ#表番号取得は未定義値を返しましたが…

ウインドウ会話  処理の前はそうなんですが

ウィンドウ会話  このなかにて サブフオーム 編集対象表操作
ウィンドウ終了
その後に
#表番号取得
としますと ??????
先日のサブフームの編集対象表の関係????????
貴重なお時間ありがとうございます。
私の機械が おかしいのかな??

18132 問題の所在は別なところにあるような気がします。 米田昌弘 2002/12/01-17:12
記事番号18123へのコメント
問題の所在は別なところにあるような


 ウィンドウ会話を モーダル=しない で会話処理を実行する
 そのウィンドウにて サブフォームを定義しており
 サブフーム内にて 編集対象を オブジェクト操作にて設定
 そして
 ウィンドウ終了後の
 #表番号取得 編集表 等のコマンドの不可解な動作 
18134 Re:表 コマンドと 多重化について 悲しげ 2002/12/01-17:16
記事番号18130へのコメント
>メインのウインドウ終了 にて サブフォームの編集対象表が
>うまく閉じられていないような

久しく「ウィンドウ作成」「ウィンドウ会話」コマンドを使ってい
ないので全然未確認ですが、「ウィンドウ終了」コマンドと対象表
自体の終了とは全く別物だったような気億が残っていたりします。
つまりウィンドウだけを「終了」させても、表が連動して閉じると
云う訳でもなかったような・・・・・。
(曖昧、っつーか未だによく判らない)

余談ながら、v8が登場して以来、私が「ウィンドウ作成/終了」、
「ウィンドウ会話」方面とキッパリ別れを告げて、イベントの方に
走った理由のひとつに、この辺りの表番号管理の複雑さにホトホト
嫌気がさしたこともありました。
と云う訳で、お役に立てませんでしたね。(^^;)

18133 サブフォーム編集対象表について 米田昌弘 2002/12/01-17:16
記事番号18132へのコメント
問題点はここかな
ウィンドウ会話を モーダル=しない で会話処理を実行する
 そのウィンドウにて サブフォームを定義しており
 サブフーム内にて 編集対象を オブジェクト操作にて設定
 そして
 ウィンドウ終了後の
 #表番号取得 編集表 等のコマンドの不可解な動作
ひよっとして
私の機械のメモリーがおかしい??????

18135 Re:サブフォーム編集対象表について ONnoji 2002/12/01-18:20
記事番号18133へのコメント
米田さん、こんにちは。

>【桐V9β版のコマンドリファレンス】より
>
>ウィンドウ終了
>-----------------------------------------------------
>イベントでの使用 △自身のフォームに対しては、つねに不可。
>
>■説明
>指定したウィンドウを閉じます。
>一括処理で実行した場合は、表と使用フォームが開かれたままになります。
>イベントハンドラ内で実行した場合は、表と使用フォームの両方を閉じます。

と、書いてありますから…

>一括処理で実行した場合は、表と使用フォームが開かれたままになります。

ということでは??????

>ひよっとして
>私の機械のメモリーがおかしい??????

そんなことはないと思いますけど。(^^ゞ

18137 Re:閉じてやらないと手も足もでないようです。 ド・モ・ONnoji 2002/12/02-12:23
記事番号18133へのコメント

>問題点はここかな
>ウィンドウ会話を モーダル=しない で会話処理を実行する
> そのウィンドウにて サブフォームを定義しており
> サブフーム内にて 編集対象を オブジェクト操作にて設定
> そして
> ウィンドウ終了後の
> #表番号取得 編集表 等のコマンドの不可解な動作
>ひよっとして
>私の機械のメモリーがおかしい??????

米田さん、こんにちは。

次のような一括処理で簡単に再現できました(桐V9)。

 変数宣言 固有,整数{ &gHdl, &gTblCnt }
 変数宣言 共通,文字列{ &mTblNameDim[40] }

 表
 ウィンドウ作成 "メインフォーム.wfm", ハンドル = &gHdl, 編集表 = 開く
 ウィンドウ会話 &gHdl
 ウィンドウ終了 &gHdl
 &gTblCnt = #表ファイル名一覧( "mTblNameDim" )
 *確認 "変数管理で配列変数(&mTblNameDim)を確認してください"
 *変数管理 共通
 表 /* 回避策 */
 表 "無関係な.TBL"
 表形式編集

[ウィンドウ終了]コマンドを実行したあとに、
#表ファイル名一覧( )関数で調べると…
メインフォームの編集対象表とサブフォームの編集対象表のどちらも、
開いています。
しかし、この開いているが曲者のようでして、
 表 /* 回避策 */
を実行しないと、
ファイルパレットの[編集表]で確認すると[ビュー]項目に「一括実行」と表示されてしまいます。

ファイルパレットの[編集表]で確認できるのは、
 表 "無関係な.TBL"
 表形式編集
と進んで、[表形式編集]コマンドを実行している時です。

ファイルパレットで確認して[ビュー]項目に「一括実行」と表示されていると…
何らかの手段で閉じてやらないと手も足もでないようです。
※推測ですが米田さんはここでハマッテいるようです。

それで、回避策としては[ウィンドウ終了]コマンドの直後に[表]コマンドを実行すると具合がいいようです。

ちなみに桐V8sp5/sp6でも同様でした。

これはあくまでも、当方の「…たら、…れば」話ですので、
この情報で米田さんの状況が改善するかは???


18138 Re:閉じてやらないと手も足も出せないようです。 ド・モ・ONnoji 2002/12/02-12:42
記事番号18137へのコメント
ド・モ・ONnojiさんは No.18137「Re:閉じてやらないと手も足もでないようです。」で書きました。
>ファイルパレットで確認して[ビュー]項目に「一括実行」と表示されていると…
>何らかの手段で閉じてやらないと手も足もでないようです。
>※推測ですが米田さんはここでハマッテいるようです。

日本語が変??
ヤッパリ、ですね。(^^ゞ

正しくは「閉じてやらないと手も足も出せないようです。」ですか…(T_T)

18139 ありがとうございました。 米田昌弘 2002/12/02-13:56
記事番号18137へのコメント
ONnoji さん
ありがとう御座いました。
大変お手間をとらせまして
再現までしていただき
本当にありがとう御座います。
私は 桐の自動起動もいまだに 標準は CMD を
入れるようになってますので
また桐Ver5当時からのシステムを修正しながら利用しております
関係でとりあえず CMDから という利用をしておりますもので
私のかってなイメージでウインドウとフォームを同一概念で捕らえていたもので

回避策として
>ウインドウ終了
>表
の手法をとらせて頂きます。
私は今まで管理工学の姿勢 桐に500%の信頼を抱いていたもので
ちょっと・・・
でも 桐大好き 
私のようなコンピューター屋さんでもないものに
パソコンをパソコンらしく使わせてくれるのは桐以外にないですし
また 再三に渡りメールまで頂き
ありがとうございました。


18140 Re:割り切れば、「ちょっと」と思う必要はないのでは? ド・モ・ONnoji 2002/12/02-14:42
記事番号18139へのコメント
米田昌弘さんは No.18139「ありがとうございました。」で書きました。
>回避策として
>>ウインドウ終了
>>表
>の手法をとらせて頂きます。

米田さん、こんにちは。

 表
 ウィンドウ作成 "メインフォーム.wfm", ハンドル = &gHdl, 編集表 = 開く
 ウィンドウ会話 &gHdl
 ウィンドウ終了 &gHdl
 編集表 "サブフォームの.tbl"
 終了 表 編集対象表
 編集表 "メインフォームの.tbl"
 終了 表 編集対象表

としてもOKのようです。

しかし、今回のようにサブフォームの編集対象表が動的に変更される時には面倒ですね。

>私は今まで管理工学の姿勢 桐に500%の信頼を抱いていたもので
>ちょっと・・・

私は桐V8では対話型のアプリは全てイベントで作りますので、
一括処理の場合のことは全く知らなかったのですが、
今回のケースで思った私の勝手な感想ですが…
一括処理だと自分で後始末をしなさい…のようですね。

そう割り切れば、「ちょっと」と思う必要はないのでは?と思ったりします。

しかし、私には桐V8の一括処理による対話型アプリの製作経験が全くないので、
かなり見当違いの感想かもしれませんけれど…m(__)m

余談ながら、V7の時に一括処理を少しだけ使ってみたことがありましたが、
[ウィンドウ会話]というコマンドにホトホト嫌気がさしたのでありました。
ですから、桐V8でイベントが使えるようになるまで桐V5を使っておりました。


18141 Re:割り切れば、「ちょっと」と思う必要はないのでは? 米田昌弘 2002/12/02-15:46
記事番号18140へのコメント
ONnojiさん ありがとうございました。
蛇足になりますが

 ウィンドウ作成 "メインフォーム.wfm", ハンドル = &gHdl, 編集表 = 開く
 ウィンドウ会話 &gHdl
 ウィンドウ終了 &gHdl
以下をライブラリで動かすとだめだったもので 
編集表  #表番号取得("サブフォームの.tbl")

 イベントがんばります。
ありがとう御座いました。



18142 Re:ライブラリでも特に違いはありませんでしたけれど? ド・モ・ONnoji 2002/12/02-16:22
記事番号18141へのコメント
>蛇足になりますが
>表
> ウィンドウ作成 "メインフォーム.wfm", ハンドル = &gHdl, 編集表 = 開く
> ウィンドウ会話 &gHdl
> ウィンドウ終了 &gHdl
>以下をライブラリで動かすとだめだったもので 
>編集表  #表番号取得("サブフォームの.tbl")

米田さん、こんにちは。

しつこくなってスイマセン。m(__)m

ライブラリ側に「手続き定義開始…手続き定義終了」を作って、
そちらで、
> ウィンドウ作成 "メインフォーム.wfm", ハンドル = &gHdl, 編集表 = 開く
> ウィンドウ会話 &gHdl
> ウィンドウ終了 &gHdl
してみましたが、
ライブラリだからといって特に違いはありませんでしたけれど???

一括処理とライブラリの両方に同じ手続き名があったりしませんか?

※そんなことはないでしょうけれど…念のために…(^^ゞ


18143 Re:ライブラリでも特に違いはありませんでしたけれど? 米田昌弘 2002/12/02-18:00
記事番号18142へのコメント
ONnojiさん ありがとう御座います
一括処理本体
>>表
>> ウィンドウ作成 "メインフォーム.wfm", ハンドル = &gHdl, 編集表 = 開く
>> ウィンドウ会話 &gHdl
>> ウィンドウ終了 &gHdl

手続き実行   XXXXX()
>>以下をライブラリで動かすとだめだったもので 
一括処理から呼び出される
ライブラリ側
XXXX()
編集表  #表番号取得("サブフォームの.tbl")

この #表番号取得(xx)この関数がくせものなんです。

18144 Re:ライブラリでも特に違いはありませんでしたけれど? ONnoji 2002/12/02-18:22
記事番号18143へのコメント

>一括処理本体
>>>表
>>> ウィンドウ作成 "メインフォーム.wfm", ハンドル = &gHdl, 編集表 = 開く
>>> ウィンドウ会話 &gHdl
>>> ウィンドウ終了 &gHdl
>
>手続き実行   XXXXX()
>>>以下をライブラリで動かすとだめだったもので 
>一括処理から呼び出される
>ライブラリ側
>XXXX()
>編集表  #表番号取得("サブフォームの.tbl")
>
>この #表番号取得(xx)この関数がくせものなんです。

米田さん、こんにちは。

そういうことですか…。
ウィンドウ終了した後に後始末をするしかなさそうですね。

それでは。

戻る

戻る