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

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

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

You are not logged in.

Announcement

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


#1 2018-03-02 13:17:53

ttrd
Member

フィールド内、特定行以降の取得

お世話になります。
GetValue関数の使い方で、いい方法を知っている方いらっしゃいましたらご教授ください。

現在、Filemakerの他DBファイルからExecuteSQL→VirtualListを使ってデータ取得しようと考えています。
対象データをExecuteSQLで取得し、GetValue(RowData)で展開したいです。
単純項目であれば問題ないのですが次の状態の場合はどのようにすればよいでしょう

環境
filemaker14
   windows7

対象データ
Filemaker 他DBファイル

取得対象
・氏名(1行)
・住所(1行)
・電話番号(1行)
・接客ノート(複数行、文章内改行あり)

最後の接客メモ内にある改行が悪さをしていて、綺麗にVirtualListができません。
しかし、出力時にはノート内に改行がある状態で出力したいです。

方法としてはどのような方法があるでしょうか。
私なりに考えた方法としてはSQL実行時に接客ノート内の改行を仮文字に置換してデータ取得、Getvalue(RowData)後に改行データへ置換する。というものですがFilemaker上で可能でしょうか?

Last edited by ttrd (2018-03-02 13:41:30)

Offline

#2 2018-03-02 13:37:23

Moz
Member

Re: フィールド内、特定行以降の取得

バージョンと環境を書きましょう。

Virtual List のことを指していると思いますが......
データソースが不明なので SQL も SQL実行 なのか ExecuteSQL なのかも分かりませんね。
もうちょいと FileMaker の言葉で書くとアドバイスが貰いやすいと思いますよ。

考え方として フィールドの区切りは"||"レコードの区切りは"¶"以外の記号にします。
取得結果の改行も何らかの記号に置換して SQL で取得すれば良いでしょう。

レコード区切りまでを抽出すればレコード単位で取得でき、
そこからフィールド区切りでフィールドの値を取得できます。
最後に改行を本来の改行に戻せば改行も再現できますね。

Last edited by Moz (2018-03-02 13:38:34)

Offline

#3 2018-03-02 13:44:06

ttrd
Member

Re: フィールド内、特定行以降の取得

Moz様

早速の返信ありがとうございます。
元DBのほうで”接客ノート"フィールドの内容を変更したフィールドを用意し、それをExcuteSQLで取得→展開後にSubstitute ( GetValue ( RowData ; 10 ) ; "^改行-" ; "¶" )のように置換すればよいのでしょうか?
試してみたら一応それで狙い通りの動きとなりましたが元DBにSQL用のフィールド作成をしなければならないため、出来れば避けたいです。

Offline

#4 2018-03-02 14:19:25

Moz
Member

Re: フィールド内、特定行以降の取得

バージョンと環境を書きましょう。

元DBというのは FileMaker 以外のデータベースですか?
ExecuteSQLが利用できているのであれば FileMaker または ESS に対応したDBということでしょうが......

ExecuteSQLではフィールドおよびレコードの区切りを自由に設定できますから、
そのいずれもが改行以外なら元のDBをいじる必要はありません。

ExecuteSQLの結果は改行区切りという概念に囚われなければOKです。
要はフィールドとレコードに分解できればいいわけですから。

例えば
Substitute ( ExecuteSQL ( "SELECT * FROM Table" ; "||" ; "||br||" ) ; [ "¶" ; "|フィールド内改行|"] ; [ "||br||" ; "¶" ] )
この場合は ExecuteSQL では フィールド区切りが "||" でレコード区切りが "||br||" です。
フィールド内での改行は改行のままなので改行区切りとしてはNGですが、
Substitute で フィールド内の改行を "|フィールド内改行|" という文字列に変えています。
その次に "||br||" を 改行 に戻していますから、1行1レコードという形に成形されます。
あとは1行ずつをフィールド区切りである "||" を目印に展開するだけです。

Last edited by Moz (2018-03-02 14:25:11)

Offline

#5 2018-03-02 15:06:25

ttrd
Member

Re: フィールド内、特定行以降の取得

Moz様

お世話になります。
1レス目を更新しておりましたが、その旨を書き忘れていました。申し訳ありません。

環境
Filemaker14
   windows7

対象データ
Filemaker 他DBファイル

ご丁寧にありがとうございます。
試してみます。

Last edited by ttrd (2018-03-02 15:06:55)

Offline

#6 2018-03-02 17:17:33

ttrd
Member

Re: フィールド内、特定行以降の取得

Moz様

理想通りの動きとなりました。
ありがとうございました!

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 557.65 KiB (Peak: 581.66 KiB) ]