みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります。
初心者です。なにとぞ宜しくお願い致します。
FMpro16を使用しています。
社員向けのアンケートを作成しています。
質問に対してのフィールドをチェックボックスセットで選択していく方式です(複数選択)。
ほとんどの質問がチェックボックスセットで解答するような形ですが、最後の方にテキストでコメントを書くところもあります。
質問は全部で20問程度でそれほど多くはありません。
全ての質問に回答したら、確認のボタンを押して別のレイアウトにとんで、今までチェックした項目の一覧を表示させます。
それで問題ないなら印刷し終了します。
そこで質問ですが、
チェックボックスセットで選択した項目を、別のレイアウトのフィールドにテキストで表示させるにはどうしたらよいのでしょうか?
一問につきチェックボックスセットで解答できる項目は最大で20個ぐらいあります(少ない所では2個)。
それをすべてテキストで表示させたいです。
社員には簡単にチェックするだけで解答できるようにしたいので、チェックボックスセットを使えばいいかなと思っているのですが、
最後の確認の所でテキストで表示させる方法が分からなくなってしまいました。
初歩的な質問かもしれませんが、なにとぞよろしくお願いいたします。
Offline
同じフィールドを、編集ボックスで表示させればいいですよ。
ただし、その中のテキストは、チェックした順になっています。それを既定順に並べ直したい時には、FilterValues() を使います。
Offline
返事が遅くなりまして誠に申し訳ございません。
早速の回答ありがとうございした。
指摘された通りやってみるとその通り表示されました。
追加で質問なんですが、
指摘されたとおりにやると
札幌市(北海道)
仙台市(宮城県)
東京(東京都)
大阪市(大阪府)
名古屋市(愛知県)
広島市(広島県)
福岡市(福岡県)
といったように縦に改行されて表示されてしまいます。
フィールドは、縦に短く、横に長く設定してあり、そのフィールドのサイズにうまく収まるようにしたいのですがどうやればよろしいでしょうか?
例えば、以下のように表示させたいです。
札幌市(北海道) 仙台市(宮城県) 東京(東京都) 大阪市(大阪府)
名古屋市(愛知県) 広島市(広島県) 福岡市(福岡県)
インスペクタの設定などで操作すれば、うまく表示されるのかなと思い、試してみたのですがうまくいきません。
なにかいい方法などないでしょうか。
よろしくお願いいたします。
Offline
改行区切りですので、そのままではどうしようもありません。
Substitute ( text ; ¶ ; " " )
という計算フィールドで表示させるといいでしょう。
Offline
Shin様、回答いただきまして誠にありがとうございます。
一度やってみようと思います。
Offline
お世話になります。
ようやく、
Substitute ( text ; ¶ ; " " )
を使用してテストしてみました。
すると、希望通り、
札幌市(北海道) 仙台市(宮城県) 東京(東京都) 大阪市(大阪府)
名古屋市(愛知県) 広島市(広島県) 福岡市(福岡県)
という風に横書きで表示されるようになりました。
しかし、チェック項目によっては、
札幌市(北海道) 仙台市(宮城県) 東京(東京都) 大阪
市(大阪府) 名古屋市(愛知県) 広島市(広島県) 福
岡市(福岡県)
上記のように、単語の途中で改行されることがあります。
これを改善させたいです。
なにとぞご教授ください。
よろしくお願いいたします。
Offline
3項目ごとに改行、とかの希望でしたら、
List ( Substitute ( MiddleValue ( text ; 1 ; 3 ) ; ¶ ; " " ) ; Substitute ( MiddleValue ( text ; 4 ; 3 ) ; ¶ ; " " ) ;... )
の様な式を、再帰で作るとか、繰り返しフィールドで計算するとかすればいいでしょうが、項目数が文字列に依存して不定でしたら、文字を数えていく必要がありますね。半角のカッコが含まれているので、フォントによってはうまくいかないかもしれません。
項目数で改行
Let (
[
$txt = Substitute ( text ; ¶ ; " " ) ;
$n = Div ( ValueCount ( text ) - 1 ; 3 ) ;
$fnc =
"Case ( $n = 0 ; $txt ;
Let(
[
$pos = Position ( $txt ; \" \" ; 1 ; $n * 3 ) ;
$txt = Replace ( $txt ; $pos ; 1 ; \¶ ) ;
$n = $n - 1
]; Evaluate ( $fnc )
)
)"
] ;
Evaluate ( $fnc )
)
文字数で改行
Let (
[
$txt = Substitute ( text ; ¶ ; " " ) ;
$len = 17 ; // 1行文字数
$t = "" ;
$fnc =
"Case ( Length ( $txt ) ≤ $len ; List ( $t ; $txt ) ;
Let(
[
$t0 = Left ( $txt ; $len + 1 ) ;
$pos = Position ( $t0 ; \" \" ; 1 ; PatternCount ( $t0 ; \" \" ) ) ;
$t = List ( $t ; Trim ( Left ( $txt ; $pos ) ) ) ;
$txt = Trim ( Right ( $txt ; Length ( $txt ) - $pos ) )
]; Evaluate ( $fnc )
)
)"
] ;
Evaluate ( $fnc )
)
Last edited by Shin (2018-04-09 12:13:28)
Offline
Shin様 ありがとうございます。
また回答が遅くなりまして申し訳ありません。
項目数で改行のパターンでようやくうまくいきました。
分かり易く丁寧に教えていただきまして誠にありがとうございます。
それと新たに質問なんですが、
社員にチェックボックスセットを使用してアンケートしてもらって、
全ての質問に回答したら、確認のボタンを押して別の一覧用レイアウトにとんで、今までチェックした項目の一覧を表示させているのですが、
人によっては、答えなくてもよい質問が存在しています。
その答えなくてもよい質問を一覧用レイアウトにした場合に、その質問に答えなかった人は、その答えなくてもよい質問に対する回答欄が空欄になってしまい、見栄えが良くありません。
(例えば、「質問1」フィールドにチェックボックスセットで、○営業 ○サービス ○管理 ○総務 ○その他 とチェックするようになっており、
営業にチェックした人のみ、次の質問の「質問2」フィールドに答えます。全ての質問に回答した後、「確認」ボタンを押して、今までチェックした項目の一覧画面に移った時に
先ほどの「質問1」フィールドの回答が「回答1」フィールドに反映されます。同様に、営業と選択した人だけが答えた「質問2」フィールドの回答が反映される「回答2」フィールドでは、
営業と選択した人はその答えが反映されますが、営業と選択していない人は空欄になっています。)
確認するための一覧用レイアウトで、チェックボックスセットでチェックが入っていない場合、回答フィールドを上に詰めて一覧で表示させるようにしたいです。
以上、分かりにくい説明で申し訳ございませんが、なにとぞよろしくお願いたします。
Offline
sスライド機能を使って、プレビューすればいいです。
Offline
ありがとうございます。
調べて試してみたいと思います。
Offline
お世話になります。
スライド機能を使用してみましたがうまくいきません。
具体的なやり方を自分なりに調べたのですが何が悪いのかわかりません。
アドバイスをお願いいたします。
フィールド①
フィールド②
フィールド③
フィールド④
フィールド⑤
上記のような状態で、フィールド①~④はチェックボックスセットで選択したものが反映される状態、フィールド⑤はテキストでコメント入力です。
この状態で、例えば
フィールド①→空欄
フィールド②→空欄
フィールド③→テキスト入力あり
フィールド④→空欄
フィールド⑤→テキスト入力あり
上記のような場合、
フィールド③
フィールド⑤
空欄
空欄
空欄
のように空欄を除いて上にスライドさせたいと思っています。
FileMakerのヘルプで(印刷時の余分なスペースの除去)を調べて、次の説明通りにやってみました。
>スライドオプションを設定するには、次の操作を行います。
>メモ スライドオプションを設定したときの効果は、プレビューモードと印刷でのみ確認できます。ブラウズモードでは確認できません。
>1. レイアウトモードで、オブジェクトが左や上方向にスライドできるように、スライドするオブジェクトと左端(または上端)のフィールドの両方を選択しておきます。
>2. レイアウトバーのインスペクタ インスペクタボタン をクリックし、[位置] をクリックします。
>3. [スライドと表示] 領域で、スライドオプションを選択します。
・上端のフィールド①とフィールド⑤を選択します。
・インスペクタボタン→[位置]を選択し [スライドと表示] →空行の削除→上方へスライド→上の全てのオブジェクトを対象を選択。
上記のように設定した所、希望した通りになりませんでした。
要望通りにするにはどのような設定をすればよいのでしょうか?
よろしくお願いいたします。
Offline
すいません、Shin様、もう一つ教えていただきたいです。
3項目ごとに改行、とかの希望でしたら、
List ( Substitute ( MiddleValue ( text ; 1 ; 3 ) ; ¶ ; " " ) ; Substitute ( MiddleValue ( text ; 4 ; 3 ) ; ¶ ; " " ) ;... )
の様な式を、再帰で作るとか、繰り返しフィールドで計算するとかすればいいでしょうが、項目数が文字列に依存して不定でしたら、文字を数えていく必要がありますね。半角のカッコが含まれているので、フォントによってはうまくいかないかもしれません。項目数で改行
Let ( [ $txt = Substitute ( text ; ¶ ; " " ) ; $n = Div ( ValueCount ( text ) - 1 ; 3 ) ; $fnc = "Case ( $n = 0 ; $txt ; Let( [ $pos = Position ( $txt ; \" \" ; 1 ; $n * 3 ) ; $txt = Replace ( $txt ; $pos ; 1 ; \¶ ) ; $n = $n - 1 ]; Evaluate ( $fnc ) ) )" ] ; Evaluate ( $fnc ) )
文字数で改行
Let ( [ $txt = Substitute ( text ; ¶ ; " " ) ; $len = 17 ; // 1行文字数 $t = "" ; $fnc = "Case ( Length ( $txt ) ≤ $len ; List ( $t ; $txt ) ; Let( [ $t0 = Left ( $txt ; $len + 1 ) ; $pos = Position ( $t0 ; \" \" ; 1 ; PatternCount ( $t0 ; \" \" ) ) ; $t = List ( $t ; Trim ( Left ( $txt ; $pos ) ) ) ; $txt = Trim ( Right ( $txt ; Length ( $txt ) - $pos ) ) ]; Evaluate ( $fnc ) ) )" ] ; Evaluate ( $fnc ) )
上記の「項目数で改行」を使用しているのですが、チェックボックスセットで選択がない場合、「?」表示になってしまいます。
チェックボックスセットで選択がない場合、空欄のままにしておきたいのですが、どのようにすればよいのでしょうか?
お忙しいとは思いますが、なにとぞご教授ください。
よろしくお願いいたします。
Offline
式そのものは触らずに、最後を、
Case ( IsEmpty ( text ) ; "" ; Evaluate ( $fnc ) )
にしておくと簡単でしょう。
また、考え方を変えて、
Let (
[
$txt = text & ¶ ;
$n = ValueCount ( text ) ;
$fnc =
"Case ( $n = 0 ; $txt ;
Let(
[
$pos = Position ( $txt ; \¶ ; 1 ; $n ) ;
$txt = Case ( Mod ( $n ; 3 ) ; Replace ( $txt ; $pos ; 1 ; \" \" ) ; $txt ) ;
$n = $n - 1
]; Evaluate ( $fnc )
)
)"
] ;
Evaluate ( $fnc )
)
も面白いでしょう。
スライド機能は、解決しましたか? おそらく現物をみないと解決しようが無いと思います。
Last edited by Shin (2018-04-24 10:17:22)
Offline
早速の返信ありがとうございます。
おかげさまでうまくいきました。
スライド機能は、ちょっと難しそうなので先送りして、時間がある時にでもじっくりやろうと思います。
おっしゃる通り私の文字だけでの説明では、うまく伝えられなかったので助言のしようがないですね。
申し訳ありません。
この度は誠にありがとうございました。
また何かありましたら宜しくお願い致します。
Offline
Pages: 1
[ Generated in 0.010 seconds, 9 queries executed - Memory usage: 564.22 KiB (Peak: 584.76 KiB) ]