2016-06-30 14 views
1

Accessでフォームにプルされるとすぐにレコードに値を書き込もうとしています。 Form_currentイベントコードにコードを挿入し、これが機能すると思っていましたが、予期しない結果が発生しています。前のレコードに書き込んでいます。たとえば、レコードAからレコードBに行くと、レコードAのフィールドに値が書き込まれます。奇妙なことに、メッセージボックスにフィールドの値が表示されていれば、レコードBの値が表示されます。それは非常に単純なコードですが、ここに私が持っているものがあります。私はRefreshRecordとDoEventsを試しました。なぜなら、彼らが助けてくれると思ったからですが、そうではありませんでした。Form_currentでVBAコードにアクセスします。現在のレコードではなく、前のレコードを更新します。

Private Sub Form_Current() 
Dim username As String 

username = Right(Environ("USERPROFILE"), Len(Environ("USERPROFILE")) - InStrRev(Environ("USERPROFILE"), "\")) 'Removes path and keeps the Novell ID 

DoCmd.RefreshRecord 
DoEvents 

Me.Record_lock = vbTrue 
Me.Locked_by = username 


End Sub 

これについての助けに感謝します。以前はExcelでVBAを扱っていましたが、実際にはAccessにアクセスしていませんでした。

答えて

1

Form_Currentフォームが開いている間は繰り返し起動できます。焦点は、それを現在のレコードを作り、レコードに移動し またはフォームが更新または再クエリであるときときForm.Currentイベントヘルプトピックから

...

に発生します。

だからあなたのコードで、それはあなたがRecord_lockを更新している、あなたはその時点でB.

を記録するために離れて、レコードAから移動記録AのためのLocked_by値の後に、記録B」はなってきたことは驚くべきことではありません現在のレコード "なので、更新された値も持っているはずです。あなたはその点をMsgBoxで確認しました。ただし、そのレコードへの変更がまだ保存されていない可能性があります。つまり、ソーステーブルにはまだ表示されません。

フォームに表示された更新されたレコードBの値が表示されないという問題がある場合は、別の行にMe.Refreshを追加してからEnd Subを追加してください。

+0

レコードBが更新されていないため、混乱していました。更新が魅力的に機能した後、あなたのリフレッシュの提案。どうもありがとうございました。 – Fred

1

私は最初にコメントしたいと思いますが、私は新しいユーザーです。フィールドを変更する前に、レコードをリフレッシュしようとしましたか?

+0

私はしましたが、HansUpが指摘したように正解ではありませんでした。しかし、助けてくれてありがとう。とても有難い。 – Fred

関連する問題