過去の桐井戸端BBS (桐ver.9)
20524 イベントハンドラ内で表が開けない 沼田政治 2003/05/24-14:33
いつもお世話になります。
イベントハンドラ内で新しい表が開けなくて困っています。
イベントは行訂正終了イベントです。
行訂正が終了したことを受けて次の処理のために開こうとした表が開きません。

処理の狙いは、あ.tblを編集対象表として別に用意されているマスタ.tblの
項目からデータを表引きすることです。ここでマスタ.tblのデータをそのまま表引きしてくるのではなく、
計算させた結果を引いてきたいのです。
さらに、表引き後にそのデータを編集しなければならない状況も想定したいのです。

通常は、あ.tblの各項目を計算項目とすることで自動的に引いてくることが出来ますが、
それでは表引き後のデータを編集することが出来ません。
計算項目ではなく表引き項目にすれば、後で編集は出来ますがノータッチではデータを入力することが出来ません。
そこで、計算専用の い.tbl を作成しました。

あ.tbl で入力した必要な項目値を い.tbl に行追加で送り、
そこで計算させた結果を併合などの機能を使って あ.tbl に戻そうと思っているのです。
この時、い.tbl に行追加するために開こうとしても表が開きません。

エラーは何も表示されず、試しに 終了状態=&実行リターン を記述したところ、値は 0 でした。
つまり表を開くのを失敗しているのです。
い.tbl は計算専用のファイルですから、他のタイミングで、例えば参照などでも使っていることはありません。
表の共有や専有指定などが影響するかもしれないと思い、
それぞれの設定でやってみましたが、これでも改善されません。

後は、どのようなミスの可能性を考えれば良いんでしょうか。
20527 Re:イベントハンドラ内で表が開けない 宮城 2003/05/24-16:44
記事番号20524へのコメント
沼田政治さん、こんにちは。

本当に表を開けていませんか? トレース出力ウィンドウというものがあります。
表示メニュー、もしそこになければ、ツール→緩急設定→一括のタブ→高度な設定→トレース出力ウィンドウを使用するに
チェックを入れ桐を再起動します。

さて、行訂正終了イベントで表が開けるかためしてみましたが開けます。

ひょっとするとと思うのは、Dos桐の感覚で、

表 "い.tbl"

とだけ記述したのではありませんか。もしそうなら、次の行に

ウィンドウ作成 表

と追加してみてください。

20528 Re:イベントハンドラ内で表が開けない 通りすがり(常駐モード) 2003/05/24-16:52
記事番号20524へのコメント
戻り値  説明
 1   表を開いた。
 0   共有違反以外のエラーが発生したため、表を開くことができなかった。

とあります。ここで、
>共有違反以外のエラー
として考えられる事ですよね。
このファイル、読み込み専用とか、WinXPなどでアクセス権のないフォルダにあるとか?

ちなみに、イベントが発生していない状態で、「ファイル」→「読み込み」で表が開けますか?
開けない場合には、そっちにもっと詳しいエラーメッセージが出るんじゃない?



20530 Re:イベントハンドラ内で表が開けない うにん 2003/05/24-17:39
記事番号20524へのコメント
>この時、い.tbl に行追加するために開こうとしても表が開きません。エラー
>は何も表示されず、試しに 終了状態=&実行リターン を記述したところ、値
>は 0 でした。つまり表を開くのを失敗しているのです。

ファイルの場所が違うとか?

それはそうと、い.tblを開くんでなく直接マスタ.tblを開いて必要なデータを検索して
あ.tblに入れてしまったほうが簡単だと思いますが。

20536 Re:イベントハンドラ内で表が開けない 通りすがり(常駐モード) 2003/05/24-19:41
記事番号20530へのコメント
>ファイルの場所が違うとか?

ファイルの場所が違う=表コマンドでは「ファイルが無い」 と同等ですよね。
う〜む。最初、単純にファイル名そのものが間違っている?と思ったけど、それなら「表ファイルがありません」なんてエラーが
きちんと出る筈ですよね?

あれ?イベントではこんなエラー無しに動いたっけ?

エラーなしに「終了状態」が「0」ってことは、表ファイにはアクセスできていても、
何かしらの原因で開けない?って思ったんだけど。

いずれにせよ、このような方法ではなく、うにんさんのような方法が定石かとは思います。



20538 Re:イベントハンドラ内で表が開けない 悲しげ 2003/05/24-20:03
記事番号20524へのコメント
どもっ、沼田さん

どうして表が開けないかは判りませんが、読ませていただいて、
何だか不必要なまでに複雑にされているような印象を持ちました。

#表引きした入力値を訂正できるようにしたいと云うことであるならば、
一番簡単な方法としては、#表引き計算式を項目計算式としてではなく、
項目属性/入力タブの「編集初期値式」に設定してみてはいかがてしょうか?

こうしておけば、当該項目値が空の場合に限り、#表引きされた値が自動的に入力されますし、
かつ入力値を修正することも可能です。

※再度#表引き値を入れたければ、当該項目値を一度空にした後に改めて当該項目にフォーカスを移せば、再度自動的に入ります。

本格的にやるなら、あるイベント*によって、
1)表引きの比較項目となる項目値aを変数aに格納。
2)表引き対象表を(必要な索引で並べ替えた状態で)開いて、
 当該項目aを変数aで検索。
 該当あれば、変数b等に項目b等の値を格納。
 表引き対象表を閉じる。
3)元表に戻って、「行訂正」コマンドで項目b等に変数b等の値を記入。

* あるイベントとは、例えばコマンド牡丹の押下(手続き実行または
 「マウス左クリック」)、 項目値aの「ソース値更新」、あるいは
 「キーダウン」イベントも使えるかと思います。
 「行訂正終了」イベントは、一見使えそうなんですが、
 これがまた なかなかの難物です、特に項目訂正時とかでは多重発生したりすることが
 制御を超複雑にしてしまうことがありますから、
 私としては 一寸もうコリゴリって感じがあります。(^^;)

20541 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/24-21:20
記事番号20527へのコメント
宮城さん、ありがとうございます。
「トレース出力ウィンドウ」というものを知りませんでした。
これからやってみようと思いますが、「ウィンドウ作成 表」の処置ではできませんでした。
結果は追って報告したいと思います。

20542 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/24-21:24
記事番号20528へのコメント
通りすがり(常駐モード)さん、ありがとうございます。
>ちなみに、イベントが発生していない状態
というのは、普通に表を単独で開く、ということですよね。
これは大丈夫です。計算専用と考えていますから、その動作については確認しています。
当然、定義画面から編集画面に移っていくつかのサンプルで確かめています。
あ.tbl から値を送るのではなく直接項目にデータを入れて確認しています。
もう少し頑張ってみようと思います。
20543 Re:イベントハンドラ内で表が開けない 佐田 守弘 2003/05/24-21:32
記事番号20524へのコメント
沼田政治さん

●表が開けない件
まず、表が開けない事について可能性を述べます。
・表コマンドだけで開いた時
イベントハンドラの中から表コマンドを使った場合、基本的には表は開けます。
ただし、開かれた表は表示はされません。開いた表をウィンドウに表示させるには、
ウィンドウ作成コマンドで表ウィンドウを開く必要があります。
表コマンドだけで開くのは、他の表を表引きで入力する代りに検索コマンドで検索し、
その値を変数に入れて持って来る様なときに行います。

・フォームがモーダルフォームの時
モーダルフォームから表を開いても、開いた表はモーダルフォームの裏になって
表に表示できないときがあります。

・表引きなどで開かれている時
上記2つは、表は開かれますから、戻値が0という事はないはずです。
表コマンドで開いたときの戻値が0だとしたら、やはり共有違反で開けなかった
可能性が高いと思います。その一番の可能性は表引きで開かれている事です。
あ.tblにい.tblから表引き入力を設定している等の事がないか、再確認して下さい。

●表引き値を編集する
表引きで入力した値を編集したいのであれば、項目計算式に表引き関数を設定するのではなく、
項目初期値式に設定して下さい。
この様にすれば、初期値として初期値として表引きした値を設定でき、その値の編集も可能です。

●質問の本当の目的に対して
さて、質問の主旨というか本当の目的は、以下にある様ですね。
 >そこで、計算専用の い.tbl を作成しました。あ.tbl で入力した必要な
 >項目値を い.tbl に行追加で送り、そこで計算させた結果を併合などの
 >機能を使って あ.tbl に戻そうと思っているのです。
この目的を達するのであれば、計算用の表い.tblは不用です。

入力後イベントを使って、項目値を書き込んだ直後に、その項目値を参照し、
必要な計算を行います。そして項目値代入コマンドで項目値を書き換えれば
本当の目的が達成されると思います。

佐田守弘(KS-00119)
20544 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/24-21:39
記事番号20536へのコメント
うにんさん、通りすがり(常駐モード)さん、ありがとうございます。
パス名も含めてのファイル名指定のミスについては何度も確認しています。
おそらく最も多いミスでしょうから。
また、い.tbl は、ファイルそのものとしては異常はないようなのです。
念のためのと思い表検査なども行ってみましたが、異常は見つかりませんでした。
なによりも、単独では問題なく開けていますから。
ただ、イベントハンドラ内に記述した行の実行時にだけは開かないのです。

>いずれにせよ、このような方法ではなく、うにんさんのような方法が定石かとは思います。

定石通りの定義としては計算項目に #表引き関数でマスタ.tblのデータを引いてくる、
というものだと思いますが、ただ単純に引いてくるだけでなく、引いてきたデータを計算によって加工し、
その結果を取り込みたいのです。通常の方法では無理ではないかと思っています。
20546 Re:イベントハンドラ内で表が開けない 通りすがり(常駐モード) 2003/05/24-22:02
記事番号20544へのコメント
>イベントハンドラ内に記述した行の実行時にだけは開かないのです。

そのイベントの記述を差し支えない程度でいいので報告してみては?
意外とその当該行でない部分の影響もあるかも?
エラー個所だけに固執すると、ドツボにはまるかも。


20548 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/24-22:18
記事番号20538へのコメント
悲しげさん、いつもありがとうございます。
「編集初期値式」や「挿入初期値式」を使う方法は、当初はやってみました。
”当初”というのは、最初は単純にマスタ.tblのデータを持ってくれば
いいかなと思っていたからです。
しかし、その後の処理の都合から、マスタ.tblのデータをいくつかの条件によって加工した結果を表引きしてくる必要が出てきたのです。
そこで、各初期値式に計算式を設定しようと思えば恐ろしく複雑な計算式になってしまいますので、
この部分を別のtblでさせようと考えたのです。

>本格的にやるなら、あるイベント*によって、
>1)表引きの比較項目となる項目値aを変数aに格納。
>2)表引き対象表を(必要な索引で並べ替えた状態で)開いて、
> 当該項目aを変数aで検索。
> 該当あれば、変数b等に項目b等の値を格納。
> 表引き対象表を閉じる。
>3)元表に戻って、「行訂正」コマンドで項目b等に変数b等の値を記入。

今、やろうとしている処置は、行訂正終了イベント内で
1)表のデータを特定するための項目[フラグ]の値を変数&aに格納
2)表引きの比較項目となる項目値bを&bに格納
3)計算させるための条件となる項目値c,d,e...を&c,&d,&e...に格納
4)い.tblを開く
5)い.tblに行追加 [b]=&b,[C]=&c,[d]=&d,....
6)い.tbl内で計算させた後の項目値を、それぞれ&f,&g,&h,&i,&j...に格納
7)編集表を あ.tbl に戻し、
8)検索 行番号=&a
9)行訂正 [f]=&f,[g]=&g,[h]=&h,[i]=&i....
というものなのです。
ここで 4)い.tbl が開かないのです。
5)の行追加が、それまでの編集表である あ.tbl に対して実行されてしまいます。
何か、プログラムの流れ的に間違いがあるのでしょうか。
なお、実はこの措置は「マウス左クリック」と「ソース値更新」イベントでもやってみています。
結果は同じです。あ.tblに行追加されてしまいます。


20549 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/24-22:51
記事番号20543へのコメント
佐田さん、ありがとうございます。
今回の質問は表の表示に関することではありませんから、ウィンドウ作成についての
記事交換は控えさせて頂きます。
表が開いていないということは間違いないようですので、もう一度共有違反をチェックしてみます。
念のために確認しますが、
>あ.tblにい.tblから表引き入力を設定している等の事がないか、再確認して
>下さい。
あ.tblの定義(項目計算式に限らず)で表引き入力を設定しているファイルの確認、ということですね。
編集対象表である あ.tbl と、その入力に使っているフォームなども含めて、
その表引き指定に い.tbl を指定していないかどうかをチェックしてみます。
なお、「項目初期値式」を使う方法は、キーとなる項目値の訂正の場合と
新規行追加の場合のどちらでも動作させたいこともあるため、難しいだろうなと思っています。

>入力後イベントを使って、項目値を書き込んだ直後に、その項目値を参照し、
>必要な計算を行います。そして項目値代入コマンドで項目値を書き換えれば
>本当の目的が達成されると思います。

なるほど、その通りですね。
計算用い.tblに定義した通りの計算式を記述していけばいいのですね。

勝手なことですが、急な用事で今日も明日も作業をすることができません。
検証は月曜日になるかもしれませんが、改めて報告したいと思います。
お忙しいのにありがとうございました。

20550 Re:イベントハンドラ内で表が開けない 通りすがり(常駐モード) 2003/05/24-23:51
記事番号20548へのコメント
横やりですが、

>5)の行追加が、それまでの編集表である あ.tbl に対して実行

ならば、

>4)い.tblを開く
 編集表 "い.tbl" ← 追加
>5)い.tblに行追加 [b]=&b,[C]=&c,[d]=&d,....

とすると、ちゃんと桐からエラーが出て止まるんですね。
(い.tblが無いっていうようなエラー)

20562 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/25-23:43
記事番号20550へのコメント
通りすがり(常駐モード)さん、ありがとうございます。

>とすると、ちゃんと桐からエラーが出て止まるんですね。
>(い.tblが無いっていうようなエラー)

はい。編集表はないとのエラーを表示して止まります。
イベントの手続定義では
1)&d=[a],&e=[b],&f=[c],... →必要な項目値を変数に格納
2)表 い,終了状態=&実行リターン
3)行追加 [g]=&d,[h]=&e,[i]=&f,...
というものです。念のためと思い、2)と3)の間に
編集表 い
と記述してみました。
この時はちゃんと(?)エラーを表示します。
この時、当然 表 あ.tbl は開いたままです。
また、あ.tbl を編集するためのフォームも、2つですが開いたままです。
パス指定やファイル名の記述ミスなどの場合でしたら当然エラーを出して止まるはずですし、
共有違反の場合でもエラーを出すのではないかと思っています。
「編集表」というコマンドで「い.tbl」を指定しているのですから、
「い.tbl」が開いていなければエラーを表示するのは当然です。
だから、この時のエラーの内容は「編集表がありません」というものです。
このようにエラーが発生すればその内容に対応するエラー表示が出なければ
ならないのではないかと思っていますが、上記の2)の場合はエラー表示して止まるのではなく、
ただ「0」という戻り値を返しただけでそのまま処理を継続しているようなのです。
コマンドの仕様で、戻り値だけはきちんと戻しておいて、
そのまま処理を継続するようになっているのでしょうか。
表コマンドに終了状態オプションが用意されているということは、
表を開くことを失敗しても、
必要なら「0」の戻り値を使って処理を分岐させたりなどの方法で
プログラムの実行そのものが止まらないように設計されているのではないか、
とも考えられることです。
つまり、これはエラーではないということになりますでしょうか。

たくさんのアドバイスをいただいていますが、都合により明日にならなければ検証してみることができません。
検証の結果は、また追って報告したいと思います。ありがとうございました。

20564 Re:イベントハンドラ内で表が開けない 通りすがり(常駐モード) 2003/05/26-00:11
記事番号20562へのコメント
ですので、その前後のイベントの記述を差し支えの無い範囲で示せば、
もう少し詳しい内容がわかるんですが。
皆さんが同様の処理をトレースしてみる事もできます。

「〜〜だ」と確信されている事でも、どこかで見落としている事もあるかと重いますよ。


20568 Re:イベントハンドラ内で表が開けない うにん 2003/05/26-09:12
記事番号20562へのコメント
>コマンドの仕様で、戻り値だけはきちんと戻しておいて、そのまま処理を継
>続するようになっているのでしょうか。
>表コマンドに終了状態オプションが用意されているということは、表を開く
>ことを失敗しても、必要なら「0」の戻り値を使って処理を分岐させたりなど
>の方法でプログラムの実行そのものが止まらないように設計されているので
>はないか、とも考えられることです。

その通りです。
開けなかった時単純にエラーで止まって欲しければ、終了状態を指定してはいけません。
表コマンドに限らず、終了状態を指定したら、どの状態でも問題ないように自分でプログラムしないといけません。

20570 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/26-11:59
記事番号20564へのコメント
通りすがり(常駐モード)さん、お手間をおかけします。

問題のイベントハンドラの記述内容は次の通りです。

手続き定義開始 フォーム::行訂正終了(長整数 &明細番号,長整数 &モード)
    変数宣言 固有,整数(&フラグ,&a,&b,...)
   &フラグ=[フラグ],&a=[a],&b=[b],...
    表 い,バージョン変換=する
行削除 *
行追加 終了状態=&確認,[aa]=&a,[bb]=&b,...
      置換 終了状態=&確認
      &a=[cc],&b=[dd],...
    編集表 あ
      検索 [フラグ]=&フラグ
      行訂正 [a]=&a,[b]=&b,...
手続き定義終了
    
項目と変数が多いのでa,bなどと割愛していますが、その他は記述通りです。
「バージョン変換=する」という記述は今回の問題には影響していないと思いますので、
ここでは無視しますが、
表 い → 表 い,終了状態=&実行リターン
とすると、&実行リターン=0 が代入されています。
表 い → 表 い,リトライ=しない,終了状態=&実行リターン
と記述しても戻り値は「0」です。-1や-2の値は返ってきていません。
表 い → 表 い,リトライ=しない
とすると、エラーメッセージを返してきました。
KD1103:ファイル名の形式に誤りがあります[氏名]
というものです。
項目[氏名]は い.tbl に定義している項目ですが、項目計算式に
#表引き([氏名コード],=,&氏名,[コード],[氏名])
と定義しています。[氏名コード]が手続き定義の[aa]に該当します。
表引先の表「&氏名」ですが、文字列型共通変数で、氏名などのマスタテーブルです。
試しに、&氏名を使っている行をすべて削除したところ、正常に動作しました。
表が開けない原因は&氏名にあるようです。
&氏名の変数値そのものには間違いはないようです。フルパス付きでファイル名を格納していますが、
単独で表を開いたところ、問題なく開きます。
&氏名は、あ.tblでも使っていますし、フォームでも使っています。しかし、どれも表引き関数内でしか使っていません。
何かの"違反"が起こっているとは思います。&氏名のファイルは あ.tbl などとは異なるフォルダにありますが、
それが影響しているようなこともチェックの対象になりますでしょうか。

なお、今取り組んでいる処理そのものについては、今回の問題に関係なく佐田さんからアドバイスいただいた方法に
挑戦してみようと思っています。
しかし、この問題がなぜ起こるのか知りたいと思っています。

20572 Re:イベントハンドラ内で表が開けない うにん 2003/05/26-12:33
記事番号20570へのコメント
>表 い → 表 い,リトライ=しない
>とすると、エラーメッセージを返してきました。
>KD1103:ファイル名の形式に誤りがあります[氏名]
>というものです。
>項目[氏名]は い.tbl に定義している項目ですが、項目計算式に
>#表引き([氏名コード],=,&氏名,[コード],[氏名])
>と定義しています。[氏名コード]が手続き定義の[aa]に該当します。

いろいろやってみると、このエラーは存在しないパス名の時にでるようですね。
表コマンドの直前で&氏名の内容を確認してみては?

20573 Re:イベントハンドラ内で表が開けない 悲しげ 2003/05/26-13:47
記事番号20570へのコメント
どもっ、沼田さん

>「バージョン変換=する」という記述は今回の問題には影響していないと思いますので、

試してもいないし、全く根拠がないことなのですが、
もしかして「バージョン変換=する」が悪さをしている可能性がないとは云いきれないので、
「い.tbl」はバージョン変換済みのものを使うようにして、
「表」コマンドの引数からこの記述を抜いて試してみてはいかがでせう?

20574 Re:イベントハンドラ内で表が開けない 悲しげ 2003/05/26-13:54
記事番号20573へのコメント
なぜ、引数「バージョン変換=する」を付けたかの理由はわかりませんが、
データ構成上でどうしても毎回必要なら、一端バージョン変換で表を開閉して再度開くと云う手もあります。
例えば
 表 い,バージョン変換=する
 終了 表 編集対象表
 表 い   /*バージョン変換=しない*/

なんか意味なさそうな感じですけど。(^^;)

20576 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/26-14:34
記事番号20572へのコメント
うにんさん、ありがとうございます。

念のためと思い、

&氏名="d:\k3\data\・・・・"  ←正しいフルパス付きファイル名
表 い
  行追加 ・・・・

と1行挿入してみたところ正常に動作しました。(表は問題なく開き、定義内容通りの処理をしてくれています)
これで&氏名の変数値が引き継がれていないことが分かりました。原因はここのようです。

しかし、あ.tbl の項目値を訂正している途中時点での &氏名 の変数値を確認すると正しく、
また、訂正を確定してエラーとなった後の確認でも正しい変数値でした。
つまり、&氏名の変数値そのものは書き替わっているわけではないようです。
い.tblを開く動作中に定義内容をチェックしているはずですが、この時点で&氏名の変数値を参照できていない、
ということになるのでしょうか。
い.tblは、単独では開くことができますから、直接表を開けば&氏名の変数値を読むことができるが、
一括処理内のコマンドで命令したときは読めない、ということになってしまうんでしょうか。
そんなはずはない、と思いますが....。
&氏名は共通変数にしていますから、桐を終了するまではいつでも使えると思っていますし....。

20577 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/26-14:49
記事番号20549へのコメント
佐田さん、ご迷惑をおかけしています。

次のようなイベントを書いてみました。

手続き定義開始 t氏名コード::入力後(参照 文字列 &編集文字列,長整数 &モード,参
照 長整数 &入力継続)
  項目値代入 [氏名]=#表引き(&数値(&編集文字列),=,&氏名,[コード],[氏名]),....
手続き定義終了

命令文としては 項目値代入 []=計算式,... で良いと思っていましたが、#表引き関数は
使えないとのメッセージが返ってきました。
イベントは、ソース値更新でも同じでした。試しに#表引き関数ではなく定数を直接記述してみた場合はそのまま代入できています。
表引き関数のヘルプも見てみましたが、それらしいことは書かれていません。
次のチェックポイントを教えていただければうれしく思います。よろしくお願いします。

20578 Re:イベントハンドラ内で表が開けない 沼田政治 2003/05/26-14:58
記事番号20574へのコメント
悲しげさん、お世話をおかけしてます。

バージョン変換の部分は、どうも関係なさそうです。
何回かやってみています。すべてのオプションを付けたり、外したり....。
どのパターンも変化なし、でした。

やはり、共通変数 &氏名 が原因のようです。
共通でありながら、何らかの原因によってその変数値を読みとることができない状況のようです。
この変数の名称を変えることも含めて、もう一度変数宣言から見直してみようと思っています。

20581 Re:イベントハンドラ内で表が開けない 悲しげ 2003/05/26-15:32
記事番号20578へのコメント
>やはり、共通変数 &氏名 が原因のようです。
>共通でありながら、何らかの原因によってその変数値を読みとることができない状
>況のようです。
>この変数の名称を変えることも含めて、もう一度変数宣言から見直してみようと思
>っています。

なるほどなるほど、

#20570
>&氏名は、あ.tblでも使っていますし、フォームでも使っています。
>しかし、どれも表引き関数内でしか使っていません。

&氏名の値が、表「い.tbl」を開く前に上記の影響を受けちまって変わっているのかもしれませんね。
その辺り

手続き定義開始 フォーム::行訂正終了(長整数 &明細番号,長整数 &モード)
 変数宣言 固有,整数(&フラグ,&a,&b,...)
 &フラグ=[フラグ],&a=[a],&b=[b],...
 確認 "氏名変数の中味は"+&氏名    /*★*/
 表 い,バージョン変換=する

で確認できるといいですね。

いずれにせよ、変数名をぶつからないように変えた方がよさそうですね。
そして、変数値が可変ならば、できれば直前で代入した方がデバッグしやすいかも。
(#表引き関数で使われる変数名を仮に「&氏名表」とすれば)
 &フラグ=[フラグ],&a=[a],&b=[b],...
 &氏名表=#cond("某1","なんとか","某2","かんとか",・・・・・)
 表 い,バージョン変換=する

20582 Re:表は開けました 沼田政治 2003/05/26-16:21
記事番号20581へのコメント
悲しげさん、みなさん、ありがとうございました。解決しました。

共通変数 &氏名 と全く同じ名前で、新たに変数宣言を行ってしまっていました。
計算専用表 い.tbl で計算させた結果を書き戻すために、多くの項目値を変数に格納するための変数群を宣言していたのです
が、その中に 固有,文字列{...,&氏名,...}と記述してしまっていました。
この時点で変数値はクリアされてしまいます。全くの、うっかりミスでした。よくあることとは言え、恥ずかしい限りです。
皆さんには長い時間を割いていただいて申し訳ありませんでした。

編集対象表 あ.tbl に対応したフォームのイベントファイルの 名札 メイン 部分に変数読み込みを記述しています。
ここで&氏名の変数値を読み込むことにしているのですが、い.tblのエラーが発生後、
フォームに戻るときにもこの部分を実行しているのですね。
変数宣言でクリアされてしまった変数値がセットされるためにはこの部分を実行するしかないのですが、
解説にはこの部分はフォームが開いたときに一度だけ実行されるとあります。
それがどうしてまた実行されるのか、ということについては別スレッドにした方が良いでしょうから、
また改めてお尋ねしたいと思います。

まずは、皆さんにお礼を申し上げます。ありがとうございました。

20584 Re:表は開けました 通りすがり(常駐モード) 2003/05/26-16:39
記事番号20582へのコメント
>新たに変数宣言を行ってしまっていました。

とほほ・・・・。


20588 Re:イベントハンドラ内で表引き関数が使えない(解決です) 沼田政治 2003/05/27-10:14
記事番号20577へのコメント
佐田さん、みなさん、色々とありがとうございました。
表が開けない件は全くの単純ミスでした。ご迷惑をおかけして申し訳ありませんでした。
そもそもがややこしいやり方をやってみようとしたのが間違いの元でした。宣言した変数の数が20も超えてしまうと、
自分でも何がなんだか分からなくなります。
それと、癖でしょうか。変数の宣言はプログラムの最初に記述する、という強迫観念のようなものが出てしまい、
変数だけをまとめて最初に記述し、それを使うのは後のほう、という書き方も単純ミスの原因になったようです。

ところで、イベント内で表引き関数が使えなかった件ですが、
過去ログの検索で解決しました。これも、過去ログのチェックをサボった単純ミスでした。重ね重ね申し訳りません。

今後もご迷惑をおかけすると思いますが、Excelなどではできないことが桐ではできます。
もっと本格的なプログラムならSQLとかオラクルとかあるようですが、
全くの素人の分ではどうしようもないでようです。
これからも桐を使っていくしかないな、というのが本音になってきていますので、これからもよろしくお願いします。

戻る