過去の桐井戸端BBS (桐ver.8)
3925 表引き元のデータが変わっても過去のものは変更前のものを表示印刷したい 関口喜人 1999/12/23-02:38
V8SP3を使用しています

伝票処理をするときに、過去にさかのぼって再請求することがよくあります。
たとえば、Aという会社が
平成11年4月1日〜10月31日までは、有限会社A社 代表者Bだったとします
平成11年11月1日からは、株式会社A社 代表者Bになったとします。
また平成11年12月1日からは代表者が変わり、株式会社A社 代表者Cになったとします。

過去にさかのぼって再請求する場合、
それぞれの、日付の範囲の伝票に、そのときの正確な
会社名及び代表社名を、印刷したいのですが
どのような、表引きを設定すればいいのでしょうか?
なお、できれば会社自体は変わらないので、顧客コードはいっしょにしたいのです
そうすると、別に表引き項目を定めなければいけないのでしょうか?
よろしくお願いします

3933 Re: Masashi 1999/12/23-11:43
記事番号3925へのコメント
関口喜人さん、こんにちは。

各マスタ・トランザクションの表の運用の仕方とか、
データーベースの正規化の問題とか、
いろいろ絡んできますが、

私のところでは、印刷対象となる伝票の表に、
「コード」・「会社名」・「支店名」・「担当者名」・「住所」等の各データを
会社名(顧客)マスタ表から、伝票入力表の定義の表引き条件設定で、
1レコードずつ、入力の都度、転記してしまってます。
従って、表引きの設定次第では、極端な話、会社名マスタに、
100というコードでA会社という会社が登録してあっても、
100というコードでB会社と訂正入力することも可能なのです。
ファイルサイズは大きくなりますが、
特に、宅配便の送り状発行システムなんかですと、
会社名が変わらなくても、住所がコロコロ変わって、その発送した
時系列のデータを持っていなければいけない場合があるのです。

もうひとつ、会社名のマスタ表に0というコードだけ入力しておき、
後の項目は、完全に空にしておけば、会社名のマスタ表に登録され
ていない、とっさの新規データも入力可能となります。
1回だけの発送(伝票発行)で、マスタ登録の必要のない時なんかも、
この処理でOKですよ。

この辺は、本当に運用の仕方次第なので、一概にいえませんが・・
ご参考になれば幸いです。
3935 表引き元ファイルの内容が変わる場合 佐田 守弘 1999/12/23-12:22
記事番号3925へのコメント
関口喜人さん

正論を先に言うと、代表者名が変わったり、所在地が変わった様な場合の対応方法は、
2つしかありません。
@表引き元のマスターファイルを書き替える
この場合、以前の会社情報を表引きできません。結合や計算式で表引きしている場合に
は、以前のデータも更新されます。
A内容が変わったら別の会社として扱い、別のコードを振る
この方法は、以前の会社の情報も表引きしたり、あるいは表引き関数で表引きしている場合、
結合表で結合する場合でも、以前のデータはそのまま残ります。

ですから、關口さんがどの様な形で表引きしているかによって、対応方法が変わります。
もし表引き関数でなく、表引き入力であれば、@の方法でマスタファイルを書き替え、
以前のデータを入力する時には、手入力でせざるを得ないと思います。

佐田守弘(KS-00119)
3936 Re: 関口喜人 1999/12/23-12:26
記事番号3933へのコメント
Masashiさんいろいろアドバイスありがとうございます
発送の履歴だけを残しておくのであれば、その方法も大変いいと思います

しかし自分の一番やりたいのは、日付をさかのぼって請求書を発行するのに
そのさかのぼった、日付での正確な相手先の、会社名や代表社名を印刷したいのです
現在の場合は、相手先の会社の社名変更のデータをいちいち確認しなければなりません

実は、以前パラドックスでそのようなことができるシステムを見たことがありまして
便利なので、桐でもできないかと思いました

日付関数を見てもなかったのですが
たとえば、1月1日〜6月30日という期間の中に、発行したい請求日(たとえば4月1日)が
入っていれば1を返し、入っていなければ0を返す
といった関数があれば大変便利なのですが

当然、相手先のマスターには、会社名が変わった日とうがデータにあるとします
3937 日付の期間を判断してくれる関数 関口喜人 1999/12/23-12:44
記事番号3935へのコメント
佐田先生アドバイスありがとうございます 
私のケースの場合
>@表引き元のマスターファイルを書き替える
>この場合、以前の会社情報を表引きできません。結合や計算式で表引きしている場合に
>は、以前のデータも更新されます。
以前のデータの履歴もぜひ残しておきたいのです
以前のデータが更新されてしまいますと困ります。

>A内容が変わったら別の会社として扱い、別のコードを振る
>この方法は、以前の会社の情報も表引きしたり、あるいは表引き関数で表引きしている場
>合、結合表で結合する場合でも、以前のデータはそのまま残ります。
>
代表者名や住所が変わっても、その会社の取引などは一元管理したいのです
毎月、会社の住所が変わる会社では、年間12個のコードが生まれます。
しかし、年間の取引額を集計するには、コードは1つのほうが便利ではないでしょうか?
それと、たとえば、以前出した請求が未払いのとき、コードが違うと、その会社の今までの未払い
額を集計したい場合などは、コードが違うと集計できないケースが出てきます

>ですから、關口さんがどの様な形で表引きしているかによって、対応方法が変わります。
できれば、項目計算式で引っ張って着たいと思います

自分で考える中で、たとえば1月1日〜6月30日というような定められた期間の中で
請求したい日付が(たとえば4月1日)、期間内に入っていれば1、そうでなければ0を返してくれ
るような関数はないでしょうか?
3942 Re:日付の期間を判断してくれる関数 Masashi 1999/12/23-14:02
記事番号3937へのコメント
Masashiです。コメントの割り込みになりますが・・・

>以前のデータの履歴もぜひ残しておきたいのです
>以前のデータが更新されてしまいますと困ります。

邪道ではありますが、私の方法で、社名等のデータを持たせてしまう形でもよいのでは?

>代表者名や住所が変わっても、その会社の取引などは一元管理したいのです
>毎月、会社の住所が変わる会社では、年間12個のコードが生まれます。
>しかし、年間の取引額を集計するには、コードは1つのほうが便利ではないでしょうか?
>それと、たとえば、以前出した請求が未払いのとき、コードが違うと、その会社の今までの未払い
>額を集計したい場合などは、コードが違うと集計できないケースが出てきます

会社名のマスタ表に[顧客コード]とは別に、
[請求コード]なるデータを、もたせてはいかがでしょうか?
集計は、この[請求コード]を元に計算させればOKのような気がします。

>自分で考える中で、たとえば1月1日〜6月30日というような定められた期間の中で
>請求したい日付が(たとえば4月1日)、期間内に入っていれば1、そうでなければ0を返してくれ
>るような関数はないでしょうか?

その、フラグをたてる項目の項目計算式で、
#COND([伝票日付]=>d"1999/1/1" .and [伝票日付]<=d"1999/6/30",1,1,0)
と設定してやれば、お望みの結果となりますが・・・?

ただ、フラグをたてたあと、どう処理されるのでしょうか?
1だったら、他の[旧会社名]とか言う項目値を引っ張るとか?
すっきりしないような気がしますが・・・。
3947 Re:日付の期間を判断してくれる関数 宮城 1999/12/23-17:17
記事番号3942へのコメント
関口さんのニーズに応えようとすると・・・。

[顧客CD][適用開始年月1][顧客名1][適用開始年月2][顧客名2]のような
かたちの表年年月によって顧客名1を使うか顧客名2を使うか判断させるしか
ないでしょう。

煩瑣になりますが、社名変更が多いならしかたないですね。せいぜい2、3回
ってとこですか。金利を扱うときなど、こうせざるをません。
3950 Re:日付の期間を判断してくれる関数 佐田 守弘 1999/12/23-18:49
記事番号3937へのコメント
関口喜人さん
いずれにしても正統的な方法では解決できる課題ではありませんから、何らかのアイデアなりテクニックを
駆使しないと解決できない方法でしょう。既にコメントされていますmasashiさん、宮城さんの方法もその
1つと思います。
類似の方法として、次の様なものを考えてみました。うまく行くかどうかは分かりませんが、試してみて下さい。

まず、マスタファイルですが、[開始日付][終了日付]の項目を加えて下さい。これは、そのデータが有効に
なった日付と、無効になった日付を意味します。これによって
[社名] [開始日付] [終了日付]
松桐産業 1998/10/1 1999/1/31
松桐産業 1999/2/1 1999/11/30
松桐産業 1999/12/1 <未定義>
の様な社名のマスタファイルができます。そして、表引き入力を行う直前に、対象とする日付、おそらくは
それが伝票日付だと思いますが、この値(「&選択日付」とします)で次の様な絞り込みを行います。
[開始日付]が&選択日付よりも前 and (終了日付が未定義 or [終了日付]が&選択日付よりも後)
この絞り込みは条件名による絞り込みでできると思います。

この絞り込みを行った状態のマスタファイルが、参照したい期間のデータになっているはずです。
この絞り込み状態の表を使って、表引き入力をして下さい。計算式での表引きはできません。
(できないわけではありませんが、意味がないでしょう)

後は、問題はどこの時点で絞り込みを行うかでしょうね。おそらくは、 伝票の再発行をする時に、発行日
付を入力するのでしょうから、その時点でイベントを発生させて、上記の絞り込みを行うのがよいのではと
思います。どのイベントが良いかは、決めかねますが、伝票発行日の値のソース値更新ないし入力後イベン
トあたりを使ってみて下さい。

佐田守弘(KS-00119)

3970 Re:日付の期間を判断してくれる関数 関口喜人 1999/12/25-01:37
記事番号3950へのコメント
みなさん、いろいろアドバイスありがとうございます。

皆さんの意見を参考に、いま検討中です

完成したら、ご報告したいと思います。

関口

戻る