過去の桐井戸端BBS (桐ver.9)
18830 伝票入力のフォームで伝票番号を登録するボタンを作ったのだがうまくいかない yuta 2003/02/05-12:42
yutaです。
伝票入力について質問します。
伝票フォームで仕入入力.wfmを作りました。
伝票番号は、伝票番号登録のコマンドボタンで下記のイベントで処理させています。
コマンドボタンは
確定
手続き実行 伝票番号登録
-----------------------------------------------------------------
手続き定義開始 伝票番号登録()
  &区分="仕入"
  &年1=[年]
  &月1=[月]
  &日1=[日]
  &仕入先名=[仕入先名]
  表  伝票番号.tbl,モード=共有更新
  並べ替え {[伝票番号]昇順}
  ジャンプ 行番号=最終
  行追加 [年]=&年1,[月]=&月1,[日]=&日1,[仕入先名]=&仕入先名,[区
分]=&区分
  ジャンプ 行番号=最終
  &伝票番号1=[伝票番号]
  終了 表 編集対照表
  グループ値訂正 {[伝票番号]=&伝票番号1}
手続き定義終了
------------------------------------------------------------------
これでうまく伝票番号は振れるのですが、
仮に再度まちがってこのボタンを押した場合、伝票番号が次の番号になってしまします。
それで、下記のような形にしたのですが
------------------------------------------------------------------
手続き定義開始 確定()
ケース開始
 ケース([伝票番号]<>"")
  &区分=[区分]
 ケース([伝票番号]="")
  &区分="仕入"
  &年1=[年]
  &月1=[月]
  &日1=[日]
  &仕入先名=[仕入先名]
  表  &伝番,モード=共有更新
  並べ替え {[伝票番号]昇順}
  ジャンプ 行番号=最終
  行追加 [年]=&年1,[月]=&月1,[日]=&日1,[仕入先名]=&仕入先名,[区
分]=&区分
  ジャンプ 行番号=最終
  &伝票番号1=[伝票番号]
  終了 表 編集対照表
  グループ値訂正 {[伝票番号]=&伝票番号1}
ケース終了
手続き定義終了
-------------------------------------------------------------------
ところが伝票番号が振れなくなってしまいました。
原因がわからないのですが、どなたかご指導ください。

18833 Re:伝票番号 悲しげ 2003/02/05-15:13
記事番号18830へのコメント
どもっ、yutaさん
伝票番号.tblにおいて、単に行追加しただけで[伝票番号]に値を入れていないのは、
もしかしてこの項目は計算項目なのでしょうか?
もし計算項目でないとしたら、この部分は例えば次のように記述する必要があるかもしれません。
  表  伝票番号.tbl,モード=共有更新
  並べ替え {[伝票番号]昇順}
  ジャンプ 行番号=最終
  &伝票番号=[伝票番号]+1
  行追加 [年]=&年1,・・・・,[伝票番号]=&伝票番号

あるいは、計算項目だとしても、最終行へのジャンプ2回は不要だと思います。
「行追加」は、直前の処理対象行がどこにあろうとも、終端行に行追加されますから。
  表  伝票番号.tbl,モード=共有更新
  並べ替え {[伝票番号]昇順}
  行追加 [年]=&年1,[月]=&月1,・・・・・
  ジャンプ 行番号=最終
  &伝票番号1=[伝票番号]



さて、本題。

>ところが伝票番号が振れなくなってしまいました。

「伝票番号が振れなくなっ」たと、具体的にどういうことか、イマイチ不明なれど、全てのケースにおいて

>ケース開始
> ケース([伝票番号]<>"")
>  &区分=[区分]

にしか行かないのだと想像してみることにします。
とすれば、これは伝番.tbl上ではなく、元表においての事態ですよね。
どのようにやっているのかも不明ながら、新規伝票の場合でも、
元表の処理対象行が既存データ上(即ち伝番項目に値が入っている行)にあるからではないでしょうか?
新規伝票の場合は、元表の処理対象行を終端行に移してから実行させるようにするか、
あるいは新規伝票であるか否かの判断を別な要素に求めるとか。
18834 Re:伝票番号 悲しげ 2003/02/05-15:37
記事番号18830へのコメント
>仮に再度まちがってこのボタンを押した場合、
>伝票番号が次の番号になってしまします。

伝番を振るのは、おそらくは新規伝票に限ると思います。
とすれば、新規伝票作成の処理と伝票番号登録の処理を並列に置いていること自体がまずいと云うことになりませんか?
つまり、伝票番号登録は、新規伝票作成処理の中のひとつの構成要素として作っておけば
「再度まちがってこのボタンを押」すことはあり得ない。
例えば、ボタンは新規伝票登録の類に代表させて、伝票番号登録のボタンは設けない(だから押せない)。
こうすれば、[伝票番号]項目値がヌルか否かで判断する必要もなく、
新規伝票を作成するか否かの入力者の意思だけに規定されますから、最も簡単・確実な気がします。

戻る