Access勉強中の関数について教えてください

このQ&Aのポイント
  • 現在、Accessのサブフォームの「期日」の最新レコードの値をメインフォームに表示させる方法を教えてください。
  • また、最新の期日の一つ前の期日も同じように表示させる方法についても教えてください。
  • 関数を使って上記の機能を実現できるのかどうかも分からないので、教えていただけると助かります。
回答を見る
  • ベストアンサー

ACCESS勉強中です。

ACCESS勉強中です。関数について教えてください。 現在,サブフォームの「期日」の最新レコード(最終行)の値をピックアップしてメインフォームに表示させるようにしています。 やり方は,サブフォームのヘッダーにテキストボックスを配置してそれを コントロールソース=Last([期日]) 可視 いいえ 名前 最新期日 と設定したうえ,メインフォームにもテキストボックスを配置して コントロールソース=[サブフォームコントロール名].Form![最新期日] と設定しています。 以上により,メインフォーム上に,最新の期日をピックアップして,表示させることができているのですが,これから行おうと考えているのは,最新の期日の一つ前の期日も同じように,ピックアップしてメインフォーム上にピックアップして表示させることです。 本屋やネットで探してみましたが,なかなかやり方が見つかりません。そもそも関数でできるものなのかもいまいち分かりません…。 勉強不足のためわかりやすく質問することができていないかもしれませんが,どなたか教えていただければ幸いです。 よろしくお願いいたします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

こうしたら? サブフォームのレコードソースを仮に『T1』として (テーブルかクエリ) T1のフィールドに『期日』が有るとします。 メインフォームのコントロール名とコントロールソースをそれぞれ 最新期日改 = Dmax("期日","T1") 直前最新期日 = Dmax("期日","T1", 期日 < #" & 最新期日改 & "#") ↑は↓でも 直前最新期日 = Dmax("期日","T1", 期日 < #" & Dmax("期日","T1") & "#") 最大値の次に大きい最大値は・・です。 期日フィールドが日付型としています。

ahoai09
質問者

お礼

ご回答ありがとうございます。教えていただいたことをやってみようと思います。 しかし,ACCESSって何でも出来るんですね。まだまだ始めたばかりですが,いろいろとがんばって勉強してみようと思います。 この度は大変参考になりました。ありがとうございました。

その他の回答 (1)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.1

伝えること、要件定義、仕様の解釈が違うと違うシステムになります。 「1つ前」とは? 最新日の前日なら、関数DATEADD等あります。 最新日が見つかったレコードの1つ前レコードの日、なら小細工しないとできません。 最新日の次候補の最新日、なら、最新を求めた時の結果に順位つけて2番を探す。 どれか?。 どれも何とかなります。 勉強不足でもない、応用レベル、いろいろやらないとできないテクニックばかりです。 VBAは使えますか。

ahoai09
質問者

お礼

ご回答ありがとうございます。求めたいのは「最新日の次候補の最新日」です。VBAは少し使ったことはありますが,本を見ながらやった程度です…。 今後,勉強を続けてそのときの参考にさせていただきたいと思いますので,できれば教えていただければと思います。 この度はありがとうございました。

関連するQ&A

  • ACCESS メインFからサブFの値を参照

    サブフォームで集計した値をメインフォームで演算値として使用したいのですができません。 サブフォームのフォームヘッダに集計値を入れるテキストボックスを配置し、メインフォームにサブフォームの集計値を参照するテキストボックスを配置しています。 ほんとうはイベントの実行で直接サブフォームの集計値を使った演算を行いたいのですが出来ないのでメインフォームにテキストボックスを作成しました。 サブフォームの集計値は表示しますが、その値を演算値として使用できないのです。試しにMsgboxでメインフォームのテキストボックスの値を表示させると何も表示しません。 なぜメインフォームのテキストボックスにサブフォームの値は表示できるのにその値を使用できないのでしょうか? 具体的には次の通りです。 <サブフォームに配置したテキストボックス>  名前        :テキスト16  コントロールソース:SUM([枚数〕)  書式        :数値 <メインフォームに配置したテキストボックス>  名前        :テキスト130  コントロールソース:[Foms]![メインフォーム名]![サブフォーム名].Form!テキスト16  書式        :数値 <イベント>   MSGBOX テキスト130       ※何も表示されません!

  • Access2003 タブコントロールについて

    フォームの詳細にタブコントロールを配置して、 その中にサブフォームを入れています。 そのサブフォームにあるテキストボックスの文字を レポートのテキストボックスに表示させたいです。 ただのフォームなら =Forms!フォーム名!テキストボックス名 でレポートに表示できますがタブコントロールがある場合は レポートのテキストボックスのコントロールソースに どういうふうに記述すればよいのでしょうか? よろしくおねがいします。

  • Accessのサブフォームから値を参照する方法について

    いつも拝見させて頂いております。 現在、Access97のフォームに以下のようなコントロールを配置しています。 1.フォームにサブフォームAを配置  1-1.サブフォームAにテキストボックスAを配置(入力用) 2.フォームにサブフォームBを配置  2-1.サブフォームBにテキストボックスBを配置(表示用) ※フォームは一つです。 <実現したい事> サブフォームA内のテキストボックスAの値をサブフォームB内の テキストボックスBに表示したいのですが、なかなかうまくいきません。 サブフォームA内のテキストボックスAの値を変更するとサブフォームB内の テキストボックスBも変更するようにしたいので、テキストボックスBの ControlSourceに[Form]![フォーム]![サブフォームA].[Form]![テキストボックスA] としましたが実現できませんでした。 どのような方法をとれば実現できるでしょうか? 宜しくお願いします。

  • Access2000のクエリー抽出条件

    Access2000で、「メインフォーム」の中に「サブフォーム」を作り、「メインフォーム」上の複数のテキストボックス(非連結)の条件により「サブフォーム」内のデータシート形式の「一覧表」にフィルタをかけて表示させたい。 「サブフォーム」のコントロールソースである「選択クエリー」の抽出条件に「メインフォーム」上のテキストボックスの内容を記入してできるかと試みていますが・・・。意図としては条件が複数になると、その分だけ絞り込んだ表示結果を得たいのですが、うまくいきません。 どなたか、教えていただけないでしょうか?

  • ACCESSで条件によってサブフォームを非表示に

    Accessの初心者です。よろしくお願いします。 Accessで住所録を作っています。 メインフォームは主に本人のデータを表示し、サブフォームで家族の データを表示するようにしました。 その時、家族がいない人についてはサブフォーム自体を表示しないようにしたいと思います。 そこで下記のようにしましたがうまくいきませんでした。 (1)サブフォーム内で家族の人数をカウントする。 (2)このカウント結果をメインフォームに表示する。(メインフォーム にテキストボックスを配置し、コントロールソースをサブフォームの 人数カウントにする。)     ここまではうまくいきました。 (3)ここでメインフォームのイベントの「開くとき」に以下のように記 述しました。(メインフォームのテキストボックスにカウントという  名前をつけました。) Private Sub Form_Open(Cancel As Integer) If Me!カウント = 0 Then サブフォーム.Visible = False Else サブフォーム.Visible = True End If End Sub この記述の仕方がまずいと思うのですが、どのようにすればよいか 分りません。よろしくお願いします。

  • Accessのサブフォームについて

    Accessのサブフォームのテキストボックスをクリックするとメインフォームのテキストボックスにサブフォームのテキストボックスの値を反映させるために以下のロジックを組み込んだ所エラーが発生してしまいました。 調べてみても分かりませんでしたので解決方法が分かる方は教えて下さい。 よろしくお願いします。 ロジック Form!メインフォーム!テキストボックス=サブフォームのテキストボックス エラー 「指定した式で参照されている’メインフォーム’フィールドが見つかりません」 「コントロールがフォーカスを取得していないときに、コントロールのプロパティまたはメソッドを参照することはできません」

  • ACCESSについてご質問です。

    バイト勤務管理表を作成しようとしています。メインフォームを「f_支給明細」,サブフォームを「f_支給明細サブ」としています(※メインフォームは,支給明細番号を1つのレコードとしています。)。 行いたいのは,サブフォームの「日付」の最新レコード(最新行)と,次候補最新の「日付」の値をピックアップしてメインフォームに表示させようとしています。 現在は,サブフォームのレコードソースを「t_支給明細サブ」として,「t_支給明細サブ」のフィールドに「日付」があり,メインフォームのコントロール名とコントロールソースをそれぞれ, 最新日付改 = Dmax("日付","t_支給明細サブ") 直前最新日付 = Dmax("日付","t_支給明細サブ","日付 < #" & 最新期日改 & "#") としています(※期日フィールドは,日付型)。 以上により,メインフォーム上に,日付を表示させることができたのですが,支給明細番号のレコードに関係なく,「t_支給明細サブ」の最新日付とその直前最新日付が表示されます(※例えば,支給明細レコードが「001」であっても「002」であっても,表示される日付は「2011/02/10」,「2011/02/18」であり同じ。)。 今回,教えたいただきたいのは,メインフォーム「f_支給明細」の支給明細番号ごとに,その画面上に表示されているサブフォームの最新日付等を表示させる方法です(※例えば,支給明細レコード「001」であれば,「2011/01/05」と「2011/02/10」,「002」であれば,「2011/02/05」と「2011/02/18」など。)。 知識不足のためにうまく説明ができてないかと思いますが,どなたか教えていただければ幸いです。

  • Access2007が強制終了する事象について

    お世話になります。 表題の件についてですが、現在Windows7 Pro SP1でAccess2007を使用し、ファイル形式は".accdb"でAccessシステムを開発しております。 そのシステムの中に下記の仕組みがあります。 ・F_メインフォーム内にタブコントロールが1つあり、ページ数は7ページで1ページにサブフォームを3つずつ配置し、合計21のサブフォームを設置。 ・1ページに3つずつあるサブフォームの内、各1つのサブフォームのコントロールソースには"T_マス タ"テーブルをもとに作成したクエリをそれぞれ設定。 イメージ) サブフォーム1:コントロールソース⇒Q_クエリ1(特定した日付でT_マスタから抽出) サブフォーム2:コントロールソース⇒Q_クエリ2(特定した日付でT_マスタから抽出) サブフォーム3:コントロールソース⇒Q_クエリ3(特定した日付でT_マスタから抽出) サブフォーム4:コントロールソース⇒Q_クエリ4(特定した日付でT_マスタから抽出) サブフォーム5:コントロールソース⇒Q_クエリ5(特定した日付でT_マスタから抽出) サブフォーム6:コントロールソース⇒Q_クエリ6(特定した日付でT_マスタから抽出) サブフォーム7:コントロールソース⇒Q_クエリ7(特定した日付でT_マスタから抽出) ・F_メインフォームを開くと、各サブフォームの複数のテキストボックスなどにクエリに沿ったレコードが表示されており、その各テキストボックスのコントロールソースにはQ_クエリのフィールド(T_マスタ)を設定しているため、データの直接修正を可能としています。 このような仕組みを構築し、実際にF_メインフォームを開き、テキストボックスなどに表示されているデータに「修正を加えたとき」又は、修正後、F_メインフォームを「閉じたとき」に、Microsoft Accessは動作を停止しましたの表示から、強制終了して落ちてしまいます。。。 この原因ですが、いくらクエリを使用していても、複数のサブフォームに一つのテーブルを使用して、データを直接更新したりするのはまずいのでしょうか? この問題が解決できずに今、本当に困っています。。。 どなたか詳しい方、ご教授をよろしくお願い致します・・

  • AccessのExcel出力について

    お世話になります。 教えてください。サブフォームを含んだフォームがあって、 このフォームで絞り込んだデータ(メインフォームとサブフォームの データ)をエクセルに出力する際、サブフォームのデータが出力されません。 ちなみにメインフォームには工事のデータ、サブフォームには その工事で使用した部品とその金額が入っています。 メインフォームのデータは『DoCmd.OutputTo acOutputForm』で すんなりと出力できたのですがサブフォームのデータが出力されません。 合計金額だけでも出力しようとメインフォームにテキストボックスを置き、 そのコントロールソースに『=サブフォームの合計金額』として表示できる ようにし、エクセルに出力しようとしましたがデータは出力できませんでした。 文章がわかりにくくて申し訳ありませんが、どなたかよい方法をご存知でしたら 紹介願えませんでしょうか。 よろしくお願い致します。

  • ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい

    日付/品番/出庫数のフィールドで構成された「明細テーブル」があります。 「日付」フィールドからなるメインフォーム、「品番/出庫数」からなるサブフォームをつくり、メインフォームのサブフォームコントロールのレコードソースを「サブフォーム」に指定しました。 日付を入れるとその日の出庫明細がサブフォーム上に表示されるのですが、このレコード件数をメインフォーム上のコントロールで表示したいのです。 サブフォームのヘッダにテキストボックスコントロールを作り「=Count([品番])」としてやれば、「サブフォーム上での」件数表示は出来るのですが、同じ式をメインフォーム上のコントロールに記述すると、「全レコードの件数」が表示されてしまいます(当たり前ですが) そこで、「=Count([埋め込み].Form![品番])」とやってみました。ここで「埋め込み」とはメインフォーム上のサブフォームコントロールの名前です。 結果は「#Error」となってしまいます。Count関数だけでなくSum関数などでも同様の結果となります。 はっきりいって「サブフォームのヘッダに表示させればいいじゃないか」というところなのですが、「式ビルダ」ではサブフォームのコントロール名も容易に参照できるようになっており、なにか方法があるのではないか、初歩的なところでつまずいていないか、と思案している次第です。 なにかアドバイスいただけたら幸いです。