• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ACCESS フォーム間のフィールド同期(日付の同期))

フォーム間のフィールド同期(日付の同期)

このQ&Aのポイント
  • フォーム間のフィールド同期についてアドバイスをお願いします。
  • 【日記記入日】を『F_成長日記(1)』・『F_成長日記(2)』と同期させたいです。
  • 『F_成長日記(1)フォーム』と『F_成長日記(2)フォーム』のどちらから【日記記入日】を入力しても両フォームが同期するようにしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • shinkami
  • ベストアンサー率43% (179/411)
回答No.15

■No.12のアドバイスの件 >誕生日(生年月日)については >=(DateDiff("m",[生年月日],Date())+(Format([生年月日],"dd")>Format(Date(),"dd")))\12 & "歳" & (DateDiff("m",[生年月日],D>ate())+(Format([生年月日],"dd")>Format(Date(),"dd"))) Mod 12 & "ヶ月" >にしてあります。 >※今更ですが何でこんなに長いんだ…。(汗) さすがですね エクセルの関数と使い方が違いますね 動作確認せずで済みませんでした。次ではどうでしょうか 年齢 = DateDiff("yyyy", 生年月日, Date) & "歳" & DateDiff("M", 生年月日, Date) Mod 12 & "ヶ月" 蛇足ですが シリアル値について勝手な解釈ですが 日進数と認識しています。 すなわち 日を1として 月、年と繰り上がり 時、分、秒と繰り下がる(大の月、小の月、うるう年も織り込んである) 従って 期間=終了日ー開始日 出計算が出来ます。 ________________________________________________ >■ちょっとお伺いしたいことが…。(その1) >SQL Server 2005 Express Editionの導入です。 > この件全く無知です。 別の質問を立ち上げてください。 ■ちょっとお伺いしたいことが…。(その2) >ACCESSで構築したものを他の支店でも使うつもりですが >テーブルやフィールドの追加、フォームの修正などした場合、 >本店で修正したmdbを、単に上書きしてしまうと支店の稼動していたmdbのレコードが全て消えますのよね。 テーブル以外はインポートでさしかえできますが、テーブルのフィールドの追加は中の情報を残したまま の差し替えになりますね テーブルのデザインによる変更ということになります いずれにしても支店の誰かにしてもらうにはハードルが高すぎますね 自分はt召したことがありませんが ひょっとしてマクロで解決できるかも この件も別の質問を立ち上げてください。 ____________________________________________ >【何千人の中から探すのか!?】という思いがあったので、顧客を抽出するフォーム等を この件数が気になっていたのですが、予想をはるかにに超えています。 メイン画面でふりがなの頭1~2文字で顧客名を確定してから F_成長日記 を開いてはと思いますが メインメニューに フリガナのテキストボックスと顧客検索のコンポボックス配置してコンポボックスの イベントより F_成長日記 を開きます。 仮にこのコンポボックスを「顧客確定」とします。ラベルの標題は「成長日記登録」 Private Sub 顧客確定_Change() DoCmd.OpenForm "F_成長日記" End Sub F_成長日記 にもコンポボックス「顧客確定」とフリガナのテキストボックスを配置します。 ここでの顧客確定をメインメニュウにコピーして、F_成長日記を開きなおします。 Private Sub 顧客確定_Change() Forms!メインメニュウ!顧客確定 = 顧客確定 DoCmd.Close DoCmd.OpenForm "F_成長日記" End Sub Close した後もコードが有効とはいがいですね ______________________________________________ >■上記の件ですが、 >意外と言いますか、???の状態です。 >通常テーブルには主キーを設定しますよね。 >また主キーの場合、社員コードとか顧客コードなど以外は、殆どがオートナンバー型に >なってしまうような気もするので…。 フォームに無くても、オートナンバーは有効に機能し続けます。 ある意味でわけの分からない番号は無い方が画面がすっきりします。 フィールドがオートナンバーでなくとも主キーにすることが出来ますが 主キーはやはりオートナンバーに限ります。 例えば顧客コードを数値型で主キーにしたとして、 情報がある程度たまった時点でコードリレーションを保ったままの変更が出来なくなります。 > >とここまで書いて気付きました。 >F_成長日記メイン部フォームの「カルテNo.」は >今までお話をしまいた[日記ID]の事です。 >[日記ID]の事ならそのままで良いですよね…? フォームからは除去して レコードの移動の可否を確認してください。 尚 あなたの全ての疑問に答え切れてないと思います。お気を使わずに新しくQを立ち上げてください。 >

torento19
質問者

お礼

shinkamiさん こんにちは。 ご返答ありがとうございます。 ■mdbの更新につきましては、かなり厄介ですね。 その都度、支店に足を運ぶのはかなり大変です。 ■[日記ID]の件ですが、フォームから削除しても やはりレコード移動は出来ませんでした…。 ん~~~。これは永久的な課題か~…? 本件のアドバイスでは本当にありがとうございます。 また、その他のご説明も大変丁寧で大変助かりました。 他の質問につきましては、分からない時に別の板で改めて 質問をさせて頂きます。 かなり無謀かもしれませんが SQL Serverの方も少しずつ勉強をして精進していきます。 此度は本当にありがとう御座いました。m(_ _)m

その他の回答 (14)

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.4

ときを得たよい質問です。 VBAに入りますが F_成長日記の編集画面添付してください。 その画面に沿って説明します。 画像の作成方法はご存知かと思いますが念のため記して置きます 1.画面をスキャン ファンクションキー(キーボード最上列右端付近)の【PrtScr】 2.アクセサリのペイントを起動(他の画像処理ソフトでもよい) 3.必要な部分を切り抜き名前を付けてJPG形式で保存 4.TEACUPの補足説明送信後のナビに従ってください。

torento19
質問者

補足

こんにちは。 急な出張でご返答が遅くなってしまいました。 申し訳御座いません。 ■F_成長日記のキャプチャー画面をアップいたしました。 ▼日記記入日⇒診察日に変更 ▼水色部分 親フォーム⇒F_成長日記フォーム ▼ピンク色 子フォーム⇒F_成長日記メイン部フォーム ▼黄緑色  子の子フォーム?⇒F_体重推移 ▼黄色   親フォーム(F_成長日記フォーム)のヘッター部に設置 ■F_患部詳細につきましては、ほぼ同じデザインです。 ▼ピンク色の部分が違うデザインになっています。  ※子の子フォームが無い。  ※接客内容みたいな入力欄(足の状態など)が並んでいる感じになります。 以上です。 不足している情報が御座いましたらご指摘ください。 蛇足…。 多分VBAでの制御になると思い、また聞いているだけでは失礼かと思い 出張帰りに自分なりの判断で良さそうなものを探しVBAの入門書を購入しました。 ■技術評論社  超入門 ACCESS VBA プログラミング講座 パラパラとめくってみましたが、大変そうです…。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.3

このシステムの対象は医療行為を含むペットの総合サービスと思いますが 短期預かりもありですか T_顧客情報、T_生体情報、T_成長日記、T_患部詳細 の4つのテーブルが基本ですね。 (成長は生体の誤りでは…) T_成長日記、T_患部詳細で日付だけのレコードまで生成して日付の同期を取る必要があるのでしょうか 多分T_成長日記、T_患部詳細は1対Nの同期になるような(前回の添付がそれですが日付での同期ではありません) T_成長日記、T_患部詳細がM対Nの同期がどのようなものか考えられません 日記のフィールド数が(足の状態や、毛並み状態など)多くてフィールドを2分するのであれば1対1の同期が必要ですが 他の生体にも同じ日付のデータが発生しますので日付での同期は取れません 従って 1.・T_顧客情報⇒T_生体情報⇒T_成長日記⇒T_患部詳細 2.・T_顧客情報⇒T_生体情報⇒T_成長日記 ……・T_顧客情報⇒T_生体情報⇒T_患部詳細 の何れかになると思います。 少し道草をしましょう データにはT_成長日記のように日々発生するトランザクションデータデータと 一度登録すると殆ど変更の必要のないT_顧客情報、T_生体情報といったマスタデータ に分けることが出来ます。 マスタデータはさらに繰越マスタ、参照マスタがあると思います。 すみませんうまく説明できません。 ACCESSでシステムを開発する場合テーブルの設計と設計したテーブルにリレーションシップを加えるだけで 開発の70%以上がしたと思っていいでしょう。 これだけで、入力モードの切り替えを気にすることも無く、また顧客参照をしながら入力できます。 またデータの参照、並び替えも出来ます。 システムが固まったらもう一度テーブルの細部を見直してみませんか、 設定項目の右端部分をクリックするとナビモードになる項目が沢山見つかります。 テーブル設計で気がついたことを記して置きます。 ・主キー…データ型:オートナンバー ・リレーションシップ用ID…データ型:数値 フィールドサイズ:長整数型 ・テキストのフィールドサイズ 特に意味はありませんが4の倍数(4,8,12,16,20,24,28,32) ・全角入力項目 IME入力モード ひらがな IME変換モード…人名、地名:人名/地名 その他:一般 ・半角入力項目…IME入力モード:オフ ・日付 IME入力モード:OFF 書式(書式タグ) …西暦表示:Y/M/D …和暦表示 :ge/m/d(h21/9/7) ggge/m/d(平21/9/7)ggggge年m月d日(平成21年9月7日) …日付に曜日も付加表示できます)aaa(火)aaaaa (火曜日) ・住所フィールドには住所入力支援活用 ・他テーブル参照はルックアップ機能…添付参照

torento19
質問者

補足

★文字数の関係で補足回答に書き込みをさせて頂きます。 shinkamiさん こんばんは。 いつも丁寧なアドバイスをありがとうございます。 ■本件の質問についてですが どうも私の質問の仕方が悪く、shinkamiさんにご迷惑をおかけしていた様です。 日付の同期についてですが この【日付の同期】という質問方法自体が混乱の基になっている様に感じます。 ■本件について改めて質問をしなおしますと、 F_成長日記フォーム⇔F_患部詳細フォームの移動で              ↑(コマンドボタンの「フォームを開く」による移動) ある生体(ABC犬)の成長日記を入力していて(仮に2009年9月30日とします) 足の肉球の状態も悪く、その症状のコメントを患部詳細フォームに入力したい時 F_成長日記フォームの親フォームにある【患部詳細】ボタンを押すと F_患部詳細が開き、親フォームにはABC犬情報(と顧客情報)が表示され 且つ、サブフォーム側に2009年9月30日と自動で入力された患部詳細フォームが 開くようにしたいと考えております。 ※【患部詳細を開く】と【成長日記を開く】のボタンは親フォームの フォームフッターに設置しています。 ▼テーブル名  T_成長日記テーブル      T_患部詳細テーブル ▼フォーム名  F_成長日記フォーム      F_患部詳細フォーム ▼サブフォーム F_成長日記メイン部フォーム  F_患部詳細メイン部フォーム ※親フォーム(フォーム名)であるF_成長日記フォームとF_患部詳細フォームには  顧客&生体マスターからクエリで抽出したフィールド(顧客ID,生体IDとその他フィールド)が  表示(適用)されています。 ※T_成長日記からF_成長日記メイン部フォームを作りました。 ※T_患部詳細テーブルからF_患部詳細メイン部フォームを作りました。 ※親フォームとサブフォーム(子フォーム)のリンクは生体IDでリンク管理をしています。 ■で!よく考えれば、 サブフォームのT_成長日記テーブルと T_患部詳細テーブルに"日記ID"フィールドを作り "日記ID"でリレーション関係を取れば良かったことに気づきました。 つまり結果的には、日記IDを基にF_成長日記詳細フォームとF_患部詳細フォームが同期(連動)すれば 日付も同じ日付が表示され理想的な状態になります。 ※F_患部詳細メイン部フォームにある日付は、  クエリビルドでT_成長日記テーブルから日付フィールドを取得しています。 ---------------------------------------------  T_患部詳細テーブル  T_成長日記      患部ID(主キー)    日記ID(主キー)    日記ID        日付 ※日記IDでリレーション        ----------------------------------------------       ↓↓↓  F_患部詳細メイン部フォームに T_成長日記の中にある"日記"のフィールド値をクエリビルドで取得して  フォームに表示させています。 これで、同じ日記IDならF_成長日記フォームとF_患部詳細フォームの間で 同じ日付が表示されました。 たぶんNo2のアドバイスがこのことかと思います。 RDBの基本的な考え方でしたね…。(汗) ■ここから再々訂正?の質問となりますが、 ▼親フォーム  F_成長日記フォーム     F_患部詳細フォーム ▼サブフォーム F_成長日記メイン部フォーム F_患部詳細メイン部フォーム ※親フォームとサブフォームのリンクは生体IDでリンク管理 ※サブフォーム同士は各テーブルの日記IDでリレーション とした場合、 親フォーム(フォームヘッダー)に設置したコマンドボタン(各フォームを開く)で、 サブフォーム内にある日記IDを取得(基に)して、各親フォームを開くにはどうしたら良いか? ※同じ日記IDの親フォーム+サブフォームを開くにはどうしたら良いか? になります。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.2

テーブルのフィールドに情報を記録する方法は2つあります。 1.フォームのテキストボックスにキーボードで入力する、 2.プログラムコードにより書き込む。 9月に始められて早くもリレーショナルデータベースの本質をマスターされたご様子なので プログラムも直ぐに理解されると思いますが このシステムの骨組みが仕上がるまでまちましょう。 成長日記を2分する理由は1日に必ず1回だけ必要な情報と、任意に複数回発生する情報 このようなときはやはり、別に設計するべきでしょう。 顧客情報⇔生体情報⇔成長日誌⇔飼育日誌と直列のリレーションシップでよいと思いますが 添付を見て下さい。日付は成長記録に一つあるだけです。 実際には、誕生日、受付日等沢山の日付を設定されているとは思いますが

torento19
質問者

補足

文字数の関係で補足回答側に入力します。お許しください。 本件についてですが、 ■No1としてアドバイスをいただいた件ですが T成長日記(1)、T成長日記(2)を分けた理由は、 T成長日記(1)には日記の主となる情報等を入力します。 T成長日記(2)には、補足日記を入力します。 補足とは、例えば、足の状態や、毛並み状態など、なにか個別情報として 入力しておきたい部分です。 初めの構想では、 T成長日記(2)の補足フィールドは入力が有ったり無かったりするので たとえ1つのレコードだとしてもT成長日記(1)で管理してしますと 無駄なNull値が発生し良くないのでは? またデータ容量としても無駄なのでは?と思い、別々のテーブルで管理をして 結果的に本件の悩みにつながりました。 No2としてアドバイスをいただきまし様に、 別々の方が良いですよね…。??? ■で! No1でご指摘を頂きました『一つのテーブルにまとめるのは無理がありますか?』 について考慮し、全てのフィールドをT_成長日記にまとめ、 F_成長日記(1)とF_成長日記(2)のフォームを作ったところ 同期がとれました。 ※別々のテーブルでは無いので当たり前と言えば当たり前なんですが…(汗) 【補足説明】 ここでの同期とは、F_成長日記(1)とF_成長日記(2)で同じ日付の値が 入力されることを指しています。 つまりF_成長日記(1)とF_成長日記(2)のどちらから入力しても 後から開いたフォーム側に同じ日付が入力されているようにしたかったです。                         ^^^^^^^^^^^^    ■同期ができた!と喜んでいましたが、 この方法ですと、 F_成長日記(1)の親情報(親フォーム?)の生体ID値と F_成長日記(2)の親情報(親フォーム?)の生体ID値でリレーション関係を 構築していますので、(1)⇔(2)は必ず先頭のレコードが表示されてしまいます。 ★理想としては(今更ですが成長日記2は患部詳細という名称に変わりました…) ・ T_成長日記とT患部詳細は別々のテーブルで管理したい。 ・ F_成長日記とF_患部詳細はどちらか片方しか入力しない事も場合により有り得るので、 どちらのフォームにも顧客情報や生体情報を表示させたい(←既に構築済み) ・ T_成長日記⇔T患部詳細は、個々の同じペット情報のみが表示され(←既に構築済み) 且つ、同じ日付の情報が「T_成長日記⇔T患部詳細」として行き来できるようにした。   ↑これが今回の質問になります。  ※多分ですが、現在私が構築している構築スタイル?ですと   親フォームにコントロールボタンを設置するので   サブフォームにある日付の値を取得してVBAを組まなくてはいけないと思うのですが…。  なんとなくですが、下記のページが関係しているような……。  http://www.nurs.or.jp/~ppoy/access/access/acF005.html ■添付画像のありがとうございます。 当初のテーブルを2つに分けていた時は T_成長日記とT患部詳細(旧 成長日記2)の関係が 画像のT_飼育日誌に生体IDのフィールドを設定し の生体IDどうしでリレーションを構築していたような記憶があります。 ※既に旧構築スタイルは削除したので定かではありませんが…。 アドバイスのリレーション方法で再度チャレンジをしてみます。 ここまでのアドバイスありがとうございます。

  • shinkami
  • ベストアンサー率43% (179/411)
回答No.1

成長日記を2つに分ける理由は何ですか? ・T成長日記(1)、T成長日記(2)はT生体情報でつながっているだけではだめですか? ・T成長日記(1)とT成長日記(2)を一つのテーブルにまとめるのは無理がありますか? ・同期とは具体的にどのようにするのですか? ・T成長日記(1)T成長日記(2)をリレーションで結び、一方の日付を省略する?

torento19
質問者

お礼

shinkamiさん、こんにちは 別の質問につづきご回答ありがとうございます。 本件の質問の前に、先日アドバイスを頂きました点についての 結果報告をいたします。 多分その方が本件についてアドバスをいただけやすいと思います。 ■ACCESSのバージョンは2000です。 ■別の質問に対しての結果ですが いただいたアドバイスを基に、作っては止めの繰り返して 最終的に下記の様に落ち着きました。 (1) まず、T_顧客情報とT_生体情報から、T_成長日記(フォーム)に表示したい 顧客名や生体情報をクエリで抽出 (2) その抽出した情報を基に、フォームを作成(MF_成長日記) (3) (2)とは別に、T_成長日記を基にフォームを作成(F_成長日記) (4) (2)のフォームにサブフォームを設置し そのサブフォームに(3)のF_成長日記を設定しました。 ※リンクするフィールドとして生体IDでリンクしました。 (5) (T_生体情報から作った)F_生体情報フォームにコントロールボタンで (2)のMF_成長日記フォームを開くボタンを設置。 関連付けとしてこちらも生体IDでリンクしました。 これで、顧客情報や生体情報が表示され サブフォームで成長日記が管理出来るようになりました。 また、日付なども入力でき、サブフォームの中にあるF_成長日記側に レコードの移動ボタンを設置したので、同じペットの成長日記だけが 見られるようになりました。 以上です。

関連するQ&A