- ベストアンサー
Access:検索フォームの作成方法と注意点
- Access2007/WinXPでクエリを基に作成したフォームで「日付2」が変動する検索フォームを作成する方法について教えてください。
- また、出席者絞込フォームで修正機能を加えたい場合はどのようにすればよいか教えてください。
- 参考になるサイトなどがあればご紹介ください。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
ボタンクリックでもいいのですが、フィールドに 入力直後に確認する方法として更新前処理で、 Private Sub 単価_BeforeUpdate(Cancel As Integer) If MsgBox("単価はこれでいいですか", vbYesNo) = vbNo Then Me.Undo End If End Sub のように単価フィールドに入力し、単価フィールドが 更新される前にメッセージを出せば不慮の更新が 防げます。上記コードをフォームのコード表に 貼り付け保存し、確認してみてください。 一応、帳票フォームであるとします。
その他の回答 (8)
- piroin654
- ベストアンサー率75% (692/917)
入力して、確認メッセージを出し、もし 違うならば訂正したい、あるいは入力 したこと自体をキャンセルしたいという ことですか?
補足
何度もすいません、そういうことです。 テキストフィールドに入力して他レコードに移動で保存される、ではなく、 テキストフィールドに一旦入力して、ボタン押し、「保存しますか>Y/N」で確定ということです。 帳票なので無理がありそうですが。
- piroin654
- ベストアンサー率75% (692/917)
回答がかぶりましたが、 >ついでの質問ですいませんが、 >逆に言うと入力>確認>保存としたい場合は >この方法ではだめということになりますよね? 保存は、 DoCmd.RunCommand acCmdSaveRecord でレコードを確定させますが、こいうことではなく?
- piroin654
- ベストアンサー率75% (692/917)
すみません。鉛筆マークはフォームの左側でした。 Me.Requery で、ではなく、直接テーブルに反映されます。
- piroin654
- ベストアンサー率75% (692/917)
>また、フォーム上で元テーブル「出席一覧」のフィールド「単価」 >の修正機能を加えたい態です。 >(クエリにも「単価」は呼び込んであります) 「単価」も同じフォーム上に表示されているならば フォーム上で変更すれば、テーブルに反映されれる はずです。 ただし、修正したときフォームの右側に鉛筆マークが 表示されますが、そのままではデータが反映されないので マウスで他のレコードのフィールドをポイントして 鉛筆マークが黒い三角マークに変わることにより データがテーブルに反映されます。
お礼
ありがとうございます完成しました! ついでの質問ですいませんが、逆に言うと入力>確認>保存としたい場合は この方法ではだめということになりますよね?
- imogasi
- ベストアンサー率27% (4737/17069)
日付1と日付2の日付は内容は何の日付ですか。 例えば生年月日と入会日付とか? >「日付2」が変動する 日付1は固定した日付以後を検索対象にするのですね。 日付2に対しては、指定した日付より以後のデータを検索対象とする、ですか。 テストデータはどんな日付のものを考えるのが良いのか。 例えば生年月日と入会日付とか?と言いましたが、不自然な例なので。それが判れば処理のイメージが固まりますから。 あまり複雑な処理に見えないので、なぜ質問が出るのかと言うことも関連して、補足をお願いします。
補足
日付1>登録日 日付2>講義日です。 検索部分はすいません解決したので後半部分を補足します。 クエリで絞り込んだ結果のうち、フィールド「単価」のみ修正をしたいです。 (他フィールドはロックをかけてあります) レコードソースはクエリのまま。 単価を修正した後、ボタンを押してテーブルを更新したい、という流れです。 アクションクエリが必要なんでしょうか?
- piroin654
- ベストアンサー率75% (692/917)
回答と補足がかぶったようなので、最近、似たような 質問がありました。 http://oshiete1.watch.impress.co.jp/qa6243201.html 同じように、Access2007で検索、絞込み、で Me.Requery が機能しない、というものでした。この場合は マクロで再クエリを実行するようにして解決 したようなのですが、ひょっとして同じような 現象かと思い、#1のような回答をした次第です。
お礼
すいません根本的に作成時点で間違えていたらしく、一旦作り直したら普通に動作しました。レコードソースの設定をいじったのが原因でした。; こちらの件はありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
#1です。 2)フィールド名 日付2 クエリ条件 ([Forms]![出席者絞込]![検索日]に入力した日付以降の日付) この部分の設定ならば、抽出条件に、 >[Forms]![出席者絞込]![検索日] とすればいいのでは、と思いますが。たとえば、 元になるテーブルをT出席一覧とし、日付フィールド だけでクエリを作ると以下のような感じ。 SELECT T出席一覧.日付 AS 日付1, T出席一覧.日付 AS 日付2 FROM T出席一覧 WHERE (((T出席一覧.日付)>#1/1/2010# And (T出席一覧.日付)>[Forms]![出席者絞込]![検索日])); 以上以外はもう少し説明を。
- piroin654
- ベストアンサー率75% (692/917)
>上手く動作しません。 というのは、Me.Requery が機能しないということですか。 そうであるならば、ただの再クエリをマクロで実行するようにしてみて ください。 そうでないならば、何がうまくいかないのか具体的に説明を。
補足
言葉足らずですいません。 すべて「出席者絞込」フォーム上のことです。 テキストボックス「検索日」に条件を入力し、検索ボタンを押しても、フォームの帳票が絞り込み結果を表示してくれない(ボタンが動作していない)、です。
お礼
何度も初歩的質問を繰り返してしまいすいません。 ありがとうございました! 特にBeforeUpdateは考えつかなかったので助かりました。