過去の桐井戸端BBS (桐ver.9)
22438 挿入初期値式を設定しても行を追加した時に表示されません おとうむ 2003/09/21-18:18
初めて投稿させていただきます。
桐ver9を使って作業しています。
はがきの印刷料金を計算するシステムを作ろうと思っているのですが、
印刷基本料金を「項目計算式」で計算すると、
イレギュラーな料金になった場合に手作業で編集できないので困ると思い、
過去のBBSなどを参考にさせていただいて

「挿入初期値式」と「編集初期値式」に計算式を設定したのですが、
新しく行を追加して必要事項を入力しても、料金が表示されません。
カーソルを持っていって、訂正モードにすると表示されるのですが、
いちいち訂正していかなければならないのは大変だと思い、
投稿させていただきました。
訂正モードにしないと表示されないという事は、「編集初期値式」が有効だという事かな
と勝手に思ったのですが、なぜ「挿入初期値式」がうまく行かないのか、わかりません。

計算式には表引きを使って、

#条件選択( [印刷枚数]=100 , #表引き( [価格記号] , = , "価格.tbl" , [価格記号],[100枚]),[印刷枚数]<100,#表引き2( [価格記号] , = , "価格.tbl" , 1 , #切り上げ( [印刷枚数]/10+1 , 0 ) ),[印刷枚数]>100 , #表引き( [価格記号] , = , "価格.tbl" , [価格記号],[100枚])+#表引き([価格記号] , = , "価格.tbl" , [価格記号],[100枚以上10枚毎])×#切り上げ( ([印刷枚数]-100)÷10 , 0 ))

としています。

すごく初歩的な間違いをしているかもしれませんが
どうかご意見をよろしくお願いします。
22439 Re:挿入初期値式を設定しても行を追加した時に表示されません 悲しげ 2003/09/21-18:51
記事番号22438へのコメント
どもっ、おとうむさん
挿入初期値と云うのは、どんな時でも常にその値を初期値とするような場合に設定するのではないでしょうか?
本件の場合、行挿入した直後は、[印刷枚数]も[価格記号]も全て空であって
(入力前だから当然そうなります)、そのヌル値でもって表引き等の計算が行われるから、
挿入初期値もまたそれを忠実に反映していることになります。

かと云って、

>カーソルを持っていって、訂正モードにすると表示されるのですが、
>いちいち訂正していかなければならないのは大変だと思い、

に関するうまい対策を提起できる訳ではありません。(^^;)
もし、一括処理(またはイベント)を使うのなら、

  行追加 [印刷枚数]=○○,[価格記号]="××",・・・・・

のように行挿入と値の入力を同時に行うことで可能かもしれませんが、でも
どうせ一括処理コマンドを使うのなら、当該項目も一括処理で計算させた値を入力した上で、
必要に応じて訂正させる方が(計算項目ではないので)スマートかもしれません。


22440 Re:挿入初期値式を設定しても行を追加した時に表示されません おとうむ 2003/09/21-20:15
記事番号22439へのコメント
悲しげさん、早速のお返事ありがとうございました。
そういう訳だったのですね・・・。ありがとうございます。
という事は、やはり一括処理とかで実行するしかないんでしょうか・・・。

恥ずかしながら、一括処理というものを作った事がないのですが、

>>カーソルを持っていって、訂正モードにすると表示されるのですが、
>>いちいち訂正していかなければならないのは大変だと思い、

↑を、なんとか一括でできないかと思い、

変数宣言 整数{&OK,&Key}
表 顧客管理.TBL, 終了状態=&OK
ジャンプ 行番号=先頭
繰り返し
if(#eof)
 繰り返し中止
end
行訂正 表, [印刷基本料金], 終了キー=&Key , 終了状態=&OK
ジャンプ 行番号=次行
繰り返し終了

というような処理をなんとか書いてみたのですが、
一行目は訂正状態になって料金が表示されるのですが、次の行へ移動しません。
ENTERキーを手で押すと次の行へ進むのですが、
これでは一括処理の意味がない・・・

最終的には、悲しげさんがおっしゃるように、CSVデータを取り込む所から、
印刷料金を計算させるところまでを一括処理でやろうと思うのですが、
一括処理でもつまずいていていっこうに進みません・・・。
上の処理の記述はどこがおかしいんでしょうか???
すみません、質問ばかりで・・・よきアドバイスをどうかお願い致します。
22442 Re:挿入初期値式を設定しても行を追加した時に表示されません 悲しげ 2003/09/21-21:39
記事番号22440へのコメント
おとうむさん wrote

>CSVデータを取り込む所から、印刷料金を計算させるところまでを

と云うことは、1行づつ入力するのではなくcsvデータとして全行を読み込んでそれから・・・ってことなのであれば、
一括処理を使わないまでも

方法その1(編集初期値式を利用)
カーソル移動方向を↓にして、 [印刷基本料金]にフォーカスを置いてから[f2]キーで訂正モードにして、
後は[Enter]キーを押しっぱなしにする。
こうすると、縦にスススーッと進む過程で編集初期値式の結果が出てくる筈です。(当該項目値がヌルであることが前提)

方法その2(編集初期値式を設定しない)
初期値式に使った計算式を置換で実行させる。
一括処理でもできますが、置換の「条件名」で登録しておくこともできます。

普通は後者を使うでしょうね。(^^;)

22443 Re:挿入初期値式を設定しても行を追加した時に表示されません おとうむ 2003/09/21-21:58
記事番号22442へのコメント
悲しげさん、ありがとうございます!!!
その2の方法でできました!!

>方法その2(編集初期値式を設定しない)
>初期値式に使った計算式を置換で実行させる。
>一括処理でもできますが、置換の「条件名」で登録しておくことも
>できます。
>
>普通は後者を使うでしょうね。(^^;)
>


こんなに簡単にできる事だったなんて・・・恥ずかしいですが、
感無量です。本当にありがとうございました。
まだまだこれからも頑張って勉強します。


22444 #行挿入が使えるかも? toshi-chan 2003/09/21-23:34
記事番号22438へのコメント
おとうむさん、こんばんは。
すでに解決したようですが、別の視点からアイデアを述べます。

#行挿入  という関数をご存じでしょうか。これは、今、行挿入もしくは行追加の状態であるかどうかを調べる関数です。

私も以前おとうむさんのような状況に直面して悩んだことがあります。
こんな状態を解決してくれるのが、 #行挿入 です。
これは編集初期値の機能をフルに発揮するために、桐ver5から装備された関数です。

おとうむさんの投稿をザッと眺めただけでの直感ですが、試してみてはいかがでしょうか。
22485 Re:#行挿入が使えるかも? おとうむ 2003/09/25-22:33
記事番号22444へのコメント
お返事が遅くなってすみません、toshi-chanさんアイデアをありがとうございました!
早速やってみたのですが、やっぱり料金が表示されませんでした・・・。
自分のやり方がまずいのかもしれないのですが、
行挿入状態なら計算を実行、、、という式にしてみたんですけれどもだめでした・・・。
せっかくアドバイスをいただいたのに実行できずにすみません、
また何かありましたらよろしくお願いいたします!

戻る