
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
ACCESS VBA でのエラー解決の根拠がわかりません エラー「イベントプロパティに指定した式・・
Access(アクセス)
-
ACCESSで値を代入できないとは?
Visual Basic(VBA)
-
-
4
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
5
VBAで3秒だけ時間を止めたい
Visual Basic(VBA)
-
6
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
7
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
-
8
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
9
アクセエスのレコードの更新をVBAでするには?
Access(アクセス)
-
10
ACCESSにて
Access(アクセス)
-
11
Access2010 「演算子がありません」エラー
その他(データベース)
-
12
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
13
選択したチェックボックスのみチェックを入れたいのですが
その他(データベース)
-
14
角丸四角形を描きたい
Excel(エクセル)
-
15
Access サブフォームでの選択行の取得
その他(データベース)
-
16
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
17
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
18
Access VBA acCmdSelectRecordについて
その他(データベース)
-
19
access テキストボックスの値取得
Access(アクセス)
-
20
Access を×ボタンで閉じる時、レコード保存したくない。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスでフォームビューがみ...
-
レコードを保存するコード ア...
-
フィルタ後のフォームの件数の...
-
ACCESSでフォームを使って、テ...
-
Access:フォームプロパティ「...
-
アクセス データの競合を非表...
-
AccessVBA RecordSourceのリセ...
-
新規レコード行を非表示にしたい
-
アクセスの自動保存解除はでき...
-
Access フォームで入力した番...
-
Access2016 検索窓の設置(該当...
-
Accessでチェックボックスで抽...
-
accessのフォームのレコードの移動
-
レコード削除時に(サブ)フォー...
-
access 自作の移動ボタンのエラ...
-
Accessでのデータ消滅に...
-
Access レポート印刷するときに...
-
アクセスで数値型のフィールド...
-
データベースのINT型項目にNULL...
-
ACCESS フォームをそのまま印刷...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードを保存するコード ア...
-
アクセスでフォームビューがみ...
-
新規レコード行を非表示にしたい
-
レコード削除時に(サブ)フォー...
-
フィルタ後のフォームの件数の...
-
アクセス:フォーム入力で、最...
-
アクセスの自動保存解除はでき...
-
ACCESSフォームのリストボック...
-
AccessVBA RecordSourceのリセ...
-
レコードをダブルクリックする...
-
Access 「このレコードを保存す...
-
Access:フォームプロパティ「...
-
ACCESSでフォームを使って、テ...
-
Accessでフォーム上に 直前の...
-
ACCESS起動時に所定フォームを...
-
アクセス データの競合を非表...
-
Access サブフォームにフィルタ...
-
Accessでレコードの保存をせず...
-
Accessで上の行を自動でコピー...
-
Access レコード移動時イベント...
おすすめ情報