0

異なるシーケンシャルフィールドを持つエントリを作成するために使用されているフォームがあります。現在、これを行うためにDLookupを使用していますが、いくつかの問題が発生しています。

 Me.txtProgramID.Value = DLookup("ProgramID", "tblMain", "Program = Forms!Form2!Combo.Value") + 1
 Me.txtProgramNumber.Value = DLookup("Number", "tblMain", "Program = Forms!Form2!Combo.Value") + 1
 Me.txtSequence2.Value = DLookup("Sequence2", "tblMain", "Program = Forms!Form2!Combo.Value") + 1
 Me.txtSequence1.Value = DLookup("Sequence1", "tblMain", "Program = Forms!Form2!Combo.Value") + 1

ProgramID、ProgramNumber、Sequence1、Sequence2の4つの異なる値があります。Comboの内容に基づいて、新しいレコードが追加されるたびに、新しいフィールドの内容は前のフィールド+1である必要があります。

Comboの内容がAであり、ProgramID、ProgramNumber、Sequence 1、およびSequence 2の値がすべて1であるとします。Aの新しいレコードには、すべて2として含まれている必要があります。私が抱えている問題は、DLookupの代わりに最新のエントリを見つけると、元のエントリがキャプチャされます。つまり、1、2、3、4などではなく、1、2、2、2があります。

本当に私が知る必要があるのは、DLookupがそれぞれのプロファイルに関して最新のレコードを取得する方法です。

4

1 に答える 1

1

DMaxで逃げることができるかもしれませんが、複数のユーザーがいると、すべての賭けは無効になります。

Me.txtProgramID.Value = DMax("ProgramID", "tblMain", _
     "Program = Forms!Form2!Combo.Value") + 1

ProgramIDはおそらく自動番号である必要があるため、次の番号を取得する必要はなく、自動的に処理されます。ただし、自動番号が前の番号+1であるという保証はありません。なぜprogramIDとprogramnumberがあるのか​​わかりません。

適切な連続番号は複雑ですが、より複雑です。VBAにアクセス:列で最大数を見つけて1を追加します。

于 2013-02-04T19:01:49.863 に答える