過去の桐井戸端BBS (桐ver.5)
2414 1レコード複数行のTXTファイルを、表へ1行で読み込みたい T・S 1999/8/17-17:05
いつもお世話になります。

早速ですが、次のようなレコードの並びになったファイル(TXTファイル)を、
DOS桐5に読み込むときにうまく読み込めずに困っております。
きちんと1件1レコードにする良い方法があったら、
どなたかご教示いただければ幸いです。

項目名
[A]   [B] [C]
−−−−−−−−−−−−−−−−−
id=1234 男   FC
神奈川
横浜
id=2345 女   QA
東京
世田谷
id=9786 男   FA
神奈川
川崎


説明)
 上記の表のデータは、
id=1234,男,FC,神奈川,横浜
までが、1レコードのはずなのですが、項目名[A]だけに
1レコードの内容のデータが3行入ってしまっており、
「選択」や「検索」がうまくいきません。
 上記の場合は、9行あるレコードですが、本当は3レコード(3行)
にして表示したいのですが良い方法はありませんでしょうか。
2415 Re: 幅田 1999/8/17-18:45
記事番号2414へのコメント
T・Sさんこんにちは。

例えば1レコード目の[A]にid=1234 男 FC
             [B]に神奈川
             [C]に横浜
が入ればいいのでしょうか?

項目[A]の前にテキスト読込用の項目[読込用]を作ります。

[A]の項目計算式には
#条件選択(#部分列([読込用],1,2)=”id”,[読込用],1,#直前値([A],””))

[B]の項目計算式には
#条件選択([読込用]=[A],””,#部分列(#直前値([読込用],””),1,
2)=”id” .and [読込用]<>[A],[読込用],1,#直前値([B],””))

[C]の項目計算式には
#条件選択(#部分列([読込用],1,2)=”id”,””,[読込用]=[B],””
,1,[読込用])

という式を設定して[読込用]の項目にそのテキストファイルを読み込むと、
[A],[B],[C]に各データが展開されて下記の状態で読み込まれます。

[読込用]       [A]         [B]       [C]
id=1234 男 FC  id=1234 男 FC
神奈川       id=1234 男 FC  神奈川
横浜        id=1234 男 FC  神奈川    横浜
id=2345 女 QA  id=2345 女 QA
東京        id=2345 女 QA  東京
世田谷       id=2345 女 QA  東京     世田谷
id=9786 男 FA  id=9786 男 FA
神奈川       id=9786 男 FA  神奈川
川崎        id=9786 男 FA  神奈川    川崎

[A][B][C]すべてのデータがそろったレコードは[C]の項目にも
読み込まれたレコードのみ(3行目、6行目、9行目)なので、
読み込んだ後、選択で[C]の項目で比較式 #定義 で選択してから
[A],[B],[C]の項目を別表に書き出せばOKです。
2416 Re: T・S 1999/8/17-19:10
記事番号2415へのコメント
早々に、幅田さんよりRESをしていただき本当に有り難うございます。

ただ私の説明が良くなかったようで再度このような事例ということで
説明させて下さい。

id=1234 の1レコードについて説明しますと、
(現在)
項目[A]= id1234,神奈川,横浜(←この項目が3行になってしまっている)
項目[B]= 男
項目[C]=FC
(正しい形)
項目[A]= id1234
項目[B]= 男
項目[C]=FC
項目[D]=神奈川
項目[E]=横浜

という形にしたいのです。

たびたびで大変申し訳ありませんが、どうか良い解決策をご教示いただけさればと思います。
2417 Re: 幅田 1999/8/17-20:14
記事番号2416へのコメント
それでは、[A],[B],[C],[a],[b],[c],[d],[e]
という項目を用意します。
テキストデータは、[A],[B],[C]に読み込みます。(でいいのですね)

[a]の項目計算式には
#条件選択(#部分列([A],1,2)=”id”,[A],1,#直前値([a],””))

[b]の項目計算式には
#条件選択(#部分列([A],1,2)=”id”,[B],1,#直前値([b],””))

[c]の項目計算式には
#条件選択(#部分列([A],1,2)=”id”,[C],1,#直前値([c],””))

[d]の項目計算式には
#条件選択([A]=[a],””,#部分列(#直前値([A],””),1,2)=”id” .and [A]<>[a],
[A],1,#直前値([d],””))

[e]の項目計算式には
#条件選択(#部分列([A],1,2)=”id”,””,[A]=[d],””,1,[A])

を設定すると

[A]   [B]   [C]   [a]    [b]   [c]   [d]     [e]
id1234 男   FC   id1234  男   FC
神奈川          id1234  男   FC  神奈川
横浜            id1234  男   FC  神奈川   横浜

のような状態で読み込まれます。
[a]から[e]まで、全項目そろっているレコードは項目[e]が定義されている行
(3行目、6行目、9行目)ですので、[e]の項目で比較式 #定義 で選択して
[a][b][c][d][e]の項目を別表に書き出せばOKです。
2420 Re:訂正 幅田 1999/8/17-20:41
記事番号2417へのコメント
>[d]の項目計算式には
>#条件選択([A]=[a],””,#部分列(#直前値([A],””),1,2)=”id” .and [A
>]<>[a],[A],1,#直前値([d],””))

ではなくて

[d]の項目計算式は
#条件選択([A]=[a],””,#部分列(#直前値([A],””),1,2)=”id”,[A],1,
#直前値([d],””))

でいいみたいです。
2421 Re: T・S 1999/8/17-21:00
記事番号2417へのコメント
幅田さんは No.2417「Re:レコードの作り方について」で書きました。

どうも有り難うございました。無事作成できました。

このような難解な質問に対しても快くご回答いただき
本当にどうも有り難うございました。

戻る