初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2014-08-10 14:45:20

nice-guy
Member

CSVで取り込んだ日付フィールド

みなさん、こんにちは。FM12Ad、windows7で使っています。CSVファイルに日付"201408010"がはいっています。それをFMに日付フィールドとしてインポートします。
レイアウトの書式設定で、「入力モードのまま」と設定すると正常に「20140810」と表示されますが、「2003/12/25」とすると、画面上では0000/00/00と表示されてしまいます。フィールド内をクリックすると「20140810」と表示されます。これはそういう仕様なのでしょうか?両方とも「2003/12/25」と表示できるようになりませんか?よろしくお願いします。

Offline

#2 2014-08-10 17:49:30

脱初心者を目指すもの
Guest

Re: CSVで取り込んだ日付フィールド

私も興味があって、色々と試してみました。

方法1:csv側で予め書式を整えておく。おそらくこれが一番簡単?
     但し、定期的インポートをする場合、CSVを書き出す元をそもそも変更の必要性がある。

方法2:

1:テキストデータ(元データ)にインポート(インポートオプション:On)
2:日付フィールド(計算値で変換:計算式内が空欄の時計算しないにチェック)

Case (
元データ = Date ( Month ( 元データ ) ; Day ( 元データ ) ; Year (元データ ) );元データ;
Date ( Middle ( 元データ; 5;2) ; Middle ( 元データ; 7;2 ) ; Middle ( 元データ; 1;4 ) )
)


こんな感じ?間違いあればすいません。

#3 2014-08-10 18:02:30

脱初心者を目指すもの
Guest

Re: CSVで取り込んだ日付フィールド

読み間違いだ・・・csvの入力データが 『20140810』 と 『2014/08/10』に入ってるわけではなく
『20140810』のみ?それで、書式設定を変えたら0000/00/00 ?

それなら、日付(日付タイプ:計算値)のみで対応可能かな。
Date ( Middle ( Self; 5;2) ; Middle (  Self; 7;2 ) ; Middle (  Self; 1;4 ) )

どうでしょうか

#4 2014-08-10 18:06:14

Shin
Member

Re: CSVで取り込んだ日付フィールド

おそらく、数値として20140810が入っていると見なされているのでしょう。西暦55000年くらいですので、サポート外のため0000/00/00が表示されると思われます。
入力した時点で、2014/08/10というテキスト形式に変更するか、日付関数で変換しておくといいです。
自動入力に、
Replace ( Replace ( date ; 7 ; 0 ; "/" ) ; 5 ; 0 ; "/" )
とか
Date ( Middle ( date ; 5 ; 2 ) ;Right ( date ; 2 ) ; Left ( date ; 4 ) )
を設定しておき、上書きを許可しておくといいでしょう。

Offline

#5 2014-08-10 18:17:59

脱初心者を目指すもの
Guest

Re: CSVで取り込んだ日付フィールド

横レスすいません。
Replaceのほうがシンプルですね。先に7?と思いましたが納得です・・・勉強になりました!

#6 2014-08-10 20:22:34

nice-guy
Member

Re: CSVで取り込んだ日付フィールド

脱初心者を目指すもの さん、Shin さん、 レスありがとうございました。
まず、最初に質問の所で、書き間違えました。もとのCSVのデータは「201408010」 ではありませんでした。一つ0が多すぎました。「20140810」2014年8月10日でした。
それから、定期インポートとなります。

さて、脱初心者を目指すものがおっしゃるとおり、元のCSVで2014/08/10と整形出来れば良いのですが、ちょっとそれは出来ないので、もう一つの方法でチャレンジしました。
Shinさんが書かれたReplace ( Replace ( date ; 7 ; 0 ; "/" ) ; 5 ; 0 ; "/" ) で「date」と言うのは何ですか?コピペしてそのまま計算式の中に貼り付けると「指定されたフィールドが見つかりません」と怒られます。脱初心者を目指すものさんが書かれたようにdataをselfに置き換えてもやはり状況は変わりませんでした。
この点教えていただけませんか?よろしくお願いします。

Last edited by nice-guy (2014-08-11 11:10:29)

Offline

#7 2014-08-14 09:14:33

旅人
Member

Re: CSVで取り込んだ日付フィールド

>Replace ( Replace ( date ; 7 ; 0 ; "/" ) ; 5 ; 0 ; "/" ) で「date」と言うのは何ですか?
dateは20140810の意味。
20140810の7番目の0文字を/に変更すると201408/10になり
その結果の5番目の0文字を/に変更すると2014/08/10になって
日付タイプになる。

Offline

#8 2014-08-14 10:32:20

tim
Guest

Re: CSVで取り込んだ日付フィールド

dateは20140810形式でインポートするフィールドの名前。FM12ならSelfでいいはずだけど。
インポートだけならいいけど、手入力するときにも自動入力が働いてしまわないかな?
If(IsValid(Self);Self;Replace ( Replace ( Self ; 7 ; 0 ; "/" ) ; 5 ; 0 ; "/" ) )

#9 2014-08-15 19:25:31

nice-guy
Member

Re: CSVで取り込んだ日付フィールド

旅人さん、timさん、解説ありがとうございました。
うまくできました。どうもありがとうございました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 519.4 KiB (Peak: 523.94 KiB) ]