はあなたのオートナンバー列のシード値をルックアップする必要があり、実際の次の値が何であるかを知っている:適用することができ、where句もあります。あなたはたくさんのそれを呼び出すするつもりなら、あなたはおそらく、あなたがこの関数を呼び出すたびに、ADOX Catalogオブジェクト変数をキャッシュするのではなく、再初期化することだろう
Public Function GetSeedValue(strTable As String, strColumn As String) As Long
Dim cnn As Object 'ADODB.Connection
Dim cat As Object ' New ADOX.Catalog
Dim col As Object ' ADOX.Column
Set cnn = CurrentProject.Connection
Set cat = CreateObject("ADOX.Catalog")
cat.ActiveConnection = cnn
Set col = cat.Tables(strTable).Columns(strColumn)
GetSeedValue = col.Properties("Seed")
Set col = Nothing
Set cat = Nothing
Set cnn = Nothing
End Function
:このコードは、ことを行います。
マルチユーザー環境では、使用したときに別のユーザーによって更新された可能性があるため、正確ではない可能性があります。ただし、Max()+ 1が持つことができるAutonumber値をスキップするのに問題はありません。
次のAutonumber値を気にすると、誤って使用していることに注意してください。オートナンバーの値はサロゲートキーなので、値が何であるかは決して気にしないでください。
ADOXを使用して、次の自動番号の値を判断することができます(http://stackoverflow.com/questions/6498221/retreve-next-autonumber-for-access-table/6499393#6499393を参照)。欲しいです。しかし、あなたの質問は、あなたが本当に望むかもしれないことが "新しい"レコードに移動することを示唆しています。それは別の質問です。 – HansUp
Ctrl +やPage Downを押しながらレコードを追加できるので、コントロールを削除するだけでは一般的には不十分です。 Allow Additionプロパティも無効にしましたか?それはあなたのRunCommandがもはや動かない理由を説明します。 –
@hans、実際には新しいレコードに移動する必要はありませんでした。このシナリオでは、単にinsertコマンドを実行するだけで同じことができました。 – Sinaesthetic