みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FM V12の初心者です。
ファイル名を入力すると計算式で型式と改定を表示させています。
型式フィールド: GetValue(Substitute(GetValue(Substitute(ファイル添付;".";¶);1);["_";¶];["改";¶]);2)
改定フィールド: GetValue(Substitute(GetValue(Substitute(ファイル添付;".";¶);1);["_";¶];["改";¶]);3)
正しい表示です
ファイル名 :A4-123_ST-45-67-C1改8.tif
型式 : ST-45-67-C1
改定 :8
ところがファイル名に「.」が入ったことにより間違った表示になってしまいました。
ファイル名には従来通り「.」が入らないのもあります。
どの様に修正すれば宜しいのでしょうか。
ファイル名 :A4-123_ST-4.5-67-C1改8.tif
型式 : ST-4 (正しくはST-4.5-67-C1)
改定 : 空白 (正しくは8)
宜しくお願い致します。
最後の「.」までを処理対象として扱えばよいのでは?
Let ( [
~text = ファイル名
] ;
GetValue ( Substitute ( Left ( ~text ; Position ( ~text ; "." ; Length ( ~text ) ; -1 ) - 1 ) ; [ "_" ; "¶" ] ; [ "改" ; "¶" ] ) ; x )
) // Let
x は抜き取り位置なので、
ファイル名は 1 、形式は、 2 、改定は 3 です。
表示が見切れたのでタグ変えました。
Last edited by Moz (2016-03-24 15:54:21)
Offline
最後の「.」までを処理対象として扱えばよいのでは?
Let ( [
~text = ファイル名
] ;
GetValue ( Substitute ( Left ( ~text ; Position ( ~text ; "." ; Length ( ~text ) ; -1 ) - 1 ) ; [ "_" ; "¶" ] ; [ "改" ; "¶" ] ) ; x )
) // Letx は抜き取り位置なので、
ファイル名は 1 、形式は、 2 、改定は 3 です。
表示が見切れたのでタグ変えました。
回答頂き有難う御座います。
~text の入力方法がわかりません。
演算子や関数にもなくヘルプでも検索できません。
コピペしても入力できませんか?FileMaker ではなくPCの操作の基本です。
キーボードの「へ」を Shift 押下で入力できると思いますが(JISキーボードの場合)
~text は Let 関数内の変数を分かりやすくするために 「~」を付けているだけですから他の文字に置き換えても動作します。
ファイル名 の部分や x などもご自身の環境に合わせて適宜変更して下さい。
ファイル名は 1 というのは余計でしたね。失礼しました。
Let 関数
http://www.filemaker.com/help/12/fmp/jp … 33.16.html
何度も同じフィールドへの参照が発生するのを省略するために ~text に値を格納しています。
Offline
GetValue ( Substitute( ファイル添付 ;[ ".";¶ ];[ "_";¶ ];[ "改";¶ ] ); X )
にして、X が2ならば型式、3ならば改定が得られます。
Mozさんの式は、ファイル名に . が無い時にも大丈夫かな。
Offline
それではまた「.」を改行しちゃってますよ。
型式は
GetValue ( Substitute ( ファイル添付 ; [ "_" ; ¶ ] ; [ "改" ; ¶ ] ) ; 2 )
改定は
GetValue ( Substitute ( GetValue ( Substitute ( ファイル添付 ; [ "_" ; ¶ ] ; [ "改" ; ¶ ] ) ; 3 ) ; [ "." ; ¶ ] ) ; 1 )
とすれば、拡張子の有無を問いません。
Offline
あぁ、下の例でも正しく出したい、という事でしたか。
GetValue ( Substitute( ファイル添付 ;[ ".tif";¶ ];[ "_";¶ ];[ "改";¶ ] ); X )
としておけば良いでしょうね。拡張子がほかにもあるのでしたら、それも置換してしまうと良いです。
Offline
ご指摘の通り私の計算式では「.」がないときはダメです(汗)
ファイル形式問わず使えたほうが便利な気がしますね。
Offline
皆様
大変有難う御座います。
型式の計算式で試しました。
GetValue ( Substitute ( ファイル添付 ; [ "_" ; ¶ ] ; [ "改" ; ¶ ] ) ; 2 )
は「改」が無い場合は ST-4.5-67-C1.tif とtifがつきます。
GetValue ( Substitute( ファイル添付 ;[ ".tif";¶ ];[ "_";¶ ];[ "改";¶ ] ); X )
は ST-4.5-67-C1 と表示し問題ありません。
今回対象外ですが他グループのファイルでjpgやpdfが混在しているのが見つかりました。
将来の事を考えると同じ式で対応出来れば助かるのですが。
「改」が無いものが存在するというのが初出だと思われるのですが......
ここまでは「改」という文字に基づいて拡張子が無くても大丈夫な式まで想定して皆さんが考えて下さっています。
将来のことを考えることも大切ですがルールを整理しては如何でしょう。
ルールがあやふやの場合はすべてに対応することは難しいでしょう。
これまでの流れで分かってきたこと
・型式や改定には拡張子は含めない
・型式はファイル名のうち「_」以降「改」の手前までの文字列
・改定はファイル名の「改」以降の文字列
よく分からないこと
・拡張子がないファイルが存在する?
・「改」が付かないファイルが存在する?
・「_」が付かないファイルもあるのではないか?
・「改」が付かないファイルの場合の改定の扱い→空白なのか?
Last edited by Moz (2016-03-29 13:31:02)
Offline
GetValue ( Substitute( ファイル添付 ;[ ".tif";¶ ];[ ".jpg";¶ ];[ ".pdf";¶ ];[ "_";¶ ];[ "改";¶ ] ); X )
と言う風に、拡張子を増やしていけば取りあえずは逃げる事が出来ますが。
Offline
GetValue ( Substitute( ファイル添付 ;[ ".tif";¶ ];[ ".jpg";¶ ];[ ".pdf";¶ ];[ "_";¶ ];[ "改";¶ ] ); X )
と言う風に、拡張子を増やしていけば取りあえずは逃げる事が出来ますが。
有難うございます。
今回はこちらの計算式で解決しました。
同じファイルが複数ありまして、計算式を変えても上手くいかずパターンが複数あるとこが分かりました。
今後は現状把握を事前にきちんと行います。
Pages: 1
[ Generated in 0.013 seconds, 8 queries executed - Memory usage: 526.74 KiB (Peak: 547.65 KiB) ]