過去の桐井戸端BBS (桐ver.8)
13342 表操作でのイベントを作ったのですが、これでよいのかよくわかりません 藤野 2001/10/02-23:52
表、フォームを作り井戸端で質問して少しづつ自分のやりたいことができてきました。
今回はイベントで教えてください。kiri8sp2です

今月入力をするためのものです。
表は集金・経過金額統合表と保存用のほ集金経過予定金額.tblです
おのおのに読み込み条件を設定しています。
フォームはNULLフォーで 今月準備のボタンを押すと下記の手続きが実行されるようにしました。
これは履歴で作ったものをそのままコピーして貼り付け、不要と思われる部分を削除したものです。

実験では上手く動いているのですが、2行目3行目がこれでいいか疑問です
ご指導いただければ幸いです。

これは”集金・経過金額統合表”を開いておいて”ほ集金経過予定金額.tbl”
(前月のデータ)を削除、前記を読み込、今度は集金・経過金額統合表を行削除して
入力に必要な物だけ読み込むようにしたものです。

手続き定義開始 今月入力準備()
表 集金・経過金額統合表
表 "ほ集金経過予定金額.tbl",モード=専有
行削除 *
読み込み 表,条件名="ほ集金経過金額"
終了 表
表 集金・経過金額統合表
行削除 *
読み込み 表,条件名="今月準備"

手続き定義終了

変数はよく分からないので使用しておりません。よろしくお願いします。
13344 Re:表操作でのイベントで教えてください 今村 誠 2001/10/03-07:45
記事番号13342へのコメント
藤野さんこんにちは
>手続き定義開始 今月入力準備()
ここに現在の編集表を取得する変数を作成した方が良いと思います。
変数宣言 整数{&hyo1,&hyo2,&hyo3}
&hyo1=#IS表
>表 集金・経過金額統合表
&hyo2=#IS表
>表 "ほ集金経過予定金額.tbl",モード=専有
&hyo3=#IS表
>行削除 *
>読み込み 表,条件名="ほ集金経過金額"
編集中の表は閉じられないので次の表に切り替えたあとに
>表 集金・経過金額統合表
終了 表 &hyo3
>行削除 *
>読み込み 表,条件名="今月準備"
ここも閉じられないので編集表を切り替えます。
編集表 &hyo1
終了 表 &hyo2
>手続き定義終了
>
>変数はよく分からないので使用しておりません。よろしくお願いします。

表の指定は番号できるので、長い名前を書くより短い変数が簡単な記述ですむと思います。
表を開くときに表番号の指定ができますが、使用している表番号はエラーとなるので
簡単な一括で使用表が少ないのであれば、現在の表を桐で指定した番号の取得を
変数に代入した方が、簡単な気がします。
一度試してみてください。
13348 Re:表操作でのイベントで教えてください 今村 誠 2001/10/03-19:13
記事番号13344へのコメント
藤野さんこんにちはNULフォームと書いてあるので、
とんちんかんなコメントでした、
2行目は要らない気もしますが、条件などが不明のなのでわかりません。

13349 コメント有難う御座います 藤野 2001/10/03-20:28
記事番号13344へのコメント
今村さん
早速、コメント有難う御座います。説明が不足のようでしたのでもう少し付け加えます、
NULLフォームを作り(メユーフォーム)、そこからコマンドボタンで今月入力
準備()を実行しています。
 変数は便利だとは思いながら、なかなか使えませ、この機会に編集表の変数から少しづつ、マスターしたいと思います。
 私も説明が下手なので申し訳ありません。
早速試してみます。有難う御座いました。
13350 Re:行削除 * 圧縮 今村 誠 2001/10/03-21:20
記事番号13349へのコメント
藤野さんこんにちは、行削除 *
がありますが、見かけ上見えませんが、表のファイルサイズは、上記に関係なく毎月大きくなります。
圧縮でダイエットするか、枠組み書き出しをおすすめします。

ただし、圧縮は絞り込み中は使えません。
前月の要らないデータを消すための処理のようにも見えます。

わたしなら、確認コマンドを挟んで、削除するデータを明示して、手続きを進めると思います。
このようなデータは、実際のデー手を丸ごとコピーして実行しないとうまくいったように見えて、うまくいってないかもしれません。
止まらないとうまくいったは違うと思います、

13355 履歴から作るイベント 佐田 守弘 2001/10/04-02:23
記事番号13342へのコメント
藤野さん
まず大ざっぱな事を言えば、藤野さんが作られたイベントハンドラでも動かない事はないと思います。
とは言え、質問の主旨は「もっと良い書き方はないのか?」ですので、この点についてコメントします。
●表番号
これは、#13344にて、今村 誠さんが書かれている通りで、「#is表」関数を使って、表番号を取得しておいた方が、何かと便利です。
桐ver.5時代は、積極的に表番号を指定する方法を常用しておりましたが、
イベントの場合、他の表がその番号で開かれている事があり得るので、
表番号を明に指定する事は止めた方が良いと思います。
この点で、今村 誠さんのコメントは重要です。

●編集表の切替方法
藤野さんのイベントの3行目
 >表 集金・経過金額統合表
は、既に開かれている表(多分、この時点でこの表が編集対象表になっていると思いますが)を
指定しているので、実質的には「編集表」コマンドと同じ効果になります。
この表が基本状態の時には問題ないのですが、並べ替えや絞り込み状態であるとエラーになります。

正しくは、「編集表」コマンドを使って編集対象表を指定して下さい。
しかしながらこのコマンドでは、表名を指定する事ができず、表番号で指定する必要があります。
このために前述の様に「#is表」関数を使って、表番号を調べておく必要が出てきます。

●条件名で記述するのが良いかどうか
読み込みコマンドに限らず、いくつかのコマンドで、既に登録されている条件名を指定できるものがあります。
この場合に2通りの書き方があります。

@コマンドの中で条件名の登録と登録した条件名で実行する方法
 書き出し条件削除 <既存の条件名>
 書き出し条件登録 <同じ条件名>
 書き出し 条件名=<その条件名>
の様な書き方です。
これらのコマンドは、条件の編集を行えば自動的に作られると思います。
この方法で書いておくと、仮に条件名が削除されても(あるいは登録してない表に対しても)、
コマンドで条件が登録され、その後は会話処理でもその条件が使える利点があります。
この場合の先頭の条件名の削除は、省略しても大丈夫ですが、
別の内容で条件が登録されていると、エラーになる場合があり得ます。
なお、条件登録のコマンドを書かずに、条件名を指定しての実行だけだと、
どの様な内容の条件であるかが、イベントの内容だけで判断できないので、お奨めできません。
時として、会話処理で条件の内容が変更されていて、予測外の結果が起きる事もあり得ます。

A条件を使わずに直接コマンドで記述する方法
 書き出し 表,<表名称>,{<項目名リスト>}
の様な形で、直接記述する方法です。どちらかと言えば、玄人っぽい方法です。
この方法は、コマンドを読んだだけで、実行される中身の判断ができます。
その後の会話処理で条件名がどう変更されようと、関係しません。
その代わり、条件が登録されないので、会話処理でその条件を利用する事はできません。
コマンドを作るのが面倒に見えますが、実は裏技があります。まず履歴で
 書き出し条件登録 <同じ条件名>
 書き出し 条件名=<その条件名>
のコマンドを作り出し、1行目の登録する条件の内容の記述を、2行目の
コマンドの「条件名=・・・」の部分にコピーしてしまえばほとんどでき上がりです。

後は、長い記述のコマンドは適当な位置で折り返して記述しておくと、その後で
コマンドの内容確認が楽になります。これも何となく玄人風の作りに感じます。

佐田守弘(KS-00119)
13356 一部訂正 佐田 守弘 2001/10/04-02:38
記事番号13355へのコメント
前コメントで、
>この表が基本状態の時には問題ないのですが、並べ替えや絞り込み状態であると
>エラーになります。
と書きましたが、おそらくこのケースの場合には、仮に並べ替えをしてあっても大丈夫だろうと思います。

しかし別のケースで駄目な場合もあります。
それはメイン&サブフォームで同じイベントを共有し、かつ、イベントのメイン部分で表を開こうとする場合です。
メインフォームが開かれてイベントにより表を開いて並べ替えなどを行った後、
サブフォームが同じイベントを実行しようとして同じ表を開こうとするため、エラーになります。
単に表を基本状態で開いただけの時には、何もエラーにならないため、原因の究明に手間取った経験があります。

佐田守弘(KS-00119)

13357 Re:履歴から作るイベント 尾形 2001/10/04-08:52
記事番号13355へのコメント
どうも、佐田さん。

>正しくは、「編集表」コマンドを使って編集対象表を指定して下さい。
>しかしながらこのコマンドでは、表名を指定する事ができず、表番号で指定する
>必要があります。
>このために前述の様に「#is表」関数を使って、表番号を調べておく必要が出て
>きます。

編集表 "集金・経過金額統合表"
のような記述もできます

表名で指定する方が簡単とも思います
当然、そうでない場合もありますが。

13358 Re:表操作でのイベントで教えてください 尾形 2001/10/04-09:02
記事番号13344へのコメント
どうも、今村さん。

>編集中の表は閉じられないので次の表に切り替えたあとに
これはどうなんでしょうか?


手続き定義開始 今月入力準備()
表 "ほ集金経過予定金額"
行削除 *,圧縮
読み込み 表,条件名="ほ集金経過金額"
終了 表 編集対象表
表 "集金・経過金額統合表"
行削除 *,圧縮
読み込み 表,条件名="今月準備"
終了 表 編集対象表
手続き定義終了

こんな感じでいいのでは



13368 行削除 * 圧縮について 藤野 2001/10/04-19:20
記事番号13350へのコメント
今村サンこんばんは、お世話様です

>行削除 *
>がありますが、見かけ上見えませんが、表のファイルサイズは、
>上記に関係なく毎月大きくなります。
>圧縮でダイエットするか、枠組み書き出しをおすすめします。

上記のようなことははじめて知りました、早速実行します。
履歴を加工しながら一括とイベントを勉強していきますので
また宜しくお願いします。


13369 ありがとうございます 藤野 2001/10/04-19:27
記事番号13358へのコメント

尾形さん有難う御座います。

 このあと早速書換えて確認します。イベントや一括がだんだんおもいどおりに動き出したので、楽しくなっています。
それと同時にまたいろいろな問題が生じてますが、めげずにやっています。
今後ともよろしくおねがいします。
13370 &履歴変数についておたずねします 藤野 2001/10/04-19:44
記事番号13355へのコメント

佐田先生、尾形さんご教授有難う御座います。
 コメントをプリントアウトして再度トライしてみます。
 履歴の加工から一括、イベントへ挑戦したいと思います

 ◎ 二つほど質問ですが、履歴を作ると
   @ 代入 &履歴変数=#IS表
     というのが書いてあります。
     この部分の&履歴変数と言う部分を&○表=#IS
     と書換えて表番号を取得してもいいのでしょうか?
     これだと、履歴をそのまま加工できるのですが。

   A 使用フォームについて
     
     変数宣言 整数{&履歴変数}
     使用フォーム
 
     と表を切り替えるたびにかかれていますが、使用フォーム
     の部分を削除しても動いているので、イベントからは
     消していますがこれは消しても支障がない部分なのでしょうか
  以上、おしえていただければ幸いです。
よろしくおねがいします。
13376 Re:終了 表について 今村 誠 2001/10/05-01:14
記事番号13358へのコメント
尾形さんこんばんは

>>編集中の表は閉じられないので次の表に切り替えたあとに
>これはどうなんでしょうか?

今日これと似たようなイベントを手直ししました。
画面伝票をm&sに変換するために、4つのファイルを枠組み書き出したり
読み込んだり、置換などいろいろしているのですが、これを作ったときは、
イベント初心者で、桐から何度もしかられたので、終了 表 のコマンドは
すべてコメントに変えました。(^_^)

今回のコメントの検証をしようと開けたファイルを表操作したあと
終了 表 &hyo2
のような感じで閉じたところ桐からはおしかり受けずに終了できました。
尾形さんのご指摘の通りに、順番に閉じることができました。
ありがとうございました、


13464 お世話様でした 藤野 2001/10/13-05:58
記事番号13342へのコメント
皆さん、ご教授有難う御座いました。
 おかげで、目的の処理ができました、以前の擬似挿入とあわせて使用しています。
 ひとつ作るたびに、疑問が湧きだします、今度は変数を勉強しようと思います、ご指導宜しくお願いします。
 

戻る