
No.6ベストアンサー
- 回答日時:
> クエリの後に
> フォームを指定し、切り替わらない様にと思ったのですが、このようにエラーが出てしまいます。
勝手に想像でコードを記述してもうまくは動かない場合がほとんどです。
VBAエディタ上で SelectObject をクリックしてF1キーを押すとヘルプが表示されます。
そこに解説と使用例がでていますので、まずはそれを調べましょう。
それを繰り返すうちにだんだんスキルが付いてきて、自分でコードが書けるようになります。
Function SaveRequery()
DoCmd.RunCommand acCmdSaveRecord
Docmd.SelectObject acQuery, "管理一覧表表示"
Docmd.Requery
Docmd.SelectObject acForm, "管理表"
End Function
> また、クエリーを開いてない場合、開いていないというエラーが出てしまいます。
クエリを開いていない場合は、どうしたいのでしょうか。
何もしないのか、クエリを開いて更新するのか。
何をしないとすると、下記のようにエラー処理を追加するといいでしょう。
Function SaveRequery()
On Error Resume Next 'エラーがでても無視して次に進む
DoCmd.RunCommand acCmdSaveRecord
Docmd.SelectObject acQuery, "管理一覧表表示"
If Err <> 0 Then Exit Function '前のコードでエラーがでたら処理を抜ける
Docmd.Requery
Docmd.SelectObject acForm, "管理表"
End Function
これは簡易的なエラー処理です。
短い処理ですのでこれでも問題ないですが、長い処理の場合は、きちんとしたエラー処理にすべきですので、詳細はヘルプなどで調べておいてください。
No.5
- 回答日時:
> 例えば、Form内にテキストボックスが5個あるのであれば、5個分下記構文を作る必要があるかどうか。
テキストボックスのどれか一つでも入力したら即、反映させたいならそうなります。
ただし、下記のようにすれば一つにまとめることも可能です。
フォームのモジュールに下記の関数を作成。
Function SaveRequery()
DoCmd.RunCommand acCmdSaveRecord
Docmd.SelectObject acQuery, "クエリ名"
Docmd.Requery
End Function
5つのテキストボックスをすべて選択した状態で、「更新後処理」欄に下記のように設定。
=SaveRequery()
この回答への補足
何度も回答ありがとうございます。
教えて頂いた構文だとクエリーが最前面に出てしまうので、下記の通りクエリの後に
フォームを指定し、切り替わらない様にと思ったのですが、このようにエラーが出てしまいます。何か間違っているのでしょうか? また、クエリーを開いてない場合、開いていないというエラーが出てしまいます。
現在、回避策を調べています。
イベント プロパティに指定した式 更新後処理 でエラーが発生したました: 指定した式は、いずれかの引数とデータ型が対応していません。
*マクロ名、ユーザー定義関数名、[イベント プロシージャ]以外の式が指定されています。
*関数、イベント、マクロの評価でエラーが発生しました。
Function SaveRequery()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.SelectObject acQuery, "管理一覧表表示" , "管理表"
DoCmd.Requery
End Function
No.4
- 回答日時:
> クエリは直接というより、フォームからクエリ起動のボタンを設置し、クリックして開くようにしています。
そのクエリを開いた状態で、フォームから編集、レコード保存してもすぐに、クエリに反映されないと言うことでしたら、
下記のコードを実行すれば反映します。
Docmd.SelectObject acQuery, "クエリ名"
Docmd.Requery
ようやく、やりたいことができました。ありがとうございました。
ちなみにですが、Form内にあるテキストボックスがどれか一つでも変更されると下記構文を実行するようにしたいのですが、やはり、テキストボックスがあるだけ、下記構文を追加してやるしかないのでしょうか?
例えば、Form内にテキストボックスが5個あるのであれば、5個分下記構文を作る必要があるかどうか。
Docmd.SelectObject acQuery, "クエリ名"
Docmd.Requery
No.3
- 回答日時:
> 下記のようにしてみたのですが、エラーが出てしまいます。
> DoCmd.RunCommand acCmdSaveRecordの使い方が間違っているのでしょうか?
>
> Private Sub Form_AfterUpdate(Cancel As Integer)
> DoCmd.RunCommand acCmdSaveRecord
> End Sub
フォームの更新後処理に割り当ててますが、更新後処理と言うことはその時点ですでにレコード保存されていますので、もう、レコード保存できない(する必要がない)のでエラーになります。
テキストボックスに入力したときにすぐ反映させたいということが希望でしたら、「テキストボックス」の更新後処理に設定してください。
Private Sub テキスト1_AfterUpdate(Cancel As Integer)
DoCmd.RunCommand acCmdSaveRecord
End Sub
> クエリーで一覧を表示している時に、フォーム側で入力した内容を保存ボタンなどで保存しないとクエリーの一覧が更新されないので、今回の質問をしました。
フォーム側でレコード保存しても、既に開いているクエリには自動では反映されません。
クエリに対して再クエリをする必要があります。
ところで、クエリは直接開いているのですか。それともフォームのレコードソースとしてクエリを設定して、フォームを開いているのですか。
この回答への補足
クエリは直接というより、フォームからクエリ起動のボタンを設置し、クリックして開くようにしています。この場合は、フォームのレコードソースとしてのクエリということになるんでしょうか。
補足日時:2012/11/06 14:00No.1
- 回答日時:
フォームが連結フォーム(レコードソース、コントロールソースの設定されているフォーム)なら、テキストボックスの更新後処理(AfterUpdate)で、
Docmd.RunCommand acCmdSaveRecord
でできるはずです。
更新前処理(BeforeUpdate)ではエラーになります。
この回答への補足
下記のようにしてみたのですが、エラーが出てしまいます。
DoCmd.RunCommand acCmdSaveRecordの使い方が間違っているのでしょうか?
Private Sub Form_AfterUpdate(Cancel As Integer)
DoCmd.RunCommand acCmdSaveRecord
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Access(アクセス) Accessフォームで複数条件でフィールドの値を表示する方法 4 2022/07/21 10:47
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
- Excel(エクセル) エクセルでシート保護のかかり方の違いとセルの非保護の設定 3 2022/08/09 10:02
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
このQ&Aを見た人はこんなQ&Aも見ています
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
-
4
VBAで3秒だけ時間を止めたい
Visual Basic(VBA)
-
5
Access2010 「演算子がありません」エラー
その他(データベース)
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
8
アクセエスのレコードの更新をVBAでするには?
Access(アクセス)
-
9
Access サブフォームでの選択行の取得
その他(データベース)
-
10
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
11
ACCESSにて
Access(アクセス)
-
12
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
13
サブフォームのデータを保存する方法
その他(Microsoft Office)
-
14
ACCESS VBA でのエラー解決の根拠がわかりません エラー「イベントプロパティに指定した式・・
Access(アクセス)
-
15
ACCESSでVBAから選択クエリの抽出条件を指定したい
Access(アクセス)
-
16
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
17
角丸四角形を描きたい
Excel(エクセル)
-
18
選択したチェックボックスのみチェックを入れたいのですが
その他(データベース)
-
19
Access VBA acCmdSelectRecordについて
その他(データベース)
-
20
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESS2003 タブコントロール...
-
Access2003 入力フォームの表...
-
アクセス2003で入力フォー...
-
Access2002でクエリで抽出され...
-
フィルタ後のフォームの件数の...
-
レコード削除時に(サブ)フォー...
-
ACCESSでフォームを使って、テ...
-
アクセスでフォームビューがみ...
-
アクセスでフォームの作り方、...
-
ACCESSフォームのリストボック...
-
Access フォームで入力した番...
-
レコードを保存するコード ア...
-
Access フォーム入力で、一度に...
-
Accessで上の行を自動でコピー...
-
アクセス フォームでの行追加
-
ACCESSのクエリで抽出したデー...
-
アクセスのフォームが見れない...
-
Access2003で現在時刻の自動取...
-
ユニオンクエリについて質問です
-
ACCESS / 抽出条件によってレポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
新規レコード行を非表示にしたい
-
アクセスでフォームビューがみ...
-
レコード削除時に(サブ)フォー...
-
Accessで上の行を自動でコピー...
-
AccessVBA RecordSourceのリセ...
-
アクセスのフォームで立ち上げ...
-
ACCESSフォームのリストボック...
-
アクセスの自動保存解除はでき...
-
アクセス:フォーム入力で、最...
-
Accessで一件の新規レコードの...
-
フィルタ後のフォームの件数の...
-
アクセス データの競合を非表...
-
Access:フォームプロパティ「...
-
Access2010、値を入力したら自...
-
レコードをダブルクリックする...
-
Accessでのデータ消滅に...
-
ACCESSでフォームを使って、テ...
-
Accessでフォーム上に 直前の...
-
アクセスでの警告について教え...
おすすめ情報