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

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

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

You are not logged in.

Announcement

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


#1 2014-06-23 21:35:54

四郎
Guest

カレンダー作成

はじめまして、大変申し訳ありませんがお世話になります。


↓以下、ちょっと長めの前フリとなります。↓

私はマック歴が20年ほどでファイルメーカープロはずっと前から気にはしていましたがなかなか取っ付きづらく、10年近くエクセルを使っておりました。
この度転職先の介護施設にてさらなる業務効率化を図りたいと考え、エクセルでいろいろと壮大な構想を練っておりましたが、考えていることはデータベースなので、ファイルメーカープロを使ったほうが良いのではないかと思うようになり、この2週間ほど毎日参考書(秀◯システムのもの)を読んだり(2度通読済み)、ネットで使い方についていろいろと学んでおりました。

いろいろと構想はあるのですが、まずは以下(ダウンロード)にあるようなカレンダーを作り、ここに入力された情報をもとにさまざまなテーブルを構築していこうと考えております。


http://yahoo.jp/box/CQ_DJR


しかしながらエクセルなら簡単に作れてしまうカレンダーひとつさえ、参考書を読んだのにも関わらずハードルが高く、途方に暮れそうな状況です。
ここやここのベースとなった(?)ウェブサイト上で「カレンダー」と検索して出てきた過去ログも全て目を通しました。その他いろいろとウェブサイトは見ましたが、私には難しくどうしてもこのカレンダーを作ることができません。きっと私の理解力の低さとエクセルの概念が染み付いてしまったせいなのではないかと思っています。どうにかしてこの状況を打破して、ファイルメーカーを使いこなせるようになりたいと思っています。


https://fm-aid.com/bbs2/viewtopic.php?id=1186

↑リンクにある「ToDoカレンダv3.2非トリガ版(人別).fp7」が私が望むものに非常に近いのですが、決定的に違う点は各日付の下に予定が直接書き込めないということです。
私の考えているものは各日付の下の欄が大きな1つの資格に見えますが、実際は8行(a, b, c, d, e, f, g, hのそれぞれ決まった内容を記入する、それぞれ独立したフィールド)になっていて、ここに情報を直接書き込めるというものです。利用者別にレコードを作成し、レコード内のカレンダーの日付部分下(a〜h)に予定を入力します。

日付の部分を作ることはできました。また前月や次月へ移動するボタンも作ることはできました。しかしこれ以上のことができません。
どなたかご教示していただけると誠に幸甚です。是非宜しくお願い致します。

#2 2014-06-24 01:37:11

Hiro
Member

Re: カレンダー作成

結論的に言って、各日付の下に予定を直接書き込むこと(新規関連レコード作成や編集)はできません。
繰り返しフィールドのルックアップ特性を利用したソリューションなので、サンプルの仕様がその全てであり最善策です。
ルックアップ値の作成や編集は理論的に無理ですが、ルックアップ値を表示するだけなら可能です。
各日付ごとの予定の作成・削除・編集は、カレンダ右横の動的ポータルから行えます。

なお、このサンプルは非トリガ向けバージョンで、ボタンとスクリプト引数を利用するものです。
トリガが使える環境なら、もっと設定が楽なトリガ使用バージョンがあります。各サンプルの経緯を過去ログでお調べ下さい。

Last edited by Hiro (2014-06-24 11:32:09)

Offline

#3 2014-06-24 10:04:09

Layouter
Guest

Re: カレンダー作成

カレンダーに書き込んだデータを後で何に使うかによるんじゃないですか。

決まった値しか入れないみたいなので、繰り返しフィールドで表示してるなら、OnEnterのトリガで該当するデータを「独立したフィールド(HIROさんのならレコード?)」に書き込めばできそうな気がします。

#4 2014-06-24 15:08:53

四郎
Guest

Re: カレンダー作成

ご返答ありがとうございました。
それでは「ToDoカレンダv3.2非トリガ版(人別) 」を一旦離れ、繰り返しフィールドを使わずにこのようなものを作るということになるとどうでしょうか。あくまでも初心者レベルなのですが可能であれば教えてくださると幸いです。

不可能ということでしたら直接書き込みにはこだわらず、「ToDoカレンダv3.2非トリガ版(人別)」 を利用させていただき、元々考えていた見た目になるようにしたいのですが、各日付の下の欄を8行表示にしてそれぞれの行に入力欄で入力した情報をどのようにしたら表示させることができるのでしょうか。

そしてこの「名前」、「日付」、各行に入力した情報を元に他テーブルへ展開していくことはできますか。
例えば1行目に宿泊の有無をリスト形式で入力できるようにし(「宿泊」または「日帰り」の2択)、2行目は「訪問」の有無を入力します。3行目以降も同様ですが、最後の2行はフリーテキストの欄です。
そして別テーブルにて日付を選べば、その日の各行に対応した人の人名を表示する、つまりその日の宿泊者名、訪問者名など8項目について該当者の名前の一覧が出るようにしたいと思っています。なお利用者名の表示は1項目あたり最大でも18人迄です。



いろいろと考えてみてどうしても私には無理なようならエクセルに戻るしかないと思うのですが、こういったことを管理するのはエクセル本来のあり方からかけ離れ無理があるように感じており、どうにかしてファイルメーカープロに移行したいと思っています。

エクセルならば最初のセルに基点となる日付を入力して右隣のセルを+1としてあとはひたすら右方向へ365列になるようフィルしていけばもととなるカレンダーの完成です。

いまこれと同じようなことをファイルメーカーですれば良いのではないかと思っています。つまりフィールドを365個作るというものです。
先の8行表示のことで言えば、8行x365日分=2920個のフィールドを作れば良いのではないかと思っています。毎年2920フィールド増えていくわけですし、作業の手間を考えてもスマートではないかとは思うのですが、このような形にすれば先に書いた私が実現したいことを実現することが可能でしょうか。
すみませんがアドバイスのほどよろしくお願いします。

#5 2014-06-24 15:25:28

四郎
Guest

Re: カレンダー作成

書き込みいただき、ありがとうございます。
いまは最新版の体験版を使っております。ですのでトリガ対応だと思います。
過去ログも全て何度かみましたが、私にはもっと勉強しないと理解できない内容です。

OnEnterのトリガで該当するデータを「独立したフィールド(HIROさんのならレコード?)」

に関しても意味がわからない状態です。もっと基礎を積み上げないといけませんね。

#6 2014-06-25 09:47:26

barikan
Guest

Re: カレンダー作成

提示されたpdfの形式で入力をしたければまずカレンダーテーブルと予定テーブルを作ります。
カレンダーテーブルに7日×5行の35個フィールドを作りそれぞれの日付が入るように計算式を組みます。
予定テーブルのテーブルオカレンスを35個作ってさっきの35個のフィールドそれぞれとリレーションをします。
そのリレーションで、予定側のレコードの作成を許可にチェックをつけます。

35個もリレーションを組まないといけないので作るのが大変ですが、
入力する前に一度日付を選択するという操作が入っても良いなら
Hiro様のサンプルの用に2つのリレーションで作ることが出来ます。

#7 2014-06-26 01:41:16

四郎
Guest

Re: カレンダー作成

barikan様

メッセージありがとうございました。
教えていただいた方法は35個フィールドを作るというのは、繰り返しフィールドは使わないということでよろしいのでしょうか。
そうであれば大変恐れ入りますが「それぞれの日付が入るように計算式」とは具体的にどのような計算式になるのでしょうか。
それともHiro様のサンプルを使ってということなのでしょうか。
「35個もリレーションを組まないといけない」といった類の労は全く厭わないのですが、参考書も一冊読んだのにも関わらず「テーブルオカレンス」という言葉も初めて聞きましたし(ネットで調べて今は恐らく理解できていますが)、初心者にはいきなり高度なことをやろうと思っているためなのか私にはなかなかハードルが高い状況です。
しかしながらまだ諦めたくはないので、過去ログ、参考書、他webサイトを見るなどして引き続き研究していきます。いろいろと教えてくださると大変幸甚です。

#8 2014-06-26 11:40:47

dup
Guest

Re: カレンダー作成

表示日 日付 に2014/6/24と入ってるとしたら、
日付1 日付 表示日+1
以下同様に35個、ということでは。
フィールド名に連番を入れておいて
表示日 + GetValue ( Substitute ( GetFieldName ( Self ) ; "::" ; ¶ ) ; 2 )
にすると、複製して全部同じ式でOK

リレーション先のテーブルが
日付
予定[8]//ここを繰り返しにすると少しは楽

#9 2014-06-26 12:17:11

Hiro
Member

Re: カレンダー作成

リレーションなど設定要素を極力少なくする折角のソリューションなのに!!
ポータルを使う従来の方法では、設定リレーションとキーフィールドの数は35個でなく42個必要でしょう。

どうしてもポータル表示法なら、デカルト積[X]の汎用リレーションポータル[42個]に日付ごと42個のポータルフィルタを掛ける、とか。
そうすれば、設定数は「繰り返し+ルックアップ」法と同じで済む、かな?

Offline

#10 2014-06-26 14:21:07

dup
Guest

Re: カレンダー作成

日付1個ごとにリレーションする場合、ポータルではなく単なる関連フィールドの配置です。
日付でリレーションしないと、直接入力でレコード作成するという肝心の点が動かなくなる。
表示した時点でその日付分のレコードを全部作ってしまえばいいかもしれないけど。

#11 2014-06-27 13:13:38

Hiro
Member

Re: カレンダー作成

[X]リレーションだと確かに関連レコードの新規作成機能が無効でしたネ。^^;

取り合えず、当たり障りの無い「月」とか人別なら「人」フィールドとかで汎用リレーションを組み、
OnObjectExitトリガで日付をスクリプト挿入すれば良いかな?

Offline

#12 2014-07-01 22:13:07

四郎
Guest

Re: カレンダー作成

dup様、Hiro様ありがとうございました。

せっかく皆様からご教示いただいた内容を理解することができなかったため、先述したようにもっと基礎力をつけるべく小山香織さんの参考書を手に入れて勉強するなどしておりました。その上で改めて書き込みを読ませていただいたのですが、残念ながらまだ理解するには至りませんでした。
いろいろと試みましたがどうにも前進できません。どうしても理解したいのですみませんが質問させていただきます。

まずbarikan様のご返答ですが

1. カレンダーテーブルと予定テーブルを作ります。
2. カレンダーテーブルに7日×5行の35個フィールドを作りそれぞれの日付が入るように計算式を組みます。
3. 予定テーブルのテーブルオカレンスを35個作ってさっきの35個のフィールドそれぞれとリレーションをします。そのリレーションで、予定側のレコードの作成を許可にチェックをつけます。

とありますが、

質問1. カレンダーテーブルには7日×5行の35個フィールド以外のフィールドはないのか? あるはずだと思いますが、どんなタイプのものか。
質問2. 予定テーブルには予定を入力するフィールド以外のフィールドはないのか?
質問3. リレーションはオカレンス上にあるフィールド同士を結びつけるもだと思いますが、それらがどう結びついているのか。


dup様のメッセージについては、


質問4. barikan様のおっしゃるような2テーブルでのお話でしょうか。
質問5. テーブルとフィールドの構成を教えていただけないでしょうか。「表示日」「日付」というフィールドがあるのでしょうか。
質問6. 「日付1 日付 表示日+1 以下同様に35個」の意味が分かりません…。
質問7.

「リレーション先のテーブルが
日付
予定[8]//ここを繰り返しにすると少しは楽

をもう少し詳しく教えていただきたいのですが…。」



「フィールド名に連番を入れておいて
表示日 + GetValue ( Substitute ( GetFieldName ( Self ) ; "::" ; ¶ ) ; 2 )
にすると、複製して全部同じ式でOK」


この部分は分かります。



すみませんがよろしくお願いします。

#13 2014-07-03 13:04:10

dup
Guest

Re: カレンダー作成

私のコメントはbarikan様のおっしゃるような2テーブルでのお話です
表示日 基準の日付(PDFでは6/24)を入れる
日付1~42(PDFでは35個だったけど、実際は42個必要な月もある。今年の8月とか)
計算フィールドです。結果のタイプが日付。計算式が表示日+1。
こういう名前なら複製して同じ式にするのが楽だけど、式自体は「表示日+1」の方が簡単だし一目瞭然。どっちでも好きな方で。
考えてなかったけど、「人別」だったら名前のフィールドが必要

リレーション先も「名前」が必要ですね。日付と名前でリレーション。
予定を繰り返し8のテキストにして、各日付の下に配置する。

#14 2014-07-05 00:12:15

四郎
Guest

Re: カレンダー作成

dup様

こんな私にメッセージを下さりありがとうございました!

メッセージを頂戴してから何時間もかけて試行錯誤してみたのですが、理解不足のせいでどうしてもうまくいきません。
すみませんが下記の手順でよろしいのでしょうか。


1. テーブルを2つ作る( カレンダーテーブルと予定テーブル)。


2. カレンダーテーブルの内容
日付フィールドが「1」「2」「3」「4」「5」…という名で42個 (日付は計算式によって正常に表示されています)
各日付の下にはテキストフィールドを8つずつ(それぞれ独立させたいので繰り返しフィールドは使いませんでした)
人名フィールドを作成


3. 予定テーブルの内容
日付フィールドが42個 (日付は計算式によって正常に表示されています)
各日付の下にはテキストフィールドを8つずつ
人名フィールドを作成


4. リレーションの設定
予定テーブルのテーブルオカレンスを42個作り、
「予定テーブル」の「1」と「カレンダーテーブル」の「1」、「予定テーブル2」の「2」と「カレンダーテーブル」の「2」、「予定テーブル3」の「3」と「カレンダーテーブル」の「3」…計42個をリレーションする

さらに
「予定テーブル」の「人名」と「カレンダーテーブル」の「人名」、「予定テーブル2」の「人名」と「カレンダーテーブル」の「人名」、「予定テーブル3」の「人名」とカレンダーテーブル」の「人名」…計42個をリレーションする


5. 「カレンダーテーブル」の内容変更
日付下の8つのフィールドをそれぞれダブルクリック→「フィールド指定」、「予定」テーブルの8つのフィールドそれぞれを選択する。


6. 両テーブルで新規レコード作成をし、両方テーブルへ同じ日付、同じ人名を入れ、予定テーブルのみ予定を入力する

7. カレンダーテーブルを見てみると、予定欄には「索引が見つかりません」との表示。さらにそこをダブルクリックすると「これらのテーブル間の1つまたは複数のリレーションシップが無効のため、この操作は実行できません」と出る。




以上、おかしな点がありましたらご教示いただけないでしょうか。
何卒よろしくお願い致します。

#15 2014-07-06 18:24:50

Dup
Guest

Re: カレンダー作成

2. カレンダーテーブルの内容
日付フィールドが「1」「2」「3」「4」「5」…という名で42個 (日付は計算式によって正常に表示されています)
人名フィールドを作成

3. 予定テーブルの内容
日付フィールドが1個
各日付の下にはテキストフィールドを8つ
人名フィールドを作成
このテーブルのレイアウトは、デバッグ(データの確認)にしか使用しない。

4. リレーションの設定
予定テーブルのテーブルオカレンスを42個作り、
「カレンダーテーブル」の「1」と「予定テーブル」の「日付」「人名」…計42個をリレーションする
リレーションは双方向なんでどっちを先に書いても定義上は同じですが、「カレンダーが予定を参照する」という意識が必要。

カレンダーのレイアウトに予定のテキストフィールドを配置

#16 2014-07-12 01:46:40

四郎
Guest

Re: カレンダー作成

dup様

ご連絡から一週間近くたってしまいましたが、この間、頂いたメッセージを何度も読み返し試行錯誤のうえ、先ほど思ったように動くものができました(検証不十分のため「おそらく」ですが)。本当にありがとうございました。
例えば「このリレーションシップを使用して、このテーブルでのレコードの作成を許可」にチェックすることなど(barikan様が言及しておられましたが)、初心者の私ではいろいろと苦労することがありました。「4.リレーションの設定」もみなさんにとってはとても基本的で簡単なことだと思うのですが、非常に手こずりました。「カレンダー」の「1」と「予定」の「日付」、カレンダーの「人名」と「予定」の「人名」…とリレーションの設定をすれば良いということに気づくのに何日もかかりました…。

次はこのカレンダーページを元に、別のページで日付を選ぶと人名一覧とそれに付随する8つのテキストフィールドが出てくるようなレイアウトの作成などをしていきます。
正直どうやって良いものかほとんど分かっておりませんが、まずは自分なりに研究していきます。
何度もやはり難しいので諦めようと思いましたが、おかげさまで最初のカレンダーはできました。皆様、助かりました。ありがとうございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 11 queries executed - Memory usage: 582.98 KiB (Peak: 619.88 KiB) ]