みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMS17とFMP17でWindows環境、ServerはMACMiniの構成です。
メーカー名と製品名が混在したフィールド(名前はメーカー)があります。
メーカー名と製品名の間はスペースが入っています
これを2つのフィールドに分けます。
そこで、新しい製品名フィールドに下記の計算式をつくりました
メーカー - Left ( メーカー ; Position ( メーカー ; " " ; 1 ; 1 )-1)
ところが、製品名にテキストがふくまれていても数字だけになってしまいます。
新しい製品名フィールドの計算フィールドはテキストにしています
なにが間違っているのでしょうか。よろしくお願いします。
Offline
再現しませんね。
フィールドの定義をもう一度見直してみてください。
最近は、スペース区切りのテキストを分けるときは、
GetValue ( Substitute ( テキスト ; " " ; ¶ ) ; 1 )
が流行です。数字を2にすると2個目、.... が取得できます。
Offline
計算結果が数字タイプなのでは?
Offline
メーカーフィールドが数字なのでは。
フィールドや計算結果はテキストにしています。
Offline
Substitute ( テキスト ; " " ; ¶)でスペースを改行に変更するわけですね。で、1行目は空白の前の部分になりました。しかし、GetValue ( Substitute ( テキスト ; " " ; ¶ ) ; 2 )では、空白の後ろの部分になりません。スペースは一つしかありませんのでね。今回抽出したいのは後ろです。それでテキスト - GetValue ( Substitute ( テキスト ; " " ; ¶ ) ; 1) としました。
でも、数字だけになってしまうのはかわりありませんでした。
Offline
ターゲットにしているフィールドは、正しいですか?
Offline
メーカー - Left ( メーカー ; Position ( メーカー ; " " ; 1 ; 1 )-1)
って最初の部分は頭が自動的に無視してたけど、これが全部で計算式なんですね...
メーカーから引き算してるじゃないですか。数値演算したら結果は数字になります。
スペースが1個でその後ろを得るのは、改行に置換すればリストの2番目なので、Shinさんの計算式でできるはず。フィールド名が「テキスト」なのは、テスト用の別ファイルでやってるからなのかな?
テキスト ━ GetValue ( Substitute ( テキスト ; " " ; ¶ ) ; 1) としました。
でも、数字だけになってしまうのはかわりありませんでした。
嗚呼!!
式の構文が体をなしていませんよ!
テキストに数値演算子(-)は使えません。
この場合、FMは式を数値演算式と判断し、数値計算の数値結果を返します。
2項目の製品名を求める式は、
GetValue(Substitute(テキスト; " "; ¶); 2)
で良いはずです。
Offline
なるほど、スペースの後ろを抽出するのにマイナスをつかっています。これだと算数になるわけですね。
Shinさんの計算式でスペースを改行に変えたら、後ろの部分は2行目になります。実際のフィールド名は「メーカー」です。
中身は「あいうえお スペース abc0123]というデータです。
これが、
あいうえお
abc0123
とSubstitute関数で変わります。
でもGetValue関数で2つ目をしていしてもabc0123が抽出されません
Offline
>#10『GetValue関数で2つ目をしていしてもabc0123が抽出されません』
じゃ、「あいうえお abc0123」から一体「何?」が抽出されますか?
Offline
できました。失礼しました。
再度作り直したら、期待通りのスペースの前と後ろを分けることができました。
Offline
Pages: 1
[ Generated in 0.009 seconds, 8 queries executed - Memory usage: 521.21 KiB (Peak: 525.75 KiB) ]