dポイントプレゼントキャンペーン実施中!

Access初心者です(Access2016使用)。
テーブル1をレコードソースとしたフォーム1があります。
フォームは開く際に、acFormAddで開き、新規レコードの状態でフォーム1に配置した各コントロールに必要情報を入力していきます。
全ての情報を入力しフォーム1から離れる際に、テーブル1の「入力日時」フィールドに現在の日時を自動入力したいと思っています。
フォーム1に設置したコントロールに入力すると、オートナンバー型に数値(id)が自動で取得されるので、その数値を使用し下記のようにしてみました。
ただこれですと、「rstMy!入力日時 = Now」のところで「カレントレコードがありません。」とエラーになってしまいます。
修正箇所を教えていただけないでしょうか。
よろしくお願いします。

 
Dim dbsMy As DAO.Database
Dim rstMy As DAO.Recordset
Dim strSQL As String

Set dbsMy = CurrentDb
strSQL = "select * from テーブル1 where id=" & Me.id

Set rstMy = dbsMy.OpenRecordset(strSQL)

With rstMy
.Edit
rstMy!入力日時 = Now
.Update
End With
rstMy.Close

質問者からの補足コメント

  • つらい・・・

    もう少し細かい経緯をお話させていただきます。
    通常はわたしもNo1様の回答のようにAddNew/Updateを使用して、非連結フォームからテーブルにデータを追加しています。ただ今回登録フォームで「添付ファイル型」を使用しており、非連結のコントロールが使えずに困っています。
    苦肉の策として連結したフォーム/コントロールを用いて、直接テーブルに値を入れこもうとしています。
    ただ、入力作業中にフォームを離れると中途なレコードが残るので、全項目入力を終えたら、便宜上「登録ボタン」を押し、日時を記録させ、フォームを離れる際に「日時」が入力済であればフォームを閉じる、「日時」が未入力ならば、中途の入力情報を削除するといった方法を考えています。
    この方法が理にかなっているかどうかもそもそも疑問がありますので、もし良い方法や参考になるサイトがあれば、ご助言いただけると幸いです。
    よろしくお願いします。

      補足日時:2020/11/02 15:37
  • どう思う?

    くんこばさん、ありがとうございます。ひとつずつ確認させてください。
    ①登録フォームを開く際に、
    Me.AllowAdditions = True
    DoCmd.GoToRecord acActiveDataObject, , acNewRec
    で、新しいレコードを追加し、追加したレコードに移動させているつもりですが、正しいでしょうか?
    ②①の作業後、フォームの連結コントロールに値を入力すると、VBA等でなにも操作しなくても、テーブルには値が入力されるとの認識は正しいでしょうか?
    ③登録ボタンをクリックして、「日時」を該当レコードに入力するには、AddNewとEditどちらを使えばよいでしょうか?
    AddNewを使うと、上記直接入力したレコードではなく、あらたなレコードができ、そこに日時だけが入力されています。Editを使うと「カレントレコードがありません」となりますが、どこがダメでしょうか?

      補足日時:2020/11/02 16:45

A 回答 (4件)

> 全ての情報を入力しフォーム1から離れる際に


1レコード入力するたびにフォームをクローズしているということですか?

フォーム1 のレコードソース が テーブル1なら、
フォームがらそのまま 「日時」のフィールドに書き込めます。

Private Sub Form_BeforeUpdate(Cancel As Integer)
  If Me.NewRecord Then
    Me.日時 = Now()
  End If
End Sub
    • good
    • 0
この回答へのお礼

ご助言ありがとうございます。
少し補足を付けましたので、ご意見お聞かせいただけると幸いです。

お礼日時:2020/11/02 15:38

ごめん!


勘違いしてた。
おそらく、新規IDのレコードが存在しないからエラーになってるんですよね。

であれば、新規IDのレコードを作成してからフォームから登録させたら?
フォームを開く前に新規IDでレコードを追加してからフォームを開くと。
そうすれば、確実にレコードは存在してるので。
出来そう?
    • good
    • 0
この回答へのお礼

何度もありがとうございます。
なかなかうまくできません><
新たに補足つけましたので、ご助言お願いします。

お礼日時:2020/11/02 16:46

accessはしばらく使ってなくてね。


これはどう?

https://tsware.jp/tips/tips_490.htm
    • good
    • 0
この回答へのお礼

くんこばさん、ごめんなさい。
単純にNo2さんの対応でうまくいくことが分かりました。
いくつものご助言申し訳ありませんでした。
また、機会があればお助けください。

お礼日時:2020/11/02 17:05

新規にレコード作成するなら、それではダメ。


そのやり方は、データありきのやり方。

https://pc.arthhuman.com/data-add/
    • good
    • 0
この回答へのお礼

返答が遅くなってごめんなさい。
貼っていただいたリンクは、フォームに設置してあるコントロールが非連結のときは、新たにレコード枠をとって、そこにコントロールに記載された値を入れ込むというものですよね。
わたしも通常はそのように入力フォームを作るのですが、今回「添付ファイル型」のコントロールを配置したため、非連結のコントロールが使えないようです。
そもそも考え方が間違えているのかもしれませんので、良い案がありましたら再度お教え願います。

お礼日時:2020/11/02 15:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!