みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Hiroさん
有難うございます。
やっぱりわかりました。
SQLでIDの一覧を取得したら,それがそのままリレーションフィールドになるんですね。
マルチってそういうことか。
Hiroさん
有難うございます。
なるほど。だいたい分かったと思います。
もう一点だけ確認させて下さい。
SQLで抽出した関連レコードID一覧をマルチキーに本命の動的値一覧用のリレーションを組みます。
このマルチキーでリレーションとは具体的にはどのようなやり方になりますでしょうか。
何とリレーションを持たせているのかがわかりません。デカルト積のリレーションですか?
Hiroさん
たびたび有難うございます。
申し訳ありません,
" & Choose(IsEmpty(g単元フィールド); " AND ""単元フィールド""='" &g単元フィールド& "' ")
の部分が理解できずに,先に進めていません。
ExcuteSQL難しいです・・・
わかってないこと↓
・最初の 「&」 の意味
・その次の文中の「AND」はなぜ,突然「AND」から始まる?
・そもそもなぜレコードIDを用意する必要があるのか?
すみません,何にもわかってないです(^_^;)
あと,最後のgキーワードフィールドは第四引数というやつですか?
これは,クエリー文の?のところに代入されるという認識でよいでしょうか。
Hiroさん
有難うございました。
動的値一覧をチェックボックスタイプの値一覧で、絞り込んで表示させることできました。
引き続いての質問恐縮ですが、お知恵お借りできればと思います。
[問題 データベース]
・表示させるジャンル(グローバル)・・・検索フィールドに表示したいキーワードを決めるためのグローバルフィールド
・表示させる単元(グローバル)・・・ジャンルを決めた後に、さらに特定の単元に絞り込みたい際に指定
[キーワード データベース]
・キーワードフィールド
・単元フィールド
・ジャンルフィールド
ジャンル絞り込み用のグローバルフィールドを設定したら、そのジャンルに対応したキーワードは表示できました。
ただ、これも数百の項目に跨がるようなケースがあると想定され、それをさらに細分化して表示したいと思います。
しかしつねに細分化表示がしたいということではなく、項目が多数に渡るときだけ細分化表示ができればということになります。
「表示させるジャンル」フィールドのみが入力されているときは、該当ジャンルの関連レコードを全部表示
「表示させる単元」が追加で入力されたときは、その該当ジャンルからさらに絞り込んで関連レコードを表示
というような動作はかのうでしょうか?
一つのリレーションでは、このような動的なリレーションを張ることはできないですよね・・・?
なにか方法はありますでしょうか。
よろしくお願いいたします。
Hiroさん
ありがとうございます。
たしかにそうでした。
しばらくファイルメーカーから離れていたせいで忘れておりました。だめですね。
もうすこし作ってみます。
また,よろしくお願いいたします。
算数の問題を分類し,テーマやキーワードに沿った問題を検索できるデータベースを作ろうと思っています。
キーワードで検索 → そのキーワードを含んだ問題がヒット というようなシステムを作りたいと思っています。
一つの問題が,複数のキーワードを含みます。これは,繰り返しフィールドに入力します。
ただ,検索語が非常に曖昧になりがちで,たとえば「つるかめ算」であれば,
そのキーワードとしては,「2つのつるかめ」「弁償つるかめ」というキーワードを含みますが,
「2つのつるかめ」は「2量のつるかめ」という人もいれば,
「罰金つるかめ」を「弁償つるかめ」という人もおり,人によって使う言葉が微妙に違います。
そこで,画面にすでに登録済みのキーワードを一覧で表示して,それをクリックしていって,チェックがついたキーワードを一気に検索フィールドに流し込んで,キーワードを含んだ問題が検索されるというシステムにしたいと思います。
質問させていただきいのは,すでに登録済みのキーワードを画面に一覧で表示するようなことは可能かどうかです。
[問題 データベース]
・問題フィールド・・・画像やテキスト
・キーワードフィールド(繰り返し)
・ジャンルフィールド
・表示フィールド(グローバル)・・・検索フィールドに表示したいキーワードを決めるためのグローバルフィールド
[キーワード データベース]
・キーワードフィールド
・ジャンルフィールド
キーワードはジャンルをつけて,値一覧を絞り込むためにジャンル分けします。
検索用画面には,問題フィールドのグローバルフィールドを表示し,
どのジャンルのキーワードを検索したいかを選びます。
グローバルフィールドをきめると,それに応じて,キーワードデータベースの該当するジャンルのキーワードを一覧表示し,
チェックボックスが表示されます。ユーザーはそれをクリックして,検索ワードを決定すると,スクリプトでそれを問題データベースの検索ワードに設定し検索を実行
というような流れをイメージしています。
現在詰まっているのは,キーワードデータベースのキーワードいちらんをどうやって抽出し,それをどうやって表示させればよいかという部分です。
どなたか,お知恵を拝借いただけませんでしょうか・・・
環境 FMPadv18 mac
Shinさん、チポさんありがとうございます!
>Shinさん
サンプルファイルありがとうございます。
なるほど。リストで抽出しておけばいいわけですね・・勉強になります。
ボタンを押したときの動作は、リストから順に引っぱってくるようにすればよいですね!
>チポさん
なんと。盲点でした。
これだとリレーションも簡素で分かりやすい・・・
ただ、あれですね。Goで表示すると、慣性スクロールで下まで行けてしまいますね。
ファイルメーカーは、アイデア次第でなんとかなるという、こういう所がホント面白いですよね。
とりあえず今回は、Goで使用することがメインでしたので、Shinさんに教えていただいた方法を取らせてもらおうと思います。
お二人ともありがとうございました。
SHINさん、ありがとうございます。
なるほど確かに、日付をキーにする方法は考えられますね。
しかし、この場合、その日付にヒットするまでは表示されないということになってしまいますよね?
できれは、テーブルAでボタンをポチポチ押したときに、その人に関連するメモが連続で表示されるようにしたいのです。
(それで、なんとか自動的に連番を振るようなフィールドをキーに出来ないか?と考えていた次第です。)
お世話になります。
最近すこし離れていました。またよろしくお願いします。
以下に質問するようなことはどのようにすれば実現出来るか・・・お知恵を拝借できればと思います。
========================================
テーブルA
フィールド:ID(数字)、名前(テキスト)
テーブルB
フィールド:キー(数字)、日付(日付)、記録(テキスト)
========================================
というような構成にして、
「ID」と「キー」でリレーションを張ります。
レイアウト1は、テーブルAに関連付けてあり、
ポータルで、テーブルBの関連レコードを表示します。
このとき、ポータルとしていくつかのレコードをまとめて表示したいのではなく、
関連レコードを1つずつ表示し、レイアウト1上の、ボタンなどで表示する関連レコードを切り替える
という形にしたいです。
イメージ→
テーブルA側、ID=001、山田さん
テーブルB側、4月1日、記録「〜〜〜」 4月5日、記録「〇△□・・・」、4月12日、記録「★★★・・・」
テーブルA側、ID=002、田中さん
テーブルB側、4月3日、記録「###」 4月8日、記録「&&&・・・」、4月15日、記録「!!!・・・」
(山田さんレコードが表示されている画面で、ボタンを押すと、4月1日、4月5日、4月12日の記録が一つずつ表示される)
考えたのは、テーブルBにもう一つ別のキー(Get(アクティブポータル行)、Count(自己リレーション)など)、テーブルA側にグローバルフィールド
を用意して、リレーションが動的に変化できるようにということを試してみたのですが、
キーを非保存の計算フィールドにすると、リレーションのキーに出来ないので、うまくいきません。
こういう場合のアイデアはなにかないでしょうか?
よろしくお願いいたします。
FMP15 mac
Hiroさん
なるほど!
ファイルを選択しようにも,どの形式も反転表示で選べなかったのでどうしたものかと思いました。
拡張子だけで判断していたんですね。
問題なく取り込めそうです。ありがとうございました。
ご指摘の桁数,たしかに110ですね(^_^;)
自動引き落としの結果として次のようなテキストデータがゆうちょ銀行から返ってきます。
これを,結果に応じてFileMakerに取り込む方法はありませんでしょうか。
最初の1行がヘッダ,ラストの2行はフッタで,
取り込むのはその間のレコード行です。
レコード行の115桁目が引き落としの結果を表しています。(0=成功,1=失敗)
CSVになっていないため,方法がわかりません。
なにかいい方法はありませんでしょうか。よろしくお願いします。
12900911524330ホニャララカブシキガイシャ 01019900ユウセイシヨウチヨキンキヨク 111XXXXXXXXXXXXXXX1107448800000XXXXXXXXXXXX
29900ユウセイシヨウチヨキンキヨク 436XXXXXXXXXXXXXXX111112146792アイウエ オカキ 00000581401P1307030023 0 00
29900ユウセイシヨウチヨキンキヨク 438XXXXXXXXXXXXXXX111113052268アイウ タロウ 00000561201P1509030026 1 00
29900ユウセイシヨウチヨキンキヨク 438XXXXXXXXXXXXXXX111117946745カキク ケコカ 00000550901P1001030343 0 00
29900ユウセイシヨウチヨキンキヨク 430XXXXXXXXXXXXXXX111116799923サシ スセソ 00000436201P1404030001 0 00
29900ユウセイシヨウチヨキンキヨク 432XXXXXXXXXXXXXXX111110779216タチツ テトコ 00000815401P1302030102 1 00
29900ユウセイシヨウチヨキンキヨク 407XXXXXXXXXXXXXXX111111752084ナニヌ ネノナノ 00000436201P1011030007 0 00
8000213000011621280000191000010371270000022000001250010000000
9
チポさんのアイデアでスクリプト書き換えました
グチになりますが,Filemakerの繰り返し変数って・・・使いにくいったらないですね(ーー;)
$A[10]と宣言しても,$A[1]は存在していないという・・・
Hiroさん,チポさん,いつもありがとうございます。
>Hiroさん
なるほど!これならすぐ対応出来そうです。ありがとうございます。
>チポさん
なるほど,確かにおっしゃるやり方もできそうですね・・・
無駄に複雑にしてしまったのかも・・・(ーー;)
ちょっと試させてもらいますね。
いつもお世話になります。
検索の履歴を繰り返しフィールドに格納して,呼び出して使えるようにしようと思い,仕組みを考えてみました。
サンプルファイル→https://www.dropbox.com/s/fhw14eohm4ign … fmp12?dl=0
あるフィールドに入力された値一覧(フィールドと値を1行にして,改行で区切られたデータ)が,
最新の検索条件によって,後ろから挿入されて,一番古いヤツは破棄されていくという仕組みです。
サンプルでは,データが改行無しだったので,うまく出来たと思ったのですが,
実際のデータは繰り返しフィールド各々が改行を含んでいるので,List関数でデータの個数を取ることが出来ないことに気付きました。
(改行の改行というデータが出来てしまう・・・)
繰り返しフィールドのそれぞれに値一覧が入っているような場合に,目的の動作を実現するにはどのようにすればよいか。
なにか,よい方法はありますでしょうか。
検索データの保存方法,復元方法までは考えてあって,あとは複数の履歴を残せるようにするだけだったんですが・・・
繰り返しを使うのが悪い!というのはできれば無しでお願いします^^;
Mac FMP14です
スクリプトステップの
ウインドウのスクロール[home]を最後に挿入すればよろしいかと。
あと,XMLのフィールドは消すとだめなので,非表示にしたければ,
「次の場合にオブジェクトを隠す」に,「1」を入れておくと常に非表示になります。
https://www.youtube.com/watch?v=CPfV89w … quAcxIy85c
こちらの中村孝仁さんの,FMCの動画を見ていて勉強になったのですが,リレーションシップグラフについては
かならず左のTOから右のTOを参照するというようにし,またTOの名前の付け方は
「コンテキスト_テーブル名」というようにすることで,コンテキストのグループごとにTOが並ぶようになるので,視認性が上がるということがわかりました。
同じように値一覧についても,効率的な命名規則のやり方があれば参考にさせていただきたいのですが,
なにかいいやり方はありますでしょうか。
同じ値を持つ値一覧であっても,関連レコードの絞り込みを考慮すると,似たような値一覧なのに名前が複数必要になる場合があると思います。
そのような時にみなさんはどのようにされているのかなと思いまして・・・
これぞというようなやり方があれば是非教えて下さい。
よろしくお願いします。
マップをクリックして別ウインドウを展開するのはちょっと奇妙な感じになってしまったので,
ボタンで展開するようにしてみました。
Horicchiiさんの実現したいことは、
「地図をクリックすると、べつのウインドウが起動して、そこに全画面を表示する」ということで合っていますか?
EmbedAPIはiFrame内でないと使えませんね。
なので、標準のビューアに、アドレスを設定するだけでは無理です。
qb_dpさん
なるほどですね。
JavaScript部分に,ジオコーディングも埋め込んでしまえば,座標フィールドは不要ですね。
まあ,2地点以上になると,必要にはなるのでしょうが・・
まあ,細かな仕様は,GoogleMapsApiでググって勉強していただければすぐに分かりますよ。
地図の全画面表示も,スクリプトで別ウインドウを起こしてそれを全画面にするだけです。
プロの方がたくさんおられるこの掲示板で憚られますが、
サンプルファイルを作ってみました。参考になりますでしょうか。
https://fm-aid.com/bbs2/viewtopic.php?id=3245
はご覧になりましたか?
たしか標準の方法では横のパネルを消すことは出来なかったと思います。
GoogleMaps API(v3)を使えば可能です。
旅人さん,ありがとうございます。
なるほど,Listを使うんですね・・・
ちなみに,リレーションの件はリレーションシップグラフがごちゃごちゃするってことなんですけど,
以前作ったやつは,ワケわからず蜘蛛の巣状になってしまっていたので,新しくし直すにあたってこのへんもしっかり考えたいと思いまして・・・
以下の様な計算式のフィールドを定義しました
繰り返し数3で,関連レコードの「保護者ID」を3つまで表示します。
GetNthRecord( 保護者_親子関係候補::保護者ID[1] ; Get(計算式繰り返し位置番号 ) ) )
このままだと,関連レコードが見つからないときは「?」が表示されてしまうので,以下のようにしたのですが,
Case(
not IsEmpty( 保護者_親子関係候補::保護者ID[1] );
GetNthRecord( 保護者_親子関係候補::保護者ID[1] ; Get(計算式繰り返し位置番号 ) ) ;
""
)
これでも,やはり「?」が表示されてしまいます。
「?」を表示させないようにはできますでしょうか。
(ポータルは,リレーションが汚れるので避けたいという意図です)
よろしくお願いします。
FMP14 Mac
[ Generated in 0.007 seconds, 6 queries executed - Memory usage: 672.39 KiB (Peak: 726.55 KiB) ]