Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2016)
レコード作成後にフォームを開く
投稿日時: 19/02/04 18:46:48
投稿者: Manabukunn

この度はお世話になります。
初心者で誠に申し訳ございませんが質問させていただきます。
現在、”基本情報”というフォームを開いており、そこに顧客IDが入力されております。
この顧客IDとリレーションを組んである”来店日”テーブルにそのフォームに入力されている
顧客IDを引き継いで新しい”来店日”テーブルに新しいレコードを追加して、さらにそのテーブルを
用いて作成してある”来店日”フォームを開くというボタンを作成したいと考えております。
 
Sub VAS_add()
 
End Sub
 
Dim db As Database
Dim rs As Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("来店日", dbOpenDynaset)
 
rs.AddNew
rs!顧客ID = Me!顧客ID
 
rs.Update
 
DoCmd.OpenForm "来店日"
 
End Sub
 
としたところレコードは作成されるのですがフォームが開きません。
 
DoCmd.OpenForm "来店日"
 
単独ですときちんと開くのですが現在この原因がわからず困っております。
大変申し訳ございませんが解決法お願いいたします。

回答
投稿日時: 19/02/05 01:17:46
投稿者: hatena
投稿者のウェブサイトに移動

提示のコードは実際のものとは違いますよね。(提示のコードではコンパイルエラーになる)
実際のコードをコピーして貼り付けてください。
 
また、フォームが開きませんということですが、エラーメッセージはでないのでしょうか。
 
フォームを開いたとき、どのレコードを表示したいのでしょうか。
「基本情報」フォームの顧客IDのレコードでなくていいのでしょうか。

回答
投稿日時: 19/02/05 08:48:54
投稿者: Suzu

メッセージも何も無しで、フォームが開かないのでしょうか?
 
レコードロック絡みで、顧客IDの周辺レコードが読み取り専用になっているのであれば
メッセージが出たはずですし。。
 
レコードはきちんと追加されているのですか?
テーブル【来店日】の構成としては少なくとも
 
テーブル【来店日】
-------------
顧客ID
来店日
-------------
の構成と思われますが、
主キーは何ですか?
『顧客ID』のみで主キーはあり得ないですよね?
 
『顧客ID』『来店日』の複数フィールド?
  この場合は、顧客IDのみに値を入れて新規レコードにしようとしてもエラーになります。
 
それとも別にフィールドがあって、そのフィールドが主キー?
 
 
低い可能性ですが、DAO/Docmd の混載なので レコード反映までに時間が掛かっているのかな。
DAO使わずに、Docmd で、RunSQL を使い、追加クエリを投げてみてください。
 
確実なのは、
来店日レコードは、顧客IDに対し 複数レコードになると思われます。
「基本情報」をメイン、「来店日」をサブ とした メイン/サブ の構成フォームにしてしまえば
VBAは必要ないと思いますがいかがでしょう?

投稿日時: 19/02/10 22:26:28
投稿者: Manabukunn

返信が遅くなりました。
 
初心者であったため、ご指摘の通り
コードを記載する場所が間違っておりました。
標準モジュールに記載しておりましたため
動きませんでした。
今後ともよろしくお願いいたします。