過去の桐井戸端BBS (桐ver.8)
15868 繰り返し、絞り込みの一括処理でエラーとなりますがどこがおかしいのでしょうか BigBoy 2002/05/01-18:30
初めて書き込みします。
よろしくご指導ください。
繰り返し・絞り込みで質問します。
---------------------------------------------------------------------
1 表    "入荷"
2 置換   [区分]="入荷"
3 書き出し 表,"入荷作業"
4 ジャンプ 行番号=先頭
5 繰り返し
6   絞り込み 行数=1
7  書き出し 表,"入荷作業"
8 表  "入荷作業",表番号=1
9 &区分=[区分]
10 &年1=[年]
11 &月1=[月]
12 &日1=[日]
13 &かな=[かな]
14 &仕入先名=[仕入先名]
15 &分類C=[分類C]
16 &分類名=[分類名]
17 &車名=[車名]
18 &車種区分=[車種区分]
19 &車体番号=[車体番号]
20 &年式=[年式]
21 &色=[色]
22 &数量=[数量]
23 表  "パーツ",表番号=2
24 並べ替え {[PC]昇順}
25 絞り込み [車種区分]&車種区分
26 編集表 1
27 読み込み 表,"パーツ",{[パーツ]}
28 終了 表 2
29 編集表 1
30 置換 [区分]=&区分
31 置換 [年]=&年1
32 置換 [月]=&月1
33 置換 [日]=&日1
34 置換 [かな]=&かな
35 置換 [仕入先名]=&仕入先名
36 置換 [分類C]=&分類C
37 置換 [分類名]=&分類名
38 置換 [車名]=&車名
39 置換 [車種区分]&車種区分
40 置換 [車体番号]=&車体番号
41 置換 [年式]=&年式
42 置換 [色]=&色
43 置換 [数量]=&数量
44 終了 表 1 
45 表  "入荷"
46 行番号=次行
47繰り返し終了
---------------------------------------------------------------------
8行目で表 "入荷作業"は開いています。
というエラーが出ます。
44行目で表 "入荷作業"は終了しているはずなのですが。
よろしくご指導ください。

15870 Re:絞り込み だるま 2002/05/01-19:37
記事番号15868へのコメント
 BigBoyさん、若輩ながら、一言。
 的を外しているかもしれません。(^^ゞ

>45 表  "入荷"

 上記記述が、閉じた形跡が無いのにエラーにならないのでしたら

>1 表    "入荷"

 これは、表番号が1になっているかもしれません。

・表番号 = <整数>
 このパラメータを省略した場合は、使用されていない表番号の中で、もっとも小さい番号を割り当てます。

 とマニュアルには書いてありました。

 しかし自信は有りません。(^^ゞ
 申し訳御座いません。<m(__)m>
15871 Re:絞り込み KH 2002/05/01-19:45
記事番号15868へのコメント
BigBoyさん、こんばんわ。

 私は複数の表を同時に開いても表番号を指定したことはないの解らないでコメントしますことをお許しください。

 最初に開いた表"入荷"は閉じているように見えませんが、
繰り返しの中45で表"入荷"をまた実行していてエラーになりそうですがならないのですね。

 最初に"入荷"を開いていますが、これは自動的に表番号1として桐側で開いている可能性はありませんか?
その後、"入荷作業"を表番号1で開いているとすれば、"入荷"は自動的に表番号が別番号(?)になるのでしょうか。
桐側で"入荷"を閉じている可能性はありませんか。

 表番号をつけたりつけなかったりしないで、すべてに表番号を付けてみるか、
逆に表番号をとって桐側に任せるかしてみて実行してみたらどうでしょう。


15872 Re:絞り込み 悲しげ 2002/05/01-19:47
記事番号15868へのコメント
どもっ、BigBoyさん
質問するためにかなり書き換えているためかと思われますが、このままだと幾つか不具合がでると思います。
ひとつは、1行目で開いた表の表番号を指定していないため、
もし"入荷.tbl"に表番号=1が割り当てられていたら、8行目で「表は開いています」ではなく
「表番号1は使用中です」のエラーが出るのではないでしょうか?
あと、45行目では、閉じていない表である"入荷.tbl"を再度開こうとしていますが、
桐ver8ではここでも「表は既に開いています」のエラーは出ないと思います。
ただ、45行目は念のため
  編集表 "入荷.tbl"
とするか、あるいは1行目で例えば表番号=3を割り当てておいて
  編集表 3
とでもした方が無難かと思います。
あと、気が付いた矛盾点は、46行目の記述は本当は
  ジャンプ 行番号=次行
ではないかと思いますが、しかしながら6行目で1行だけ絞り込んだ後、
絞り込み解除をしていないので、次行へは行きようがないだろうとか、
その上さらにこの繰り返しループを抜けるための記述も漏れていますから、
二重に無限ループとなりそうだとか。(^^;)
総じて意図を読み取ることが難しくなっています。
もう一度、オリジナルの記述と投稿文を比べてみて下さい。
15875 Re:絞り込み だるま 2002/05/01-20:59
記事番号15872へのコメント
 悲しげさん、お久しぶりです。m(__)m
 また、サスガです。感服です。

>あと、45行目では、閉じていない表である"入荷.tbl"を再度開こう
>としていますが、桐ver8ではここでも「表は既に開いています」の
>エラーは出ないと思います。ただ、45行目は念のため

 エラーにならないのですね。(^^ゞ
 知りませんでした。(;^_^A アセアセ…
15879 Re:頭がパニックに!! BigBoy 2002/05/01-23:29
記事番号15868へのコメント
みなさん、早々にご指導いただきありがとうございました。
色々と考えていると頭の中が・・・・・!
よろしくご指導ください。

車の廃車在庫管理です。(スクラップ在庫です。)

入荷処理で、廃車が入荷処理をするのですが、
入荷した車には、いろいろな部品が存在します。

そこで車に対して
2枚ドア車・3枚ドア車・4枚ドア車といった区分をつくります。
パーツ台帳に、区分ごとのパーツを入力しておきます。

入荷データを保存する段階で
自動的にパーツを登録するようにしたのが
最初の書き込みなんです。

みなさんのご指導で、表はクリアーできたのですが
肝心の、パーツの登録が出来ません。
いつまでたっても
入荷台帳は1台だけなのです。
よろしくご指導ください。
15880 Re:Re:頭がパニックに!! pokopon 2002/05/01-23:48
記事番号15879へのコメント
BigBoyさん こんにちは

>みなさんのご指導で、表はクリアーできたのですが

いったい、どこが問題点で、どうしたら解決できたのでしょうか?
「解決しました」だけでは、みなさんが分かりませんネ (^^ゞ


>肝心の、パーツの登録が出来ません。
>いつまでたっても
>入荷台帳は1台だけなのです。

悲しげさんがヒントを出しているかと思います。
もう少し、支障のない範囲でオリジナル版のソースを提示していただければ、
皆さんで確実な原因を探れるのでは?
>6 絞り込み 行数=1
>25 絞り込み [車種区分]&車種区分
>46 行番号=次行
なんてコマンドが「どの表に対するアクション」なのかが、よく見えません。

15884 一括処理の書き方と表コマンド 佐田 守弘 2002/05/02-01:00
記事番号15868へのコメント
BigBoyさん
一括処理をざっと見たところ、悲しげさんが指摘されている通り、
繰り返しの中で終了表を行わずに表コマンドを繰り返している事が原因かと思います。

●表コマンドの繰り返し
既に開かれている表に対して、表コマンドを繰り返し実行した場合についてコメントしておきます。
単に、
 表 入荷
を繰り返しても、実はエラーになりません。開かれている表に対して
このコマンドを実行した場合、「編集表 入荷」と同じ結果になる様です。

しかし、「表 入荷 表番号=1」だとエラーになる場合が有ります。
これは最初に開いた時に表番号が1でなかった場合です。
また、使用索引を指定して表コマンドを繰り返すと、やはりエラーになります。

繰り返しの中に表コマンドを入れる場合には繰り返しが終わる前に、
「終了 表」コマンドで表を閉じるのが原則です。そうでない場合には、
繰り返しの前に表を開いておき、繰り返しが終わってから表を閉じて下さい。

●一括処理には適切なインデントを付けて下さい。
インデントは飾りではありません。
・繰り返しと繰り返し終了
・ケース開始とケース終了
・表と 終了 表
など、対応するコマンドどうしが、どことどこで対応させているのかを
ビジブルに表示するためのものです。
定規を宛てて、対応するコマンドを確認できるようにして下さい。
そうでないと、どこからどこまでが繰り返しなのか、開いた表はどこで
終了させているのかが、視覚的に判断できません。

御自身だけで使うなら、どの様に書いても構わないのですが、
特に第三者に見てもらう場合には、適切なインデントを付けてないと、
理解できませんし、見誤る場合もあります。

●置換コマンドの書き方
30行からの置換コマンドですが、決して間違いではないのですが。

より好ましくは、3つ下のコメントツリーに書いておいた
「一括処理は書き方で処理速度が大幅に違います。」No.15881
を参考にして下さい。
おそらく役に立つ記述だと思います。

佐田守弘(KS-00119)


15889 Re:絞り込み 2002/05/02-08:20
記事番号15868へのコメント
久しぶりに書きコします。
表を開くエラーは解決したもようですね。
最近良く似た処理(1レコードごと)をやりましたが、悲しげ 様が指摘している
ように絞り込み解除後には、先頭行になってしまい次行では2レコードまでしか処理しないのでは?
「絞り込み」せず「置換」をやめて「行訂正」にしたほうが良いのではないでしょうか。
後、処理をみていると、すべての項目を変数に書き出して、再書き込みをしているように見えますが、
「書き出し」と「併合」で充分ではないでしょうか。

外していたら、すいません。


戻る