過去の桐井戸端BBS (桐ver.8)
8162 「読み込み」コマンドでエラーが発生する(編集表の扱い) だるま 2000/10/20-17:12
WIN2K 桐V8 SP6 イベント(kev)

下記の「読み込み」でエラー(共有以外・・・)が発生します。
編集表 "全店会員資料.tbl"を書くとエラーは発生しませんが、表題やデータが更新されません。
どこが間違っているのでしょうか?
ちなみに、"会員テキスト変換.tbl"は空です。

 表 "会員テキスト変換.tbl", \
  /*表番号 = <整数> ,*/ \
   モード = 専有, \
   リトライ = する, \
  /*索引名 = <文字列> ,*/ \
  /*使用フォーム = <ファイル名> ,*/ \
   終了状態 = &終了数
   読み込み テキスト, \
        "会員テキスト.TXT", \
        項目名 = する, \
        区切り = ",", \
        空白削除 = しない, \
        終了状態 = &終了数, \
        *
  表 "全店会員資料.tbl", \
   /*表番号 = <整数> ,*/ \
    モード = 専有, \
    リトライ = する, \
   /*索引名 = <文字列> ,*/ \
   /*使用フォーム = <ファイル名> ,*/ \
    終了状態 = &終了数
* 編集表 "全店会員資料.tbl"
   読み込み 表, \
        "会員テキスト変換.tbl", \
        編集表 = する, \
        終了状態 = &終了数, \
        *
    ファイル属性 表題文字列 = "全店会員資料", \
           作成者 = "遙山少林寺 達磨可勝", \
           強制改行文字 = "", \
           未定義項目値処理 = ゼロ, \
           バックアップ = する
  終了 表, \
     編集対象表
 中止 表, \
    編集対象表
8164 Re:まいったぁ〜「読み込み」が変 だるま 2000/10/20-17:26
記事番号8162へのコメント
追伸
"会員テキスト変換.tbl"を読み込む前に保存(終了 表)してから
編集表 = しない
で読み込むとうまくいきます。
これってぇ〜何か意味があるのでしょうか?
8181 Re:まいったぁ〜「読み込み」が変 だるま 2000/10/21-10:05
記事番号8164へのコメント
お騒がせ致しました。m(__)m
解決出来ました。
実際には前記の処理中、あっちゃこっちゃ飛んでいって(手続き)戻ってきているのですが、
戻ってきたときには編集対象表が決まっていないのですね(^^ゞ
私の場合、コマンドの前に必ず「編集表 ?」がいるようです。

8186 往った道を戻ろう−編集表の扱い 佐田 守弘 2000/10/21-18:13
記事番号8181へのコメント
だるまさん
最初の質問でどうしてその様な事が起きるのか分からず、コメントできずにおりましたが、どうやら今回の書き込みから推定するに、
編集対象表が違っていた事が原因だった様ですね。

●往った道を戻る
ちょっと複雑な一括処理やイベントなどで、複数の編集表を扱っていると、現在どの表が編集対象表になっているのか、
混乱する事がなきにしもですね。
そこで、私は、途中で編集対象表を切り替えたら、元の編集対象表に戻ってから処理を終える、を原則としております。
うまく作れば必要な時に必要な編集対象表に切り替える事は不可能ではありませんから、
切り替えっぱなしにしておいても差し支えなさそうに思います。
でも、無用な混乱を避けるため、「切り替えたら元に戻しておく」が重要だと思っています。
要するに、「どこかへ行ったら、一度元に戻ってから次の所に行く」という考え方ですね。

●メニュー構造も同じ
先般話題になったメニュー構造の作り方も同じで、「メニューは逆の順で元に戻る」が分かりやすいのかとも思います。

佐田守弘(KS-00119)
8192 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/21-19:44
記事番号8186へのコメント
早速のご指導、いつも有難う御座います。
しかしながら、今回の件はまだ理解しておりません。
よろしければ再度ご指導いただけますか。m(__)m

たとえば、「AAA.kev」(編集対象表無)で

手続き定義開始 111(参照 &ぺけぺけ)
 表 ”XXX.tbl”
  表 ”YYY.tbl”
   表 ”ZZZ.tbl”
    手続き実行 999(&パコパコ)
    表整理 余白割合=50%
 終了 表 *
手続き定義終了

手続き定義開始 999(参照 &パコパコ)
 &パコパコ=あーたらこーたら
手続き定義終了

上記で表整理される表はどれなんでしょう?
私はてっきり”ZZZ.tbl”と思いこんでいました。(^^ゞ
しかし、そうでは無いようで、表整理の前に希望の表を編集表で指定しないといけないようです(T.T)
以前からこの様でしたでしょうか?
8195 Re:往った道を戻ろう−編集表の扱い 佐田 守弘 2000/10/21-20:21
記事番号8192へのコメント
だるまさん

この場合であれば、999の手続きの中で編集対象表を切り替えておりませんから、
手続きから戻って来た段階でもZZZが編集対象表になっているはずです。

でも、実際はこの通りではないかもしれませんので、実際どうなるかは何とも言えません。
特に、途中に会話処理的なものが入ると、一括処理で考えていなかった様な編集対象表の切り替えが
起きたりする場合もないとは言えません。

もちろん、一括処理で予想していなかった事が起きた場合には、その原因を突き止める事は大切です。
それと同時に、万一予想外の事があってもそれに対処できるようにしておく事も大切かと思います。

佐田守弘(KS-00119)
8199 Re:往った道を戻ろう−編集表の扱い toshi-chan 2000/10/21-22:37
記事番号8192へのコメント
だるまさん、こんばんは。

一括処理をそこで停止させてどの表が編集対象になっているのかを確認するとよいでしょう。
私は、表形式編集コマンドを挿入する、一括処理をデバッグ実行する、などの方法でいつも行っております。
(イベントだと停止できないのかな?)

8212 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/22-16:38
記事番号8195へのコメント

佐田 守弘先生、またもや早々のご回答、本当に有難う御座います。m(__)m
非常に感謝しております。<m(__)m>

>ZZZが編集対象表になっているはずです。

そうですよねぇ?
実際の「手続き定義開始 999」の内容は下記で、
フォーム上に作業内容を表示させて、表に記録する作業を手続きしています。
ほとんどのコマンド実行前に飛んでいきます。

手続き定義開始 作業内容表示(文字列 &実行文,文字列 &作業文)
 変数宣言  整数{&戻値数}
 オブジェクト操作 ハンドル     =&窓等操作3数,¥
          @ラベル 1.標題=&実行文
 オブジェクト操作 ハンドル     =&窓等操作3数,¥
          @ラベル 2.標題=&作業文
 代入 &処理経過時間=#日時時刻(#日時値)−&処理開始時刻
 オブジェクト操作 ハンドル     =&窓等操作3数,¥
          @ラベル 4.標題=&処理経過時間
 メソッド呼び出し ハンドル     =&窓等操作1数,¥
          戻り値      =&戻値数,¥
          @フォーム.描画更新()
 表 ”会員関係処操.tbl”,¥
   表番号 =8,¥
   モード =専有,¥
   リトライ=する,¥
   終了状態=&終了数
  行挿入 [操作名]=&実行文,[操作内容]=&作業文,[発生時間]=#日時値
 終了 表,¥
    8
手続き定義終了

上記で編集対象表が変わるのでしょうか?
これが最後です。教えていただけないでしょうか。
8213 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/22-16:52
記事番号8199へのコメント
toshi-chanさん、初めまして。(ここやあちらでは、よく拝見させていただいています。)
又、早々のご指導有難う御座います。<m(__)m>

>(イベントだと停止できないのかな?)

そのようです。(T.T)
私は、昔、編集対象表でかなりはまりましたので、書く際には、字下げを使って注意していたのですが、
今回はぐちゃぐちゃになりました。
まだ、なぜかしら納得いっていません。
佐田先生の方に書かせていただきましたけれど、同じくご指導いただければと思います。<m(__)m>
8214 Re:往った道を戻ろう−編集表の扱い 悲しげ 2000/10/22-18:14
記事番号8212へのコメント
どもっ、だるまさん
複数の表を開いている時に、現在の編集対象表を閉じた場合に、次にどれが編集対象表になるかは、
原則として不定であると押さえておいた方がよさそうです。
検証していませんが、場合によっては、開いているどれも編集表にはなり得ずに「編集対象表が無い」と云った挙動を示す
可能性もありえます(経験した記憶があるようでもあり、無いようでもあり、しつこいようだが未検証)。
したがってこのような場合、表を閉じた直後の行で意図的に編集表を指定してやることが無難でしょう。
私は極力そうしています。

今回の例で云えば次のように。
------------------------------------------------
手続き定義開始 作業内容表示(文字列 &実行文,文字列 &作業文)
 (中略)
 ・・・・・
 終了 表,¥
    8
 編集表 "何とか.TBL"
手続き定義終了
-------------------------------------------------
8215 Re:往った道を戻ろう−編集表の扱い 佐田 守弘 2000/10/22-21:16
記事番号8212へのコメント
だるまさん
手続きの中で編集表を開いて、閉じておりますね。
この場合には原則論としては、この手続きを呼び出す前に開いていた表に編集対象表が戻るはずなのですが、
#8214で悲しげさんが書かれているような状況がないとは言えません。
私も、表を閉じた時に次の編集表を「明」に指定するだろうと思います。

イベントの中での編集対象表の調べ方
編集対象表を調べたい場所で、
 代入 &現在表=#is表
を実行して、変数&現在表(イベントの先頭で定義しておく必要あり)に代入しておくのはどうでしょうか。

佐田守弘(KS-00119)
8216 Re:往った道を戻ろう−編集表の扱い toshi-chan 2000/10/22-21:50
記事番号8213へのコメント
それでしたら、問題の箇所での表番号を #IS表 を使用して変数に取得するというのはどうでしょう。
イベントが終了した後でもわかりますよね。

代入 &STR=#文字列(#IS表)
8217 Re:往った道を戻ろう−編集表の扱い 悲しげ 2000/10/22-23:23
記事番号8216へのコメント
これらの方法もありますね。
この他に、v8になって私がよく利用するのが

&表No[3]=#表番号取得("ナントカ.TBL")

です。変数 &表No[n]は共通変数として定義しておいて、随所で使い回しています(「3」はひとつの例です)。
これだと、名を指定できるある表の表番号を、任意の箇所で取得できるので結構便利です(ついでに云えば多重化表でも)。
余談ながら、変数名として&表番号[]とすると、イベントハンドラ内の自動変数とのからみでエラーとなる場合があるので、
あえて&表Noのようにしています。(^^;)
8218 Re:往った道を戻ろう−編集表の扱い 桐野港 2000/10/22-23:45
記事番号8212へのコメント
> 表 ”会員関係処操.tbl”,¥
>   表番号 =8,¥
>   モード =専有,¥
>   リトライ=する,¥
>   終了状態=&終了数
>  行挿入 [操作名]=&実行文,[操作内容]=&作業文,[発生時間]=#日時値
> 終了 表,¥
>    8
>手続き定義終了
>
>上記で編集対象表が変わるのでしょうか?

私もV8で経験したことがありますが、上記の場合編集対象表は変わるようです。
そのときにコマンドの説明を調べたことがありますが、説明には

終了 表***
指定した表を保存して閉じます。表を閉じた後、もっとも小さい表番号の表が、編集対象表になります。

ということで、表を閉じたときには、編集表を指定しないと表番号で決まるようです。

参考になれば

8220 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/23-09:41
記事番号8214へのコメント
悲しげさん、早速のご回答有難う御座います。
悲しげさんからコメントを頂けて、感謝!感謝!!

>検証していませんが、場合によっては、開いているどれも編
>集表にはなり得ずに「編集対象表が無い」と云った挙動を示す可能性

精神的に何故か「ほっ」としています。
悲しげさん、今後とも宜しくお願いいたします。<m(__)m>

8221 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/23-09:48
記事番号8215へのコメント
佐田先生、度々ご指導本当に有難う御座います。

>私も、表を閉じた時に次の編集表を「明」に指定するだろうと思います。
>変数&現在表(イベントの先頭で定義しておく必要あり)に代入しておくのは

勉強になりました。なるほどなるほどです。
今後とも宜しくご指導をお願いいたします。<m(__)m>

8222 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/23-10:03
記事番号8218へのコメント
桐野港さん、初めまして。又、早速のコメント有難う御座います。

>指定した表を保存して閉じます。表を閉じた後、もっとも小さい表番号の表が、
>編集対象表になります。

上記、書いてありました。(^^ゞ
マニュアル(ヘルプ)はよく見るもんですねぇ
下記も見つけました。

編集表
イベントハンドラ内で実行した場合でも、指定した表に切り替わります。ただし、ハンドラが終了した時点で、
フォームの編集対象表に戻ります。フォームに編集対象表を定義していない場合は、対象表がない状態に戻ります。

「ハンドラ」って、イベントファイル(kev)の中の、一つの「手続き定義開始〜手続き定義終了」でしたっけ?

桐野港さん、今後とも宜しくお願いいたします。<m(__)m>

8223 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/23-10:11
記事番号8216へのコメント
toshi-chanさん、早々にご指導本当有難う御座います。

>代入 &STR=#文字列(#IS表)

上記を利用させていただき、いろいろ調べてみます。
勉強になりました。みなさんすごい!!もっと頭を使わなければ(40歳間近で無理?)
今後とも宜しくご指導のほど宜しくお願いいたします。

8224 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/23-10:21
記事番号8217へのコメント
悲しげさん、複数のツリーでご指導有難う御座います。
今、「ふっ」と思ったのが、みなさん「編集対象表」対策は当たり前のようにされているのですね。
私なんて、「表」コマンドを使うとき、字下げして「今はこの表」と思い、書いているだけでした。
まだまだ未熟者ですみません。(+_+)

8227 Re:往った道を戻ろう−編集表の扱い toshi-chan 2000/10/23-23:06
記事番号8217へのコメント
 悲しげさん、コメントありがとうございます。 #表番号取得 は知りませんでした。
V8の新規関数ですね。
多重化まで調べられるので使い勝手はいいですね。

 私が前記の方法を思いついたのは、履歴のおかげなんです。
一括処理を使い始めた頃、コマンドの書き方がわからないことが多く「履歴に登録してそれをコピーする」という作業を繰り返しました。
表を閉じるときの一括コマンドをそのときに見つけ、それが

    代入 &履歴変数 = #IS表
    中止 表 &履歴変数

でした。一括処理を勉強している方々も履歴を見直してはいかがですか。
新しい発見があるかもしれません。
8228 Re:往った道を戻ろう−編集表の扱い 桐野港 2000/10/23-23:16
記事番号8222へのコメント
だるま様 はじめまして

私はV5からV8に乗り換えて約1ヶ月あまりの若葉マークです。
たまたま同じような問題にぶつかったことがあったというだけです。
先日も他の方々からいろいろアドバイスを頂きました。

>編集表
>イベントハンドラ内で実行した場合でも、指定した表に切り替わります。ただし、ハンドラが終了した
>時点で、フォームの編集対象表に戻ります。フォームに編集対象表を定義していない場合は、対象表が
>ない状態に戻ります。

>「ハンドラ」って、イベントファイル(kev)の中の、一つの「手続き定義開始〜手続き定義終了」
>でしたっけ?

まだまだわからないことばかりで、到底コメントするような立場でなく質問する側ですが
話しの成り行きで私なりのかってな解釈では(間違ってれば諸先輩方訂正お願いします。勉強中ですので)

イベント/イベントハンドラ/ハンドラ の言葉の詳しい定義はわかりませんがおおざっぱに
イベントハンドラは kevの中の
手続き定義開始 オブジェクト名::イベント名(引数)
 ****
手続き定義終了
の部分でイベントの発生により呼び出されるもので

手続き定義開始 手続き名(引数)
 ****
手続き定義終了
は 一般のサブルーチンで V5では 名札〜手続き終了 と同じような意味と解釈しております。

またフォームと編集対象表は通常は一対のようなもので(フォームの呼び出し時点ではkevの
メインの部分で対象表の切り替えはできるようですが)フォーム編集から離れて、
イベントハンドラ(と そこからか又はコマンドボタンから呼び出すサブルーチン)に処理が
移ってはじめて編集対象表の切り替えができるようになり、最後にイベントハンドラが終了し
フォーム編集に戻るときはもとのフォームと一対の編集対象表に戻る と解釈しております。

私なりの解釈で間違ってればゴメンなさい。 今後共よろしくお願い致します。

8237 Re:往った道を戻ろう−編集表の扱い だるま 2000/10/24-12:59
記事番号8228へのコメント
桐野港さん、度々早速のご回答、誠に有難う御座います。<m(__)m>
なるほどなるほどです。理解いたしました。
>私はV5からV8に乗り換えて約1ヶ月あまりの若葉マークです。
>たまたま同じような問題にぶつかったことがあったというだけです。
その方が、私には解りやすい説明になりました。有難う御座いました。m(__)m

戻る