過去の桐井戸端BBS (桐ver.8)
9262 データを横に展開し行を詰めたい つっち 2001/01/10-17:22
   在庫.tblで
部品名 日付 入庫数 出庫数
 A   ○○  5
 A   ××      2
 A   △   3   1
 B   □□  10
 B   ■■  2
 B   ▲       5
 C   ●       2
とデータをもっていたとします。
これを
部品名 入日付 入庫数 出日付 出庫数
 A   ○○   5  ××   2 
 A    △    3   △   1
 B   □□   10  ▲   5
 B   ■■   2
 C            ●   2
と言うように詰めた感じにしたいのですが出来ずに困っています。
入庫・出庫だけのファイルに分け結合してもだめ、併合でもだめで2日ほど途方にくれています。
いっそ、「そんなことはできない」って言う情報だけでも救われます。(T_T)
過去ログでも相当する事例を見つけられませんでした。
もともとのデータの持ち方が悪いと言うお叱りでもいいです。

よろしくお願いします。
9266 Re:行の詰め方 みすず 2001/01/10-18:45
記事番号9262へのコメント
入庫数が定義されているのだけ絞り込んで

部品名 入日付 入庫数 出日付 出庫数
 ○   ○   ○

の表の○の部分に読み込んで、
今度は出庫が定義されているのだけ絞り込んで部品名をキーにして、その表の出日付 出庫数 へ併合するというのは?
ためしてませんけど。

9267 だめだ みすず 2001/01/10-18:46
記事番号9266へのコメント
ダメみたいです。
先生方お願いします。
9271 Re:行の詰め方 Ogo 2001/01/10-20:48
記事番号9262へのコメント
できるでしょう一括処理を組めば。
道筋のみを最後に書きます。

>もともとのデータの持ち方が悪いと言う
>お叱りでもいいです。

前後双方ともデータベース的には誉められた持ちかたとは思えませんね
(入力用に前者のフォームを用意するのはわかるが)。
考え方の発想が、前者は「カード的」、後者は「ワープロ的」でデータ処理には向いていないと思いますよ。

- - - -

考え方の道筋

0.前者の表を「元表」、後者の表を「結果表」と表現すると、「結果表」を事前に用意して中身をカラにしておく。

1.部品名を単一化して別表(部品名一覧表)に書き出します。
  その部品名ごとに順次以下の処理を行うようにループを組む。

2.部品名一覧表の部品名を変数に取り込み、元表の絞り込みを全解除してから、該当部品名のみを絞り込み
  (当然、日付順に並べるべきです)。

3.絞り込まれた内容を全項目別表(作業表)に書き出します。

4.結果表を開き、作業表との間で併合処理を行ないます。

4−1.作業表で 入庫数>0 で絞り込み
4−2.結果表で部品名を絞り込み
4−3.入日付(結果表)と日付(作業表)を照合、部品名(両者)も照合。
    入庫数(両者)を複写2で併合(挿入置換・両方)。
4−4.作業表で絞り込み解除後に、出庫数>0で絞り込み
4−5.出日付(結果表)と日付(作業表)を照合、部品名(両者)も照合。
    出庫数(両者)を複写2で併合(挿入置換・両方)。
4−6.結果表で絞り込みを解除して、部品名単位のサブルーチン(ループ)終了

さて、この処理ですと、当然「同一日付では、入出庫のデータは1回しか記録しない」ことが前提となります。

そうでない場合は、「部品名」と「日付」だけではデータを特定できないことになりますので、
そもそもの元表のデータの持ち方自体に無理があることになります。

また、コンバート(転記処理)を毎日行なうという前提でものを考えているのなら、
どうしても、思いどおり(データ集計のために必要な)の順で並べ替えさせることが可能な索引を事前に作成しておくべきでしょう(転記時に綺麗に整列させることが可能なのは、最初の1回のみです。2回目からはデータ順序は、ばらばらになります)。

ついでにいうと、
>部品名 入日付 入庫数 出日付 出庫数
> A    △    3   △   1
たとえ同日に入出庫の両方があったとしても、それが横一列に並ぶ保証はどこにもありません。

9275 Re:行の詰め方 yasuyukis 2001/01/10-23:21
記事番号9262へのコメント
目的とする下記の表の論理的意味づけがわかりません。

>部品名 入日付 入庫数 出日付 出庫数
> A   ○○   5  ××   2 
> A    △    3   △   1
> B   □□   10  ▲   5
> B   ■■   2
> C            ●   2

部品名と日付を指定して、その日に発生した入庫数と出庫数を集計したいのとも異なりますし。。。
部品名 日付 入庫数 出庫数  という表なら意味が分かりますが。

いったいこの表で何を見ようとしているのでしょう?

9279 Re:行の詰め方 佐田 守弘 2001/01/11-02:15
記事番号9262へのコメント
つっちさん
私も、Ogoさん、yasuyukisさんが言われる様に、この様な表を作る意味はないと思います。
と言うか、この様な形で表データを持つ事は、データベースのデータとしては相応しくありません。

ただし、作りたい表をよくよく見てみると、部品名で分類し、左側に入庫のリスト、右側に出庫のリストを印刷するのが
目的と見受けます。
御本人が目的を書かれていないので、推定するしかないのですが、おそらくデータベースの概念を理解していない上司が、
「紙の無駄だから行を詰めた書類を作れ」とでも言ったのではないでしょうか。

●単に印刷物を得るなら
上記のような目的であれば、その様なデータを表で持つ必要は更々なく、単にその様な表を印刷すればよいのだろうと思います。
さてその方法ですが、試してはいませんが、複合レポートで作成できると思います。
上部に部品名をテキストオブジェクトで設け、その下に左右に2つの一覧表オブジェクトを配置します。
いずれもテキストオブジェクトとリンク関係を設定する事によって、部品名で絞りこまれるはずです。
左の一覧表は、入日付と入庫数を、右は出日付と出庫数を印刷しますが、それぞれ、左は入庫数が1以上のもの、
左は出庫数が1以上のものを絞りこむ設定をしておけば、目的の様な印刷物ができるはずです。
上部のテキストオブジェクトで部品名を印刷しますが、これがじゃまなら印刷しない設定にして下さい。

●どうしてもその様な表を作りたい
意味がないから絶対に止めましょう。
もしその様な表を上司に見せたら、この表で入力しろとでも言われ、混乱に拍車を掛けます。
混乱のためにミスを犯したり、その責任を取らされるのが落ちです。
それを重々承知の上で、クイズとしてお答します。

元の表から目的の表を作るのは、至って簡単です。
その前に確認ですが、
>部品名 日付 入庫数 出庫
> A   △   3   1
は間違いだと勝手判断します。
1レコードで入庫と出庫が同時に記載されるのは変ですから。
【定義】
さて、まず先にこの表の定義を変更します。
[連番](整数)、[連番2](文字列)を作って下さい。
そして、[連番2]には、項目計算式で、[部品名]+#文字列([連番])を設定しておいて下さい。
また目的の表と同じ表を定義し、この表にも[連番2]を作っておいて下さい。
【操作】
まず入庫数があるレコードを絞りこみます。次いで、[連番]を#順位([部品名],[日付])で置換します。
なお、同じ部品名で同じ日付はないものと想定します。
あるなら何か別の項目を指定し、それもない場合にはダミーの項目を作って下さい。
これを、[連番2]を照合して、目的表に日付と入庫数を併合します。
次に元表の絞り込みを解除し、出庫数があるレコードを絞り、同様の操作をします。
これで目的表ができるはずです。

佐田守弘(KS-00119)
繰り返しますが、実際に作っても、印刷以外の目的に使うのは止めましょう。
9283 Re:行の詰め方 つっち 2001/01/11-09:40
記事番号9262へのコメント
皆さんレスありがとうございます。
このような表を作成することは
可能なのだけれども、やめたほうがよさそうですね。

>御本人が目的を書かれていないので、推定するしかないのですが

すみません。目的を書くことを忘れていました。そして

>「紙の無駄だから行を詰めた書類
>を作れ」とでも言ったのではないでしょうか。

佐田先生。流石です。目的まで汲み取って頂けるとは・・・

>●単に印刷物を得るなら
>上記のような目的であれば、その様なデータを表で持つ必要は更々なく、単に
>その様な表を印刷すればよいのだろうと思います。
>上部に部品名をテキストオブジェクトで設け、その下に左右に2つの一覧表オ
>ブジェクトを配置します。いずれもテキストオブジェクトとリンク関係を設定
>する事によって、部品名で絞りこまれるはずです。

すっかり私の頭の中で、そのような表を作らなければいけないと思っていました。
すっかり目的を見失っていたようです。
レポートのほうで処理できる内容だったのですね。
やってみたいと思います。

みなさんありがとうございました。
9285 Re:行の詰め方 つっち 2001/01/11-10:13
記事番号9271へのコメント
コメントありがとうございます。

>前後双方ともデータベース的には誉められた
>持ちかたとは思えませんね(入力用に前者の
>フォームを用意するのはわかるが)。
>考え方の発想が、前者は「カード的」、後者
>は「ワープロ的」でデータ処理には向いてい
>ないと思いますよ。

あつかましいとは思いますが・・・
一般的な在庫管理の方法かなと思い部品が日付と入庫数と出庫数のデータをもっているような感じにしました。
どのようなデータの持ち方がこの場合ふさわしいのでしょうか。
9288 Re:行の詰め方 Ogo 2001/01/11-12:26
記事番号9285へのコメント

>一般的な在庫管理の方法かなと思い
>部品が日付と入庫数と出庫数のデータを
>もっているような感じにしました。
>どのようなデータの持ち方が
>この場合ふさわしいのでしょうか。

基本的には、会計部門に話を聞いてみて下さい。
「複式簿記」方式が最もリーズナブル(データベースで、いろんな集計などの任意データ処理をするという前提で)
だと思います。

9296 Re:行の詰め方 Ogo 2001/01/11-21:06
記事番号9288へのコメント

>基本的には、会計部門に話を聞いてみて下さい。
>「複式簿記」方式が最もリーズナブル(データ
>ベースで、いろんな集計などの任意データ処理
>をするという前提で)だと思います。

ついでに言うと、この場合、入力・保存するのは「仕訳帳」に当たる内容だけです。
「総勘定元帳」に当たる内容はいつもカラ状態で、集計作業を行う場合のみ、必要に応じてその場で一括処理を使って
「総勘定元帳」に転記・集計をします。

戻る