過去の桐井戸端BBS (桐ver.8)
17160 共有で使うシステムから伝票番号を登録するにはどうしたらよいのでしょうか 貴代 2002/08/31-22:09
みなさんこんばんは、はじめて書き込みさせていただきます。
よろしくご指導ください。

社長の命令で販売管理の自社システムをつくっています。

このシステムは販売課全員のパソコンで使用するため
共有で使えるようにしなければいけないのですが
そこで、伝票番号ですが
現在は、入力が確定してから、確定のコマンドボタンで
伝票番号を管理台帳に登録するようにしています。

しかし、これでは、共有で使うには少々問題が発生するようです。
確定ボタンを押さない限り、新しい伝票番号が登録されません。

そこで、入力が始まったら伝票番号を登録するようにしようと思っているのですが
どうやってすればいいのでしょうか?

よろしくご指導ください。

17162 Re:共有で伝票番号 KH 2002/08/31-22:38
記事番号17160へのコメント
>しかし、これでは、共有で使うには少々問題が発生するようです。
>確定ボタンを押さない限り、新しい伝票番号が登録されません。

どんな問題が起きるのですか?
同じ伝票番号を同時に入力する事は考えられないですが。

>そこで、入力が始まったら伝票番号を登録するようにしようと思っているのですが
>どうやってすればいいのでしょうか?

もし入力が始まって、すぐ登録することが出来るようになった場合、
途中で入力をキャンセルしたい場合どうするのか疑問が湧くのですが。

17163 Re:共有で伝票番号 貴代 2002/08/31-23:49
記事番号17162へのコメント
KHさん、はじめまして。

私が今考えているのは、

売上.wfmで、
このフォームを開くときに、伝票.tblの最終伝票番号が&伝票番号に代入されます。

コマンドボタン[新規入力]で新しいグループ追加を行います。
項目[伝票番号]には挿入初期値に&伝票番号+1となっています。
伝票入力が開始されます。
この伝票入力が終了すると、
コマンドボタン[確定]を押します。
このボタンで、&伝票番号が新しい伝票番号になります。
このボタンが押されるまでは、&伝票番号は入力前の伝票番号なのです。

複数のPCで同時に使った場合、同じ伝票番号が発生するわけです。
17164 Re:共有で伝票番号 KH 2002/09/01-06:53
記事番号17163へのコメント
貴代さん、おはようございます。

>項目[伝票番号]には挿入初期値に&伝票番号+1となっています。
>・・・
>複数のPCで同時に使った場合、同じ伝票番号が発生するわけです。

 素朴に疑問が湧き、門外漢なのにコメントして申し訳ありません。
パソコンの方で伝票番号決定することがよく理解できません。
元になる伝票の番号は先に決定していなければ
(入力前の伝票そのものに番号が振ってある事が原則)ならないと思うのですがどうでしょう。
もし、表の構造を変更を余儀なくされた時、再定義した場合、
伝票番号は変わってしまうことがあると思うのですが・・・。
誤入力があった場合、元の伝票と照合やチェックする必要があった場合は
CPに番号を決めさせた場合どのように確認するのでしょう・・・。

 プログラムを考える前の素朴な疑問です。門外漢なのに疑問ばかりで済みません。
17165 Re:共有で伝票番号 KH 2002/09/01-07:00
記事番号17164へのコメント
補足ですが、


>このフォームを開くときに、伝票.tblの最終伝票番号が&伝票番号に代入されます。

 単なる整理番号的なものなら、代入されないようにしておけば問題ありませんが
そうでもないようですので。
17172 Re:共有で伝票番号 佐田 守弘 2002/09/01-14:35
記事番号17160へのコメント
貴代さん
状況をきちんと理解している訳ではないのですが、分かる範囲でコメントします。
●伝票番号
質問やその後の書き込みから見ると、伝票番号は複数人が共有で、
順次連番号を自動発行していると考えてよいですね。この前提で話を進めます。

●伝票番号のデータ型
カウンタ型を使って下さい。
カウンタ型であれば、常に新規の番号が自動発行されます。

●伝票番号の確定
桐の場合には、レコードの入力を終了しないと、カウンタ型の値が確定しません。
そこで、フォーム上で新規入力を行う場合、
行追加を行って新規行を追加した後、一度表示モードに戻して見ては
どうでしょうか。
表示モードに戻すには、
 メソッド呼び出し @フォーム.更新モード設定(0)
で行います。そして次いで、もう一度行訂正モードに入れば、伝票番号が
確定した画面になるはずです。
行訂正モードに戻すには、次のコマンドを使います。
 メソッド呼び出し @フォーム.更新モード設定(2)

佐田守弘(KS-00119)
17174 Re:伝票番号をカウンター型に?? 貴代 2002/09/02-12:14
記事番号17172へのコメント
佐田 守弘さん、はじめまして

>●伝票番号
>質問やその後の書き込みから見ると、伝票番号は複数人が共有で、順次連番号
>を自動発行していると考えてよいですね。この前提で話を進めます。

伝票番号は自動的に発行します。
自動的にカウントします。

>●伝票番号のデータ型
>カウンタ型を使って下さい。カウンタ型であれば、常に新規の番号が自動発行
>されます。

フォームは伝票型をつかっておりますが。
入力表とデータ保存用の表は別々なのですが。
カウンター型は、並び替えると、番号が変わってしまうのではないでしょうか。
以前使ったときにたしか、このようなことがあって使用を控えております。


17178 カウンター型の値が変わるのは 佐田 守弘 2002/09/02-21:56
記事番号17174へのコメント
貴代さん

●1つの表の中では
1つの表の中で並べ替えなどを行ってもカウンタ型の値が変わる事はありません。
ただし、行訂正や置換を使って連番号に置換するなどを行えば、当然変わります。
Accessはカウンタ型の訂正はできませんが、桐は値が重複しなければ値の訂正は可能です。

でも書かれている事はこれとは異なりますね。
もし並べ替えで値が変わる(?)としたら、カウンタ型ではなく、#直前値([],0)+1の様な
計算式を設定した計算項目になっていたのではないでしょうか。

●他の表に読み込んだ時には
カウンタ型の項目に別の表のカウンタ型項目を読み込んでも、値が読み込まれるのではなく、
新しいカウンタ値が生成されます。
つまり入力用の表で伝票番号がカウンタ型になっていて、
これを保存用の表に読み込むと、保存用の表の方では、別の伝票番号になってしまいます。
これを避けるには、読込先の方の表は、カウンタ型ではなく、長整数型にしておきます。

佐田守弘(KS-00119)
17179 Re:カウンター型の値が変わるのは 貴代 2002/09/02-23:17
記事番号17178へのコメント
佐田 守弘さん
こんばんは。
ご指導ありがとうございます。

>●1つの表の中では
>1つの表の中で並べ替えなどを行ってもカウンタ型の値が変わる事はありません。
>ただし、行訂正や置換を使って連番号に置換するなどを行えば、当然変わります。
>Accessはカウンタ型の訂正はできませんが、桐は値が重複しなければ値の訂正
>は可能です。
ひょっとしたら、#直前値だったのかもしれません・・・・?

>●他の表に読み込んだ時には
>カウンタ型の項目に別の表のカウンタ型項目を読み込んでも、値が読み込まれる
>のではなく、新しいカウンタ値が生成されます。
>つまり入力用の表で伝票番号がカウンタ型になっていて、これを保存用の表に
>読み込むと、保存用の表の方では、別の伝票番号になってしまいます。
>これを避けるには、読込先の方の表は、カウンタ型ではなく、長整数型にして
>おきます。

保存用の表の最終の伝票番号を変数に代入し、
入力用の伝票番号を+1することは可能なのでしょうか?(カウンター型の場合)
17180 Re:共有で伝票番号 悲しげ 2002/09/02-23:53
記事番号17160へのコメント
どもっ、貴代さん
共有でやったことがないので、的外れなコメントになるかもしれませんが、
見ていて私ならこうするかも?と云ったことろを書きます。
要するに、複数のマシンから「新規入力」を行った場合に、
入力開始から入力確定までの間が重なると伝番の重複を生ずる可能性があるので、
これを避けたい、と云うことですよね。

とすれば、伝番の確定時期を入力開始から入力確定までの間とせずに、
入力開始の刹那に限定すればいかがでしょう?
例えば、伝番.tblを別表とした場合、コマンド牡丹「入力開始」をクリックした時に
(kevが必要となりますが、手続き実行として)次のような処理をさせます。
------------------------------------
表 "伝番.tbl"
*↑当該表がオープン中なら「編集表」コマンドが正しいの
*でしょうけど、これでも動くと思います。
並べ替え 索引名="伝番順"
ジャンプ 行番号=最終
&伝番=[伝番]+1
行追加 [伝番]=&伝番
------------------------------------
これで、瞬時に伝番が+1されたものとなりますから、
次の刹那に「新規入力」としてアクセスする人はさらに+1された伝番を
取得できることになるのではないでしょうか?
って、共有の挙動は、実はよく知らないので、
これじゃうまく行かなかったらごめんなさい。(^^;)

それと、この場合、「新規入力」を途中でキャンセルした場合には、
その伝番が欠番となってしまいます。
欠番の発生はやむを得ないと考えるべきでしょう。

あ、私はカウンタ型は使ったことないですけど、先に行追加してから、
最終行にジャンプして、最終行の項目値を&伝番に代入取得すればいいような。

17181 Re:共有で伝票番号 桐野港 2002/09/03-00:51
記事番号17163へのコメント
貴代さん はじめまして

>売上.wfmで、
>このフォームを開くときに、伝票.tblの最終伝票番号が&伝票番号に代入されます。
>
>コマンドボタン[新規入力]で新しいグループ追加を行います。
>項目[伝票番号]には挿入初期値に&伝票番号+1となっています。
>伝票入力が開始されます。
>この伝票入力が終了すると、
>コマンドボタン[確定]を押します。
>このボタンで、&伝票番号が新しい伝票番号になります。
>このボタンが押されるまでは、&伝票番号は入力前の伝票番号なのです。
>
>複数のPCで同時に使った場合、同じ伝票番号が発生するわけです。

この方法だともし3人で同時に伝票入力を開始すれば3人とも同じ伝票番号になってしまいます。
また伝票入力開始時に仮に3人とも違う番号例えば100・101・103と割り当てても、
101番の人が入力キャンセルした場合欠番になってしまい連続しなくなります。

当方では伝票入力終了確定する時に&伝票番号を取得して&伝票番号+1で保存しております。
そうすることで確定順に番号を振ることが可能です。
まったく同時に確定した場合同じ&伝票番号を取得することがありますので、
その時の取得順位を制御する必要がありますが。ご参考になれば
17182 Re:共有で伝票番号 尾形 2002/09/03-07:21
記事番号17180へのコメント
伝票番号を管理する表を作成したら?

表 "コントロール.tbl"
行訂正 [売上伝票番号]=[売上伝票番号]+1
代入 &伝票番号=[売上伝票番号]
終了 表 編集対象表
編集表 "売上"
グループ値代入 [売上伝票番号]=&伝票番号


[グループ追加開始]イベントあたりにからませて
みたらいかがでしょうか


17183 Re:共有で伝票番号 島尾 2002/09/03-10:00
記事番号17160へのコメント
同じような処理をやっております。
カウンタの項目と伝票項目を別にわけて

メソッド呼び出し @フォーム.更新モード設定(0)
&採番=&頭+#部分列(#文字列([カウンタ],6),3,4)
メソッド呼び出し @フォーム.更新モード設定(2)

行訂正 [No伝票]=&採番



こんな感じでカウンタ型の値を参照して伝票Noを生成しております。
この処理をおこなうまえにトランザクションで囲んでおけば
キャンセルをしたいときにロールバックすれば良いだけです

17184 Re:共有で伝票番号 masa 2002/09/03-10:10
記事番号17160へのコメント
貴代さん

>このシステムは販売課全員のパソコンで使用するため
>共有で使えるようにしなければいけないのですが
>そこで、伝票番号ですが
>現在は、入力が確定してから、確定のコマンドボタンで
>伝票番号を管理台帳に登録するようにしています。
>
>しかし、これでは、共有で使うには少々問題が発生するようです。
>確定ボタンを押さない限り、新しい伝票番号が登録されません。
>
>そこで、入力が始まったら伝票番号を登録するようにしようと思っているのですが
>どうやってすればいいのでしょうか?

やり方が違うので私の案はだめかも知れませんが、
伝票を販売課全員が入れるので大変そうですが、
一人の人が入れて他の人はその結果を見れたり加工できるような形式に作った方がいいのではと思いました。
(私はこの方法で作っている所です)

17186 Re:共有で伝票番号 貴代 2002/09/03-16:56
記事番号17184へのコメント
masaさん
はじめまして。

>やり方が違うので私の案はだめかも知れませんが、伝票を販売課全員が入れるので
>大変そうですが、一人の人が入れて他の人はその結果を見れたり加工できるような
>形式に作った方がいいのではと思いました。(私はこの方法で作っている所です)

1日にかなりの枚数の伝票を打つんです。
一人の人が入力担当で、それ以外の人がそれぞれの伝票を加工するなんてとんでもありません。
それなら、しないほうが・・・・・?

17187 Re:共有で伝票番号 貴代 2002/09/03-16:58
記事番号17180へのコメント
悲しげさん
はじめまして。

入力フォームの項目[年]に入力後イベントをつくって
いったん&伝票番号に代入するようにしました。

うまくいきそうです。
ありがとうございました。
17188 Re:共有で伝票番号 貴代 2002/09/03-17:06
記事番号17182へのコメント
尾形さん
はじめまして。

>伝票番号を管理する表を作成したら?

伝番管理.tblをつくりました。
売上.wfmの[確定]というコマンドボタンをつくり
確定後、手続き実行で、イベントへ移動し
ここで、最終伝票番号を代入し
この表に持っていくようにしました。

先ほども書きましたが、新規入力のコマンドボタンで
年の項目に入力後のイベントを発生させ
伝番を&伝番に代入しています。

こんなに沢山の方にご指導いただき
ありがとうございました。
皆さん一人一人にお礼を申し上げたいのですが
ここでお礼申し上げます。
ありがとうございました。
また、こんなすばらしい掲示板を管理して頂いている
管理者の方にもお礼申し上げます。
ありがとうございました。
17208 カウンター値の変更 佐田 守弘 2002/09/04-23:11
記事番号17179へのコメント
貴代さん
>保存用の表の最終の伝票番号を変数に代入し、入力用の伝票番号を+1することは可能なの
>でしょうか?(カウンター型の場合)

値が重複しなければできない訳ではありませんが、適切な方法ではありません。
カウンタ値はあくまでもその表の中で重複しない値を自動的に発生させるために使うべきで、
何らかの理由がない限り値を勝手に変更すべきものではありません。

●なぜ入力用と保存用の表があるのですか
どうやら最大のポイントはここにあると読みました。
なぜ入力用の表と保存用の表をわけているのですか。
各入力者には入力用の表で入力させ、これを集めて保存用の表にまとめているとしたら、
これは質問の主旨から考えて、必ずしも適切な方法ではないと考えます。

佐田守弘(KS-00119)

戻る