【最大10000ポイント】当たる!!質問投稿キャンペーン!

Filemaker10の初心者です。
テキストの内容をフィールドの値で置換する方法がわからなくて困っています。

データ変換用のテーブルのフィールドには
連番_役名_役者(各フィールドの名前)
1_ヴァンプ将軍_山田ルイ53世(各フィールドのデータの内容)
2_サンレッド_高木俊
3_1号_ひぐち君」

テキスト入力画面に、
「ヴァンプ将軍、1号、サンレッド」と入力して

スクリプトを実行させると、
テキストが「山田ルイ53世、ひぐち君、高木俊」
と変換されるようにしたいのですが、
スクリプトでフィールドの各レコードのデータの参照の仕方がわかりません。

どうか教えてください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

あ、一部間違ってますね。


フィールド設定 [ 別::結果; 別::結果 & 元::役名 & "," ]
ではなく
フィールド設定 [ 別::結果; 別::結果 & 元:役者 & "," ]
です。役名→役者
    • good
    • 0

そのまま行くのですかぁ・・


でしたら、
1.結果を表示するテキストフィールド名を「結果」とする。
2.結果を表示するテーブル(仮名「別」)でグローバルテキストフィールドを作って、
 名前を「G」とする。
3.この「G」とデータ変換用のテーブル(仮名「元」)の「役名」をリレーションする。
4.返還前のテキストを入力するフィールドの名前を仮に「T」とする。
5.次のスクリプトを作って実行する。「別::結果」等は別テーブルの結果フィールドと
 いう意味です。

変数を設定 [ $p; 値:Substitute (T ; "," ; ¶ ) ]
変数を設定 [ $n; 値:1 ]
Loop
 フィールド設定 [ G; MiddleValues ( $p ; $n ; 1 ) ]
 フィールド設定 [ 別::結果; 別::結果 & 元::役名 & "," ]
 変数を設定 [ $n; 値:$n+1 ]
 Exit Loop If [ $n=ValueCount ( $p )+1 ]
End Loop
フィールド設定 [ 別::結果; Replace ( 別::結果 ; Length ( 別::結果 ); 1 ; "" ) ]

動作的には
結果を表示する別テーブル側に、元テーブルの「役名」フィールドと照合する「G」に
入力したテキストの最初の語句を入れて、その関連フィールドである「元テーブル::役者」
を結果フィールドにフィールド設定する。
これを全語句に渡ってループする。
    • good
    • 0

テキストを入力するのは別テーブルですか、自己テーブルですか?


入力するテキストは3個と決まっているのですか?
いずれにしても出来ないことは無いでしょうけど、「ヴァンプ将軍、1号、サンレッド」
というデータはデータベースとしては不向きです。入力フィールドも複数に分けるべき
でしょう。それを連結すればいいわけですから。

この回答への補足

回答ありがとうございます。

テキストを入力するのは別テーブルです。
入力するテキストの数が決まっていなく、
また、入力して変換するデータの数が決まっていないので、このような形にしたかったのですが…。

Substitute関数で置換するテキストを(別テーブルの役名の3番目のテキスト)と指定して拾えれば、嬉しいのですが、その方法がさっぱりわかりません。

教えていただけたら助かります。

補足日時:2010/04/01 17:48
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QFileMakerで、フィールドの値が空欄だった時に0を返す計算式

ファイルメーカーで、フィールドの値が空欄だった場合に
数値の0を返し、"空欄ではなかった時はそのままの値を返す"
計算式を教えてください。

IsEmptyを使ってみたのですがうまく行きませんでした。

FileMaker Pro7を使っています。
よろしくお願いします。

Aベストアンサー

結果=Case(IsEmpty(そのフィールド);0;そのフィールド)

QファイルメーカーでCountifの様な方法ありますか?

はじめまして
初めての質問です。

環境はWinXP ファイルメーカーpro7です。
テーブル「社員名簿」のレコードからテーブル「在籍人数」にcountifの様な方法で、値を返せればと思っています。

まず、社員名簿というテーブルがあります。
フィールドが
「エリア」(値一覧で選択、[東日本、中部、西日本、本社])
「部署」(値一覧で選択、[管理本部、事業本部、CS、BS]など)
「雇用形態」(値一覧で選択、[正社員、試験社員、契約社員]など)
「職責」(値一覧で選択、[部長、マネージャー、一般]など)
「性別」(男・女)
などです。

在籍人数テーブルは表の様に表すのが希望です。
例えば
「東日本」の「CS」部で「正社員」のうちの「一般」社員で「男」を
社員名簿履歴からカウントするフィールドを作成
上記のような感じで部署や雇用形態が違うフィールドをいくつも作成して最終的には合計人数を出したいのです。

エクセル的な考えでcountifを使用するつもりだったのですが、使えない事がわかり・・・。

ファイルメーカー初心者なので、なかなかいい方法が思いつかず困っています。

ぜひ、アドバイスお待ちしております。

はじめまして
初めての質問です。

環境はWinXP ファイルメーカーpro7です。
テーブル「社員名簿」のレコードからテーブル「在籍人数」にcountifの様な方法で、値を返せればと思っています。

まず、社員名簿というテーブルがあります。
フィールドが
「エリア」(値一覧で選択、[東日本、中部、西日本、本社])
「部署」(値一覧で選択、[管理本部、事業本部、CS、BS]など)
「雇用形態」(値一覧で選択、[正社員、試験社員、契約社員]など)
「職責」(値一覧で選択、[部長、マネージャー、一般]など...続きを読む

Aベストアンサー

集計結果を表にする時のレイアウトの自由度を考えると関連テーブルからリレーションを使った
計算がいいかも知れません。

在籍人数テーブルに社員名簿テーブルにあるフィールドを全部作ります。社員名簿テーブルには
重複のない社員IDなどというフィールドも必要です。

例えば、社員名簿テーブルと在籍人数テーブルの「エリア」と「部署」と「雇用形態」の3フィー
ルドとも等しいというリレーションを作って、とCount(社員名簿テーブル::社員IDフィールド)と
いう計算フィールドを定義します。

在籍人数テーブルの「エリア」と「部署」と「雇用形態」の各フィールドにそれぞれ「東日本」
「CS」「正社員」と入力するとその人数が出ます。

Qファイルメーカ 検索実行せずに該当するレコード数を知りたい

FM7です。

条件に合致したレコード数を知るために、現在は検索実行をした後に
Get(対象レコード数)
として求めていますが、検索実行をせずに知ることは出来ますか?

テーブルA
顧客-----地区名-----担当者
テーブルB
担当者---顧客数(計算 If テーブルAの担当者 = テーブルBの担当者 then 担当する顧客の数)

のような感じになると、ありがたいのですが。

Aベストアンサー

テーブルAとBを担当者でリレーションしてあってAは1レコードに顧
客一人と思っていいでしょうか。

ウチは5.5ですが、リレーション名が「担当」として
count(担当::顧客)
で出来てますよ。7でも同じだと思います。

Qファイルメーカー 一ヵ月後の日付をだすには?

入力日、タイプ:日付に2005/8/5と手動でいれたら、
有効期限(タイプ:日付)に自動で2005/9/5というように、入力日から一ヵ月後の日付を出すにはどのような計算式をいれたらよいのでしょうか?

参考書に載っていた
Date(Month(入力日)+ 1 ; Day(入力日); Year(入力日)という式を使うと
2005/08/01 と打ち込むと、2005/9/9 とでてしまいます。
2005/12/30の場合は、2006/1/1と出ます。
どうしたら、よいか教えてください。

Aベストアンサー

---------------------------------------------------
If ( Month ( Date ( Month ( 入力日 ) + 1 ; Day ( 入力日 ) ; Year ( 入力日 ) ) ) > Month ( Date ( Month ( 入力日 ) + 1 ; 1 ; Year ( 入力日 ) ) )
;
Date ( Month ( 入力日 ) + 1 + 1 ; 0 ; Year ( 入力日 ) )
;
If(Day ( Date ( Month ( 入力日 ) ; Day ( 入力日 ) + 1 ; Year ( 入力日 ) ) ) = 1
;
Date ( Month ( 入力日 )+1+1 ; 0 ; Year ( 入力日 ) )
;
Date ( Month ( 入力日 ) + 1 ; Day ( 入力日 ) ; Year ( 入力日 ) ))
)
------------------------------------------------------
フィールドタイプは「計算」で結果は「日付」です。

私が過去に他の方の回答に使用した式です。コピペで使えます。
検証は適当ですのでご自分でどうぞ。

---------------------------------------------------
If ( Month ( Date ( Month ( 入力日 ) + 1 ; Day ( 入力日 ) ; Year ( 入力日 ) ) ) > Month ( Date ( Month ( 入力日 ) + 1 ; 1 ; Year ( 入力日 ) ) )
;
Date ( Month ( 入力日 ) + 1 + 1 ; 0 ; Year ( 入力日 ) )
;
If(Day ( Date ( Month ( 入力日 ) ; Day ( 入力日 ) + 1 ; Year ( 入力日 ) ) ) = 1
;
Date ( Month ( 入力日 )+1+1 ; 0 ; Year ( 入力日 ) )
;
Date ( Month ( 入力日 ) + 1 ; Day ( 入力日 ) ; Year ( 入力日 ) ))
)
------...続きを読む

QFileMakerのcase関数の作り方

合計20個の条件(条件1~条件20)を詰め込んだ「case関数」を書いてみたところ、正常に結果を返してきてくれたのは最初の2つ(条件1、条件2)だけで、条件3以降は全て条件2の結果を返してきます。なぜでしょうか??
数十個に及ぶcase関数は、そもそも無理なのでしょうか? 記号の入れ方のコツをご指南ください。

Aベストアンサー

Case文の書き方が間違ってますね。
2行目以降も、計算式の内容が必要です。

あと、計算式は見やすいように以下のような表記にした方がいいですよ。
Case(
希望到着年月="2014年8";"August, 2014";
希望到着年月="2014年9";"September, 2014";
希望到着年月="2014年10";"October, 2014";
あとは同様に~~
)

Qファイルメーカー複数フィールドのコピー&ペースト

ファイルメーカPro8で複数のフィールド項目をコピーし別のテーブルを新規作成し、ひとつのテキストフィールドにペーストするスクリプト方法を教えてください。1つなら可能何ですが、・・・。

Aベストアンサー

ファイルメーカPro6までしか、使っていませんが、
スクリプトで、フィールド設定を使用しては、如何ですか?
まずは、フィールド定義で、一時作業用のグローバルフィールドをテキストタイプで新規に作成しておきます。
次に、スクリプトで、フィールド設定を使用します。
フィールド設定の指定フィールドを先ほど作った、グローバルフィールドにする。
(内容)指定としては、計算式で、コピペしたい複数のフィールドを & で繋げた物を指定します。

その次のステップとして、新規レコード作成

更に、もう一度、フィールド設定を使用します。
フィールド設定の指定フィールドをペーストしたいテキストフィールドにする。
(内容)指定としては、グローバルフィールド を指定する。

これでいけます。

QFileMakerで登録ボタンを作りたい

FileMaker8.5Advancedを使っています。
仮テーブルとマスタテーブルがあり、それぞれ同じフィールド構成です。
フィールドは
プライマリキー(シリアル値)
項目1
項目2
項目3
となっています。
入力者の入力間違いや、空のレコードがマスタテーブルに出来てしまうのを防ぐために、入力者に最初仮テーブルに入力させてその後マスタテーブルにルックアップでコピーしたいと思っています。
仮テーブルのレイアウトに各項目への入力フォームと[登録][キャンセル]というボタンを作成してあります。
ここで、仮テーブルからマスタテーブルへ、スクリプトでデータをコピーする方法が分かりません・・・。
ボタンに定義すべきスクリプト、各テーブル・フィールドに設定しなければならない項目を教えてください。

FMは使い始めてまだ日が浅く、用語も良く分かっていません。
どなたかお分かりになる方がいらっしゃいましたら是非よろしくおねがいいたします。

Aベストアンサー

 自分もあまり使いこなしていないので、自信がないのですが・・・。
 まず、仮テーブルですが、フィールドをすべてグローバルにしておきます。こうしないとリレーションを設定しないと<非関連テーブル>と表示されて入力できないはずです。
 フィールドのオプションから[データの格納]タブ、「グローバル格納(すべてのレコードに1つの値)を使用する」にチェックを入れておきます。
 これで、すべてのレイアウトに共通して使えるフィールドになります。

 また、スクリプトでのフィールドからフィールドへのデータのコピーですが、

計算結果を挿入(選択;コピー先フィールド;コピー元フィールド)

・・・です。
 でも、コピー先フィールドがレイアウト上にないと機能しません。
 表示させたくない場合は、枠を消して小さくするなり、フォントの色を調整するなり、入力不可にする(レイアウトモードで、フィールドを右クリックし、[フィールド/コントロール]→[動作]、「フィールドへの入力を許可する」のチェックをはずす)なり、工夫が必要です。

Qファイルメーカーの日付の検索

初心者です。お手間とらせます。ファイルメーカーで期間の検索を行ないたいと思います。日付...日付でこの間の検索が行なえることは知っています。実際に運用する場合、私より初心者の方が、使用します。期間の初日と期間の末日を入力すれば、内部的に、記号「...」を使用しないで、検索を行なえるようにしたいと思います。どなたかお力をお貸しください。よろしくお願いいたします。

Aベストアンサー

検索をスクリプトにすれば出来ます。ただし、検索時にスクリプトを実行させるボタンを押す
必要があります。

・「期間初日」と「期間末日」という日付グローバルフィールドを新たに作ります。

・スクリプトで検索モードにして、現在のファイルの日付フィールド(検索フィールド)を
 フィールド設定ステップで「期間初日」& “...”& 「期間末日」にして検索実行ステップ。
または
・「期間初日」<-「日付」 and 「日付」<=「期間末日」の自己リレーションを作って
 関連レコードのみ表示ステップです。

QFilemakerで検索フォームを作りたい

Filemaker 11 Pro Advanced で、以下の様な機能を持つフォームを作成したいと思っております。

1.フォームがあり、そこに検索ボックスがある。
2.そこの検索ボックスで検索すると、データベースA上から該当するレコードを検索し、同フォーム上にリスト表示
3.そのあと、その検索結果のレコードをダブルクリックとかなんとかすると、そのレコードのいくつかの情報が、フォームに自動入力される。(このフォームに入力すると、データベースBに書き込まれるものとします)
4.さらに、入力者が追加情報をフォームに書き込んで終了。

Filemaker初心者なもので、1番から3番をどうやって実装するのかどうかがわかりません。
お手数ですがご教授お願いいたします。

また、Filemakerの入門レファレンスのWebや書籍があればそちらも教えていただければ幸いです。

Aベストアンサー

放置されていましたので、簡単に
1、2は基本的な機能です。レイアウトモードにし、検索したいフィールドを含むレイアウトを作成します。そのとき「レコードを表示」の選択をAにしておきます。データベースAを対象にするという意味です。
次に検索モードにし、該当するフィールドに入力すると、該当するレコードが表示されます。「リスト表示」を選ぶと該当するレコードがリスト表示されます。
3は、スクリプトを作って、ボタンに割り付けておけば可能です。

参考書として「FileMaker Pro大全」を使っています。古いです。
最近では少し新しい「FileMaker Pro大全 ver.7~9 edition」が出ているようです。網羅的に書かれた分厚い本です。
それ以降出版された本はチェックしてませんので、本屋さんででも確認ください。
FileMakerはバージョンが上がってもほとんど機能は変わりませんので、少し古いバージョンの本でも十分使えます。

QFilemakerのIF関数の関数式

FilemakerのIF関数の正しい関数式の作り方について教えてください。


Aが、「BまたはC」の条件を満たす場合は45を、満たさない場合は60を表示させるIF関数として、以下の関数式を作成・入力しましたが、うまく結果が出ません。どこが間違っているのか教えてください。困ってます(T-T)
ちなみにB、Cは全角文字という想定で“”をつけています。
If ( A=”B” or “C”; 45; 60 )

Aベストアンサー

ifで作るより、caseで作った方が楽だと思います。
case(
A=”B”;45;
A=”C”;45;
60)
で大丈夫です。


人気Q&Aランキング