過去の桐井戸端BBS (桐ver.7)
422 伝番取得 Kiriboy 1998/10/4-13:34
売上管理の一括処理を桐v7で作っております。

表は uriage・売上台帳・伝票番号.tblです。
uriage.tblで、入力したデータは、売上台帳へ転送して保存されます。
そこで、uriage.tblに新規の伝票を入力する時に、売上台帳の最終の伝番に+1で自動的に伝票番号の項目に表示する方法はないでしょうか?
423 Re: はまだ 1998/10/5-12:34
記事番号422へのコメント
私自身は桐V7でシステムを組んでいないのでハズシたらすみませんが、通常桐V5までの最終伝票番号の取得の仕方を参考にしていただけないでしょうか。
桐V7でしたらコマンドボタン・新規入力を作り機能名、一括処理に戻るとされると思いますが、その一括処理の記述に伝票番号.TBLを開く記述とともに以下の記述をされたらどうでしょうか。

*1
代入 &最終伝票番号=[最終伝票番号]
代入 &採取伝票番号=&最終伝票番号+1
行訂正 [最終伝票番号]=&最終伝票番号
終了 表 編集対照表

*2
編集表 ”uriage”
行訂正 [伝票番号]=&最終伝票番号

上記の記述は基本形です。たとえば新規入力でESCで取りやめる場合やLAN環境では前後にいろいろと複雑な処理を記述をする必要がありますが.....
424 Re: Kiriboy 1998/10/5-17:09
記事番号423へのコメント
どうもありがとうございました。
はまださん、変数で代入するのではなく、uriage.tblの伝票番号の項目に、#条件選択 または、#表引きをつかって、伝票番号を挿入する方法はないでしょうか?
よろしくおねがいします。
425 Re: はまだ 1998/10/5-17:56
記事番号424へのコメント
そういう場合は置換コマンドを使います。

置換 [伝票番号]=(表引き式)+1

ただし、伝票番号.tblの最終伝票番号も+1の値で書き換えることをお忘れなく。
私の場合は、顧客別の最終伝票番号の値を得る場合以外は表引き関数をつかいません。
なぜらな、こまかな処理で最終番号の値を隋所に割当なければならなくなってきますのでいずれにせよ、一旦変数に格納します。
また、LAN環境で最終番号を得る場合、表引きで値を得るのは不可です。
番号の重複が発生します。 
431 伝票番号取得 Kiriboy 1998/10/13-20:22
みなさん助けてください。
桐v7を使っています。
売上管理を作っています。
URIAGE.WFMにコマンドボタンを張り付け「売上入力」をつくりました。
最初は機能名にグループ追加を選んでいましたが、伝票番号が取得できず一括処理のファイルを指定しましたが、その売上入力.cmdがうまく動きません。
この一括処理は伝票番号を取得し行追加するように考えました。

変数宣言  固有,数値,{&伝番}

名札 売上入力

  表
  表   ”伝番”
  代入  &伝番=[伝番]
       &伝番=[伝番]+1

名札 売上入力2

  表  ”売上.tbl”,モード=専有,使用フォーム=”売上.wfm”
  項目集計  (&伝番<&最大値)代入 &伝番=&最大値
  条件  (&伝番=[伝番]+1
  行追加  フォーム

と、しました。
どなたか、この一括処理のどこにバグがあるか宜しくご指導下さい。
432 Re: 悲しげ 1998/10/13-23:12
記事番号431へのコメント
どもっ、Kiriboyさん

桐v7でこのような処理を試したことはありませんが、v5と同じ扱いが生きるという
前提でコメントします。

>  表
>  表   ”伝番”
>  代入  &伝番=[伝番]
>      &伝番=[伝番]+1

ここは、前回終了時の最終伝番を保存してあるのだと思うのですが、バグではありませんが、私なら次のようにこう書きます。
表が空であった場合とか、[伝番]値が未定義だった場合には、&伝番も未定義になる可能性がありますから、その辺りの対策も考えておく必要がありそうです。

 表 "伝番"
 ケース開始
  ケース(#空ファイル)
   &伝番=1
  ケース その他
   ジャンプ 行番号=1
   &伝番=#未定義値変換([伝番],0)+1
 ケース終了  

>  表  ”売上.tbl”,モード=専有,使用フォーム=”売上.wfm”
>  項目集計  (&伝番<&最大値)代入 &伝番=&最大値
>  条件  (&伝番=[伝番]+1
>  行追加  フォーム

ここは、改行がぐちゃぐちゃですね。(^^;)
アップ時に変になったのだと思いますが、一応、書き換えてみます。

 項目集計 [伝番]
 条件(&伝番<&最大値) &伝番=&最大値+1

この時も同様に、表が空だった場合の対策が必要です。その場合に、変数&最大値の値がどうなるか、検討してみて下さい。ひょっとして、環境設定の未定義の扱いに依存するかもしれません(未確認)。
今ざっと考えたところでは、

 項目集計 [伝番]
 &伝番=#条件選択(&最大値<1 .or &伝番>&最大値,&伝番,1,&最大値+1)

なんてのはどうでしょう?
ただ、オンラインのなぐり書きなので、間違っていたらごめんなさい。
434 Re: はまだ 1998/10/14-07:35
記事番号431へのコメント
>変数宣言  固有,数値,{&伝番}
>
>名札 売上入力
>
>  表
>  表   ”伝番”
>  代入  &伝番=[伝番]
>       &伝番=[伝番]+1

まず、上の最終行でとまらなかったでしょうか。

 &伝番=[伝番]+1−−>&伝番=&伝番+1
            行訂正 [伝番]=&伝番

としてみたらどうでしょうか。
伝番.TBLの[伝番]項目は最新値に1+されます。

>名札 売上入力2
>
>  表  ”売上.tbl”,モード=専有,使用フォーム=”売上.wfm”
>  項目集計  (&伝番<&最大値)代入 &伝番=&最大値
>  条件  (&伝番=[伝番]+1
>  行追加  フォーム
>

私としては2行目は不要だとおもいますが、ためしに2行目をはぶき3行目を
 行追加 [伝番]=&伝番,[]....としてみてください。
あとは、どうゆう形でデータ行を追加していくかわかりましたら私の方でも試しに同環境で一括処理を組んでみたいとおもいますので、よければTBL構造、フォーム構造、動作などを詳しくおしえていただけないでしょうか。
436 Re: Kiriboy 1998/10/14-18:37
記事番号434へのコメント

はまださん、ご指導頂きいつもありがとうございます。
頭の中がパニックになってしまいました。うまくうごきません。
売上のフォームで売上入力処理のコマンドボタンに一括処理を張り付けて動かそうとしているのです。
明細追加・訂正等の処理は機能名に普通の処理をしていしています。
売上入力のみ、伝票番号取得にために一括で動かそうとしているのです。
なぜか、行追加 フォームで一括処理はエラーに!
エラーはグループ項目は指定できません!
見出しは 年・月・日・伝番・得意コード・得意先名です
明細は 品c・品名・数量・単価・金額・備考です。
よろしくご指導ください
437 Re: はまだ 1998/10/15-07:48
記事番号436へのコメント

桐V5でいう伝票形式フォームをお使いでね、行追加コマンドは桐の仕様でグループ項目を指定できません。
桐V7でも同じだと思います。
そこでどうしているかといいますと、まず、グループ値項目と明細項目との区別をはっきりと把握してください。

1、一旦、グループ選択解除コマンドをいれ、行追加でグループ値項目を書換えます。

  グループ選択解除
  整列解除
  行追加 [伝番]=&伝番,[年]=....
  *行追加コマンドで先に取得している最終の伝番や組込み変数から今日の日付などをいれていきます。(自動で書き込まれる項目のみ)

2、そして、再度グループを選択してグループ値訂正コマンドで[得意先コード]を入力していきます。

  グループ選択
  グループ値訂正 帳票,終了状態=&終了
  繰り返し
   行訂正 帳票...
  繰り返し
  *繰り返しコマンド内で明細項目を入力していく。2の部分はここでは書ききれないほど複雑になります。

今、自宅のマシンがトラブル中でV7での検証ができませんが、行追加コマンドをグループ値項目では使用できないことだけでもお知らせしたいと思います。
参考書籍としてうらさんの「桐V4販売管理」の売上入力の項を参考にされたらどうでしょうか。

戻る