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

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

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

You are not logged in.

Announcement

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


#1 2024-01-14 21:18:57

red
Guest

エクスポート時のファイル名にタイムスタンプを付与

FM18、Windows10
データをエクスポートしてエクセルで保存したく、例えば2024年1月14日21時15分20秒でしたら、
ファイル名を「20140104211520完了データ」にしたいと考えており、
下記のように設定しました。

出力ファイルパス:$タイムスタンプ

変数を設定
名前:$タイムスタンプ
値:"file:" & Filter ( Get ( タイムスタンプ ) ; "0123456789" ) & " 完了データ .xlsx"

この結果、次のエラー表示が出ました。
→「$日付」をこのディスク上に作成できませんでした。ファイル名を変更、ディスクの空き容量を増加、ロック解除、または他のディスクを使用してください。
ディスクの空き容量やロック解除には問題がないと思いますので、ファイル名に問題があるとは思いますが、
どのように修正したらよいか、教えていただけないでしょうか。
お忙しいところ恐縮ですが、よろしくお願いいたします。

#2 2024-01-14 21:59:49

Shin
Member

Re: エクスポート時のファイル名にタイムスタンプを付与

$タイムスタンプ 変数の中身を見てみましょう。データビューワーを使い、デバッガーでステップ動作させるか、一時的にグローバル変数などに保存してみるといいです。

Offline

#3 2024-01-14 22:50:00

red
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

Shin様

ありがとうございます。
①データビューワーを使ってみました。
式に「"file:" & Filter ( Get ( タイムスタンプ ) ; "0123456789" ) & " 完了データ .xlsx"」を入力したところ、
結果は「file:20240114211520 完了データ .xlsx」となりました。(時間は当初の例のとおりとしております。)

②グローバル変数としてみました。
変数を設定の 名前:$タイムスタンプ を $$タイムスタンプ へ変更しましたが、同じく次のエラー表示が出ました。
→「$タイムスタンプ」をこのディスク上に作成できませんでした。ファイル名を変更、ディスクの空き容量を増加、ロック解除、または他のディスクを使用してください。

データビューワーを使用するのも初めてであり、私の知識ではどこに問題があるか分かりかねます。
お手数ですが、ご教授いただけますと幸いです

#4 2024-01-14 23:29:01

Shin
Member

Re: エクスポート時のファイル名にタイムスタンプを付与

20240114211520 完了データ .xlsx
というファイル名ですね、pathが必要ですが、ファイルを保存する手順はどうなっていますか。ヘルプで、ファイルパスを調べ、そのパスと見比べて見てください。
ファイルパスの作成

Last edited by Shin (2024-01-15 08:34:30)

Offline

#5 2024-01-15 10:58:17

red
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

Shin様

ありがとうございます。
パスタイプは「相対パス」で、ファイルパスは「file」という理解ですが…
ヘルプも何度も読みましたが、どこに問題があるか全く分からず、困り果てています。

なお、スクリプトは次のようになっております。
1 レコードのエクスポート[ダイアログあり:オフ;フォルダー作成:オフ;「$タイムスタンプ」;Unicode16(UTF-16)]
2 変数を設定[タイムスタンプ;値:"file:" & Filter ( Get ( タイムスタンプ ) ; "0123456789" ) & " 完了データ .xlsx"]

また、念のため、下記を試してみました。
①出力ファイルパスを「file:完了データ.xlsx」とした場合は、完了データという名称のエクセルファイルが予想通り出力されます。
②出力ファイルパスを「$タイムスタンプ」として、変数の設定の 名前:「$タイムスタンプ」 値:「”file:完了データ.xlsx”」とした場合は、上記と同様のエラー表示となります。(・・・ファイル名を変更、・・・)

本当にお忙しいところ申し訳ありませんが、ご教授いただけますと幸いです。

#6 2024-01-15 13:20:17

チポ
Member

Re: エクスポート時のファイル名にタイムスタンプを付与

スクリプトの順が逆です。

まず、
変数を設定して、
その変数を使ってファイルパスを作製

この手順ですよ。

Offline

#7 2024-01-15 13:21:27

Shin
Member

Re: エクスポート時のファイル名にタイムスタンプを付与

先に変数を設定しましょう。
また、相対パスで指定すると、現在のデータベースを同じディレクトリーへ保存されるので、スタンドアロンで検証しているときにはいいのですが、実運用になると同じディレクトリーにデータベースの実体ファイルがあるとなにかと危険かと思います。できれば、デスクトップとか書類フォルダーとかに保存される方がいいのでは。

Offline

#8 2024-01-15 14:16:14

red
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

チポ様、Shin様

スクリプトの1と2を逆にしたら、出来ました。
本当にありがとうございました。
確かに考えると逆ですよね。思い込みは怖いですね。

#9 2024-01-19 07:15:56

red
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

再開してすみません。

当初は、ファイルメーカー本体と同じ場所に保管しようと考えていたのですが、やはり見にくくなるため、保管場所を変更したいと思いました。
保管したい場所は次のとおりです。
C:\Users\ユーザー名\Desktop\FM\完了データ\年月
(ユーザー名は半角英字で複数のパソコン利用、年月は202401等エクスポート時点の年月)

そこで、下記のように設定しましたが、次のエラー表示が出ました。
→「20240114211520 完了データ .xlsx」をこのディスク上に作成できませんでした。ファイル名を変更、ディスクの空き容量を増加、ロック解除、または他のディスクを使用してください。

名前:$タイムスタンプ
値:"file:" & Get ( デスクトップパス ) & "/FM/完了データ/" & Left ( Filter(Get(タイムスタンプ);(1234567890));6) &  "/" & Filter(Get(タイムスタンプ);(1234567890)) & "完了データ.xlsx"

お忙しいところ恐縮ですが、教えていただけないでしょうか。
よろしくお願いいたします。

#10 2024-01-19 07:46:20

Shin
Member

Re: エクスポート時のファイル名にタイムスタンプを付与

$タイムスタンプ 変数の中身を見てみましょう。

Offline

#11 2024-01-19 09:22:40

red
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

Shin様

ありがとうございます。
データビューワーを使い、見てみました。
式:"file:" & Get ( デスクトップパス ) & "FM/完了データ/" & Left ( Filter(Get(タイムスタンプ);(1234567890));6) &  "/" & Filter(Get(タイムスタンプ);(1234567890)) & "完了データ.xlsx"
値:file:/C:/Users/ユーザー名/Desktop/FM/完了データ/202401/20240114211520完了データ.xlsx
となりました。どこが問題か分かりませんでした。

比較のため、ファイル名について、計算式を使わず次のとおり 202401 としたら、202401フォルダーの中に無事エクスポートされました。
式:"file:" & Get ( デスクトップパス ) & "FM/完了データ/202401/" & Filter(Get(タイムスタンプ);(1234567890)) & "完了データ.xlsx"
データビューワーで見ると、値は上記と同じでした。

このような結果でしたので、何が問題か分からず困っています。
お手数ですが、ご教授いただけないでしょうか。

#12 2024-01-19 10:01:07

チポ
Member

Re: エクスポート時のファイル名にタイムスタンプを付与

質問を見ただけで、検証していません。
間違っていましたらご容赦を。

file:
から始まるのは相対パスで、
それ以降を絶対パスを書いていますよね。
それかも。。

エクスポート先に仮の
.xlsx
を置いておいて、
エクスポートのパス指定でそのファイルを指定すると、
そのパスが分かりますよ。

Offline

#13 2024-01-19 10:07:22

himadanee
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

今日のタイムスタンプになってないのは変では?

計算式をコピペして実行してみましたが、問題なくエクスポートされました。
「フォルダを作成」のオプションは指定してますか?
フォルダを固定値にしただけでエラーが出ないということは、フォルダのアクセス許可がないとかでもないし、謎ですね。

#14 2024-01-19 10:39:35

red
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

himadenee様
ありがとうございます。
「フォルダを作成」がオフになっておりまして、オンにしましたら無事エクスポートされました。

なお、今日のタイムスタンプになっていないのは、上の質問の時に例を記載して、その例を引き継いでいるため、再度注意書きをするとややこしくなると思い、敢えて省略しています。
分かりにくくてすみません。


チポ様
ありがとうございます。
そのようなパスの調べ方もあるのですね。勉強になりました。


皆様、お忙しいところご丁寧に教えていただき、本当に感謝しております。

#15 2024-01-19 10:58:08

himadanee
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

??解決したならいいですが、
>比較のため、ファイル名について、計算式を使わず次のとおり 202401 としたら、202401フォルダーの中に無事エクスポートされました。
この時点でフォルダができてるので、その後で実行すれば「フォルダの作成」オプションは関係ないはずですが...

OSの環境設定によっては、フォルダが202411とかになる可能性はあるのかな。(01月でなく1月)
私のとこでは月には0がついてますが時は09時でなく9時になってました。

#16 2024-01-19 11:37:27

チポ
Member

Re: エクスポート時のファイル名にタイムスタンプを付与

相対パス、絶対パス
は関係なかったですね-_-

日付、時刻
のデータとしての値はOSの設定に依存します。
OSによって
01月
1月
と変わることがありますね。

ですから、複数のOSで使う場合は、例えば
  Year ( 日付 ) * 10000 + Month ( 日付 ) *100 + Day  ( 日付 )
のようにしたほうがいいでしょう。

Offline

#17 2024-01-19 12:55:23

red
Guest

Re: エクスポート時のファイル名にタイムスタンプを付与

チポ様、himadanee様

ありがとうございます。
エラーが出ると困るので、チポ様に教えていただいた方法を検討しました。
また、himadenee様と同様、時間は09時ではなく9時になってしまい、解決方法が見つからず悩んでいたところでした。
そこで、お二人のアドバイスをもとに次のとおり考えましたら、問題なくエクスポートされました。

Year ( Get(日付) ) * 10000000000 + Month ( Get(日付) ) * 100000000 + Day ( Get(日付) ) * 1000000 + Hour ( Get ( 時刻 ) ) * 10000 + Minute ( Get(時刻) ) * 100 + Seconds ( Get(時刻) )

これでよいかと思っていますが、もっとシンプルな方法があれば教えていただけますと幸いです。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 559.39 KiB (Peak: 580.3 KiB) ]