みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Windows
ファイルメーカー18
患者さんのIDでリレーションを組んであるデータベースに下記のような検査値のtxtファイルのインポートをしたいのですがどのような方法でインポートしているのでしょうか?
H202112290000001234 4 SMS 01D3853 989.1 1 *
このようなtxtファイルです。
1234が患者さんのID
その後の4がコメント
Dの後が検査コード
9の後が検査値
✳︎で終了
なにかヒントを頂けたら幸いです。
固定長ですか?
1つのフィールドにインポートしてから、Middle()関数などで取り出す。
2バイト文字が入る可能性があるのでしたら、ちょっと面倒ですよ。
Offline
himadanee様返信ありがとうございます
H202201040000001234 1 SMS 37D2002 96.3 2 D2007 913 0 D2008 99 0 D2010 959 2 D2011 9197 0 D2012 915 0 D2020 953 0 D2025 984.5 1 D2026 911.64 1 D2028 95.1 0 D2029 9138 0 *
H202201040000005678 1 SMS 37D2045 95.4 2 D2075 919 0 D2022 916 0 D2058 928 2 D2011 9213 0 D2012 911 0 D2020 9117 1 D2025 964.1 1 D2088 98.14 1 D2028 95.3 0 D2029 9138 0 *
このような固定式ではないtxtファイルです。
カンマやタブの区切り文字がない(長さが足りない分はスペースで埋めている)固定長のテキストにしか見えませんが。。。
出力しているソフトの仕様書があるのでは。
勝手に推測して計算式を作っても、想定外のデータがあった場合に危険なことになります。
「1234が患者さんのID」と言ってますが実際は「0000001234」ではないかと思います。(4桁ではすぐにあふれるし、その前までが年月日なので)
このようなテキスト処理の場合、その規則性がとても重要です。
> H202201040000001234 1 SMS 37D2002 96.3 2 D2007 913 0 D2008 99 0 D2010 959 2 D2011 9197 0 D2012 915 0 D2020 953 0 D2025 984.5 1 D2026 911.64 1 D2028 95.1 0 D2029 9138 0 *
この例からは
H =?
20220104 = 日付?
0000001234 = 10桁のID?
半角スぺース = 6個
1 =コメント
半角スぺース =3個
SMS 37 = ?
---以下繰り返し
D = 以下検査コード
2002 = 検査コード
半角スぺース =2個
9 = 以下検査値
6.3 = 検査値
半角スぺース =8個
2 = ?
半角スぺース =15個
---以上繰り返し
これが不変の規則
としていいのでしょうか?
繰り返しは1回を1レコードに分ける?
Offline
こんな形で、中間テーブルを作っておけばいいのかも。(かなり想像で)
https://www.dropbox.com/s/0ly0weivk03y0 … 2.zip?dl=0
送信元に問い合わせて、テキストのフォーマット情報をお聞きになればいかがでしょう。
Last edited by Shin (2022-01-12 10:08:35)
Offline
himadanee様
返信ありがとうございます
固定長という意味を勘違いしていました
チポ様
返信ありがとうございます
おっしゃる通りの規則性でございます。
チポ様が”?”にしているところは検査機関のコードだったり基準値より高いか低いかを表しているそうなので大丈夫です
Shin様
サンプルを作成していただきありがとうございます。
現在、正確なフォーマット状態を問い合わせしています。
Pages: 1
[ Generated in 0.008 seconds, 10 queries executed - Memory usage: 518.03 KiB (Peak: 522.94 KiB) ]