2

したがって、SQLBEを備えたAccess2007FEがあります。新しいレコードの追加と既存のレコードの更新の両方にバインドされたフォームを使用しています。

私の問題はこれです:ローカルAccessテーブルとは異なり、SQLテーブルを使用すると、レコードが保存されるまでAutoNumberフィールド( "SeqID")が使用できなくなります。フォームに「保存」ボタンがあります。このボタンは、新しいレコードに対してさまざまな検証手順を実行し、検証が成功すると新しいレコードをテーブルに追加します。その時点で、コードでそのレコードのAutoNumberを取得できますが、問題は、SeqIDフィールドで更新/表示するフォームを取得できないことです。バインドされた形式であるため、SeqID.Valueを単純に更新することはできません。このフィールドは、変更されたフィールドの監査証跡など、後で他の目的で使用されるため、更新する必要があります。

どんな助けでも大歓迎です。

4

2 に答える 2

1

これらの行で何かを試してください。わたしにはできる:

Private Sub AText_AfterUpdate()
   Me.Dirty = False
   Me.Recalc
End Sub

実験が機能する場合は、ステップをコードの流れに合わせるだけです。

于 2012-09-06T14:22:19.713 に答える
0

SharePoint または SQL サーバー、または実際にはほとんどのサーバー ベースのデータベースを使用している場合、自動採番 ID はレコードの保存時まで生成されません。フォーム + サブ フォームでは、フォーカスがサブ フォームに移動すると、Access は常にレコードの自動保存を行うため、これらの親フォーム + レコードに子レコードを関連付ける際に問題は発生しません。

バインドされたフォームの場合、オートナンバー ID を取得する唯一の方法は、レコードの保存を強制することです。簡単なコードは次のとおりです。

If isnull(me!ID) = true then
    ' we don't have a record primary key yet, save record
   Me.Dirty = false
End if

この時点で、PK autonumber を使用できます。

MsgBox "pk = " & me!id

したがって、単純な me.Dirty = false はレコードを保存し、ID の生成を強制し、それに続くコードは自由に使用できます + PK 自動番号を自由に取得します。

于 2012-09-06T16:39:48.697 に答える