SQLServerバックエンドに対して次のクエリを実行しました
SELECT TOP(1) (v.rownum + 99)
FROM
(
SELECT incrementNo-99 as id, ROW_NUMBER() OVER (ORDER BY incrementNo) as rownum
FROM proposals
WHERE [year] = '12'
) as v
WHERE v.rownum <> v.id
ORDER BY v.rownum
最初の未使用の提案番号を検索します。(それは最後のレコード+1についてではありません)
しかし、私ROW_NUMBER
はアクセスでサポートされていないことに気づきました。見てみましたが、似たようなものが見つかりません。
誰かがROW_NUMBER
アクセスで同じ結果を得る方法を知っていますか?
たぶん、これを行うためのより良い方法があります。
実際、人々は制約なしに提案No(incrementID)を挿入します。この番号はこの13-152のように見えます。xx-は今年のもので、-xxxは提案番号です。最後の3桁は増分であると想定されていますが、場合によっては、年に10回、いくつかの数字をスキップする必要があります。そのため、自動インクリメントを行うことができません。
したがって、このクエリを実行して、フォームを開いたときに、デフォルトの番号が最初の未使用の番号になるようにします。
使い方:
数は100から始まるので、私は-99を実行し、1から始まります。
次に、行番号とIDを比較して、次のようにします。
ROW NUMBER | ID
1 1 (100)
2 2 (101)
3 3 (102)
4 5 (104)<--------- WRONG
5 6 (105)
これで、4をスキップすることがわかりました。(4-99)=103を返します。
もっと良い方法があれば、変更してもかまいませんが、このクエリは本当に気に入っています。
他に方法がなく、アクセスで行番号をシミュレートできない場合は、パススルークエリを使用します。
ありがとうございました