1,000ポイントで、抽出条件を指定するAccessフォーム作成できる方!

Accessで、「開始日: 1月4日 〜 終了日: 1月6日」などと指定して、期間内だけ集計して表示させることが実現できません。
「○△にすればいい」というような「方法」ではなく、具体的に実現していただける方、いらっしゃいますか? 解決していただいた方(1名様)には、1,000ポイント贈呈いたします。詳細は
http://www.geocities.jp/rstreaming/215.html

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/02/14 23:58:23
  • 終了:--

回答(6件)

id:taka-hr No.1

taka-hr回答回数57ベストアンサー獲得回数42005/02/15 00:32:34

直してみました。

q_防御率クエリのパラメータ名が間違っていたので変更(f_防御率→f_main)しただけだったと思います。

id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982005/02/15 07:25:52

こういうやり方でOKなら、作成方法を提示します。

開始日と終了日をもつテーブルを作成し、それとリンクさせて 抽出するという方法です。

前の質問をみたとき、別にテーブルを作成していいのか わからなかったので、どうしようかなぁって思ってたのですが、まだ解決されてないようなので、こういうやり方でもいいのかなぁと思って、提案させていただきました。

ちなみに アクセスのバージョンは 2000でいいのでしょうか?

id:radio3

ちょっとESCキー押すだけで書いていたコメントが全部クリアされてしまい...(TT)

taka-hr様

ありがとうございます!

ただ、こちらでは実行時エラー2501です(OpenFormはキャンセルされました)。修正してみたのですが、結局できませんでした。

taknt様

いつもお世話になっております。

 全期間の成績一覧、

指定期間の成績一覧

がカンタンに表示されればOKです。

ただ、zaikkさん提示のstLinkCriteria方式が、あと少しの修正で動作するように見えるのです。

現状は、Openフォーム(クエリ)時に、なぜか日付問合せダイアログが表示されてしまいます。

クエリを修正するだけで完成しそうに感じています。

ただ、こちらではそれができません。いくら直しても成功しないし、クエリ直すたびにフォームも作り直さなければならないので(関連付けられてるはずなのになぜ?)、手に負えません。

防御率2ボタン(stLinkCriteria)方式は、期間指定なしの時にデフォルト値(1900年〜2080年)が表示されない点が優れています。

というわけでして、今夜まで待ってみたいと思います(急いでません)。明日になっても解決できなければ、takntさんの方法でお願いしたいと思います。もちろん、その時点でtakntさんの御気が向いたら、で結構です。

こちらではOffice XPを使用してますが、Access2000で大丈夫だと思います。

215.mdb 更新しました。

2005/02/15 12:03:28
id:zaikk No.3

zaikk回答回数192ベストアンサー獲得回数22005/02/15 13:05:38

2005/2/15 12:50頃にダウンロードした215.mdbを確認しました。

防御率2ボタン(stLinkCriteria)方式は、下記の修正で動作するようになります。

1.クエリ[防御率]の下の欄にテーブル[成績]から[日付]フィールドを追加

(Openフォーム(クエリ)時の日付問合せダイアログは、このフィールドを求めています。)

2.フォーム[防御率]のプロパティから並べ替え[防御率.防御率計算]を削除

(ダウンロードした時点で、防御率計算というフィールドはソースに無いようです。)

3.フォーム[防御率]のテキストボックス[防御率計算]のコントロールソースを[防御率]に変更

(ダウンロードした時点で、防御率計算というフィールドはソースに無いようです。)

4.フォーム[防御率]のテキストボックス[日付の最小]のコントロールソースを削除し、[非連結]に変更

(ダウンロードした時点で、日付の最小というフィールドはソースに無いようです。)

この変更でとりあえず動作しますが、出てくる結果は日付単位の防御率となり、御希望の「指定した日付範囲の防御率」にはなりません。

taknt様に提案して頂いた方法を検討することをお勧めします。

(御希望の結果にならなかったため、ポイントは不要です。オープンポイントを使用させてしまい、申し訳有りませんでした。)

id:radio3

zaikkさま

そうですか。元々実現できない方法だったんですね。残念です。お知らせいただきありがとうございました。オープンポイントは気にしてません。お気遣いありがとうございました。

2005/02/15 14:31:46
id:miyake_kazu No.4

miyake_kazu回答回数23ベストアンサー獲得回数02005/02/15 15:33:02

まず、防御力計算、日付の最小についてはzaikkさんの回答の通りです。

①クエリーに以下のWHERE句を追加します。

WHERE (((成績.日付) Between [Forms]![f_main]![txt開始日] And [Forms]![f_main]![txt終了日]))

②f_mainフォームの防御率ボタンのイベントを、以下の通りに修正します。

Private Sub cmd防御率_Click()

Dim デフォルト開始日 As Date

Dim デフォルト終了日 As Date

’’ 初期値

デフォルト開始日 = ”1900/01/01”

デフォルト終了日 = ”2900/01/01”

’’ 開始日が指定されなかった場合

If IsNull(Me!txt開始日) Then

txt開始日 = デフォルト開始日

End If

’’ 終了日が指定された時

If IsNull(Me!txt終了日) Then

txt終了日 = デフォルト終了日

End If

’’ フォームを開く

DoCmd.OpenForm ”防御率”, acFormDS

End Sub

一応、これで動くようです。修正した内容をメールしておきましたのでご確認ください。

id:radio3

ありがとうございます。他の方からも送っていただき、解決できました。

2005/02/15 20:25:00
id:taka-hr No.5

taka-hr回答回数57ベストアンサー獲得回数42005/02/15 17:10:04

入力せずに防御率ボタンを押したときも

動作しないといけなかったのですね。

再度なおしてみました。

If文で入力欄がNullであればデフォルトの

値を直接入力欄のテキストボックスに設定

しています。

前と同じURLに置いたので今回のURLはダミーです。すみません。

id:radio3

ありがとうございます。他の方から送っていただき、解決できました。

2005/02/15 20:25:36
id:donmabo No.6

donmabo回答回数26ベストアンサー獲得回数12005/02/15 18:11:38

ポイント1000pt

URLはダミーです。

防御率2のボタンを完成させ,そのとき,開始日,指定日に指定があればその日まで,指定がなければ,最初からあるいは最後までの集計にするということでよいと理解しました。

>Openフォーム(クエリ)時に、なぜか日付問合せダイアログが表示されてしまいます

現状の「防御率2」のOpenFormメソッドのWhereConditionは,フォームに表示されるレコードを制限するものです。この場合,防御率フォームは集計用ですから日付がないのに,「日付」指定をしているので,「問い合わせ」がくるのです。

→WhereConditionはフォームそのものにではなく,フォームのデータに適用する必要があります。

変更点

防御率フォームの「防御率計算」のコントロールソースを「防御率」に(この指摘はすでにあったようです)。

日付の最小を入れるためにクエリにフィールドを追加。

↑これで,「防御率」のコマンドボタンは機能します。ただし,このボタンは,クエリをもとにしたフォームを開くだけのボタンです(2と併用することはなさそうなのでそのままに……)。

Private Sub cmd防御率2_Click()の変更と関数プロシージャの導入

テーブルを利用したり,不可視のテキストボックスを利用するととても簡単なのですが,お気に召さないようなので,防御率2で開くフォームのレコードソースをVBAで作成する形にしました。WhereConditionも防御率順の並べかえもここのSQLの中に入っています。

って,カレンダー機能について忘れていました。

上記のURLはダミーですが,その本の最後のほうにカレンダー機能とそれをもとにした値集合ソースの作り方についてけっこう詳しい記述があります。

ご質問にはお答えしましたが,テーブルでリレーションシップが作成されておらず成績の入力時に選手名とうまく連動していない(ほかからデータを持ってくるのですか?)とか,1/3イニングの処理について考えていらっしゃらないとかいろいろあるような気もしますが,質問外なので……。

id:radio3

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

テーブル利用,不可視テキストボックス利用が気に入らないというわけではないのです。

期間指定なしの時に、「1900年〜2080年」というような表示が出ているのは、あまり良いプログラムとはいえないと思うのです。(これはデフォルト値を現実的(2005/1/1〜2005/1/9)にしても同じです。”全期間”の集計だと直感で判別できてほしいと思います)

というわけで、そうした問題が表れないなら、むしろシンプルな方が望ましいです。テーブル利用,不可視テキストボックス利用で何ができるのか、までは知りませんでした。

対応版ありがとうございます! まだエラーになるのですが、「20」がかぶってるだけなので、修正してみます。

うまくいかなかったとしても、他の方に送っていただいた版で、もう解決しようと思います。ポイント後ほど入れます。

取り急ぎ、解決です。ありがとうございました!

御回答ありがとうございました!

年、4桁で認識してるみたいなので、初期値と&”20”&を修正するだけでOKでした。

バージョンの違いですかね?

お見事でした。コードもわかりやすいです。

このたびはありがとうございました!

2005/02/15 22:24:46

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません