こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Access:検索フォーム

Access:検索フォーム
クエリを基に作成したフォームで「日付2」が変動する検索フォームを作りたいのですが上手く動作しません。
不足などを教えてください;
Access2007/WinXP

クエリ名 q_出席一覧絞込
1)フィールド名 日付1
 クエリ条件 >#2010/01/01#
      (2010/1/1以降)
2)フィールド名 日付2
 クエリ条件 ([Forms]![出席者絞込]![検索日]に入力した日付以降の日付)

フォーム名:出席者絞込
帳票フォーム
1)テキストボックス名:検索日
  定型入力: 0000/00/00;0;*
  非連結
2)ボタン名:検索ボタン1
  クリック時イベントプロシージャ:
  Private Sub 検索ボタン1_Click()
Me.Requery
  End Sub

また、フォーム上で元テーブル「出席一覧」のフィールド「単価」の修正機能を加えたい状態です。
(クエリにも「単価」は呼び込んであります)
クエリ元のフォーム上で修正>ボタンクリック時にRequeryを記入、という考えでいいのでしょうか?
参考になるサイトなどあればご紹介ください。

投稿日時 - 2010-10-20 18:18:50

QNo.6263467

すぐに回答ほしいです

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

ボタンクリックでもいいのですが、フィールドに
入力直後に確認する方法として更新前処理で、

Private Sub 単価_BeforeUpdate(Cancel As Integer)
If MsgBox("単価はこれでいいですか", vbYesNo) = vbNo Then
Me.Undo
End If
End Sub

のように単価フィールドに入力し、単価フィールドが
更新される前にメッセージを出せば不慮の更新が
防げます。上記コードをフォームのコード表に
貼り付け保存し、確認してみてください。
一応、帳票フォームであるとします。

投稿日時 - 2010-10-21 14:18:10

お礼

何度も初歩的質問を繰り返してしまいすいません。
ありがとうございました!
特にBeforeUpdateは考えつかなかったので助かりました。

投稿日時 - 2010-10-21 14:25:46

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(9)

ANo.8

入力して、確認メッセージを出し、もし
違うならば訂正したい、あるいは入力
したこと自体をキャンセルしたいという
ことですか?

投稿日時 - 2010-10-21 13:48:18

補足

何度もすいません、そういうことです。
テキストフィールドに入力して他レコードに移動で保存される、ではなく、
テキストフィールドに一旦入力して、ボタン押し、「保存しますか>Y/N」で確定ということです。
帳票なので無理がありそうですが。

投稿日時 - 2010-10-21 14:01:06

ANo.7

回答がかぶりましたが、

>ついでの質問ですいませんが、
>逆に言うと入力>確認>保存としたい場合は
>この方法ではだめということになりますよね?

保存は、

DoCmd.RunCommand acCmdSaveRecord

でレコードを確定させますが、こいうことではなく?

投稿日時 - 2010-10-21 13:39:19

ANo.6

すみません。鉛筆マークはフォームの左側でした。

Me.Requery で、ではなく、直接テーブルに反映されます。

投稿日時 - 2010-10-21 13:33:44

ANo.5

>また、フォーム上で元テーブル「出席一覧」のフィールド「単価」
>の修正機能を加えたい態です。
>(クエリにも「単価」は呼び込んであります)

「単価」も同じフォーム上に表示されているならば
フォーム上で変更すれば、テーブルに反映されれる
はずです。
ただし、修正したときフォームの右側に鉛筆マークが
表示されますが、そのままではデータが反映されないので
マウスで他のレコードのフィールドをポイントして
鉛筆マークが黒い三角マークに変わることにより
データがテーブルに反映されます。

投稿日時 - 2010-10-21 13:24:55

お礼

ありがとうございます完成しました!
ついでの質問ですいませんが、逆に言うと入力>確認>保存としたい場合は
この方法ではだめということになりますよね?

投稿日時 - 2010-10-21 13:33:01

ANo.4

日付1と日付2の日付は内容は何の日付ですか。
例えば生年月日と入会日付とか?
>「日付2」が変動する
日付1は固定した日付以後を検索対象にするのですね。
日付2に対しては、指定した日付より以後のデータを検索対象とする、ですか。
テストデータはどんな日付のものを考えるのが良いのか。
例えば生年月日と入会日付とか?と言いましたが、不自然な例なので。それが判れば処理のイメージが固まりますから。
あまり複雑な処理に見えないので、なぜ質問が出るのかと言うことも関連して、補足をお願いします。

投稿日時 - 2010-10-20 22:05:35

補足

日付1>登録日
日付2>講義日です。
検索部分はすいません解決したので後半部分を補足します。

クエリで絞り込んだ結果のうち、フィールド「単価」のみ修正をしたいです。
(他フィールドはロックをかけてあります)
レコードソースはクエリのまま。
単価を修正した後、ボタンを押してテーブルを更新したい、という流れです。
アクションクエリが必要なんでしょうか?

投稿日時 - 2010-10-21 13:09:05

ANo.3

回答と補足がかぶったようなので、最近、似たような
質問がありました。

http://oshiete1.watch.impress.co.jp/qa6243201.html

同じように、Access2007で検索、絞込み、で

Me.Requery

が機能しない、というものでした。この場合は
マクロで再クエリを実行するようにして解決
したようなのですが、ひょっとして同じような
現象かと思い、#1のような回答をした次第です。

投稿日時 - 2010-10-20 18:59:22

お礼

すいません根本的に作成時点で間違えていたらしく、一旦作り直したら普通に動作しました。レコードソースの設定をいじったのが原因でした。;
こちらの件はありがとうございました。

投稿日時 - 2010-10-21 13:05:30

ANo.2

#1です。

2)フィールド名 日付2
 クエリ条件 ([Forms]![出席者絞込]![検索日]に入力した日付以降の日付)

この部分の設定ならば、抽出条件に、

>[Forms]![出席者絞込]![検索日]

とすればいいのでは、と思いますが。たとえば、
元になるテーブルをT出席一覧とし、日付フィールド
だけでクエリを作ると以下のような感じ。

SELECT T出席一覧.日付 AS 日付1, T出席一覧.日付 AS 日付2
FROM T出席一覧
WHERE (((T出席一覧.日付)>#1/1/2010# And (T出席一覧.日付)>[Forms]![出席者絞込]![検索日]));

以上以外はもう少し説明を。

投稿日時 - 2010-10-20 18:52:00

ANo.1

>上手く動作しません。

というのは、Me.Requery が機能しないということですか。
そうであるならば、ただの再クエリをマクロで実行するようにしてみて
ください。
そうでないならば、何がうまくいかないのか具体的に説明を。

投稿日時 - 2010-10-20 18:39:39

補足

言葉足らずですいません。
すべて「出席者絞込」フォーム上のことです。
テキストボックス「検索日」に条件を入力し、検索ボタンを押しても、フォームの帳票が絞り込み結果を表示してくれない(ボタンが動作していない)、です。

投稿日時 - 2010-10-20 18:43:55

あなたにオススメの質問