これ何て呼びますか

Access2000を使用しています。
オートナンバー型でないフィールドで、入力の
際にdmaxを使用して連番を振っているのですが、
登録されているデータに関して、空き番がない
かどうかを確認したいのですが何か方法はあるでしょうか?
(登録されているレコード数は約三万件ですので目で確認
 するだけではきついので・・・・)
何か良い方法があるようなら教えてください。
よろしくお願いします。

A 回答 (5件)

次の条件で VBAを作りました。


 ◎テーブル名 = テーブル1
 ◎連番のフィールド名 = ID とし
 ◎連番は後から入力した数値が
  先に入力した数値より
  小さくなることは無い。
  (dmaxを使用しているので大丈夫かと思いますが)


Sub test()
Dim Db As Database
Dim Rs As DAO.Recordset
Dim Temp As String
Dim I As Integer

Set Db = CurrentDb()
Set Rs = Db.OpenRecordset("テーブル1")

Rs.MoveFirst
I = 1
Temp = ""
Do Until Rs.EOF = True
Do While I < Rs!ID
Temp = Temp & " " & I
I = I + 1
Loop
Rs.MoveNext
I = I + 1
Loop
Rs.Close
Set Rs = Nothing
Db.Close
Set Db = Nothing
MsgBox "次の数字が抜けています。" & vblf & Temp
End Sub
    • good
    • 0

参考URLで提示されているSQLが使えるかもしれません。


エイリアスを使用した対象テーブル自身への自己結合で処理していますので、
番号管理用に別表を使用する私の案(No.2)よりスマートかもしれません。
(動作検証はしていません)

参考URL:http://www.geocities.co.jp/SiliconValley/4334/un …
    • good
    • 0

バッチ処理的な考えを出してみます。

#3のご解答と似ているようでもあり違うようでもあり。一応載せます。
ソートと主キーの関係は、下記「注意」をご参考に。
適宜Msgboxはコメント化して下さい。
(A)月、週、日1回とかで良ければ。また
(B)ソートしても良ければ。
-------
(1)データ-並べ替-昇順でソート
(2)データをシーケンシャルに読んで、直前のものと比べて+1かどうかチェックする。
------
注意
主キーを設定していなくて,「ID」フィードが主キーに設定されていることを気づかず、ソート後に、テーブル上で、番号フィールドでソート出来ているに関わらず、テスト結果がおかしく、手間取りました。
今は番号フィールドが主キーとしてテストして上手く行きました。
------
Sub test01()
Dim db As Database
Dim rs As Recordset
Dim mae番号
Dim fst As String
Set db = CurrentDb
Set rs = db.OpenRecordset("経理1", dbOpenDynaset)
fst = "y" '第一レコードのスイッチサイン
rs.MoveFirst
While Not rs.EOF
'------------前レコードの番号+1の番号か
MsgBox rs!番号 ' & "=" & mae番号 + 1
If fst = "y" Then GoTo p01
If Val(rs!番号) = Val(mae番号 + 1) Then
Else
MsgBox rs!番号 & "連続せず"
End If
'-----------
p01:
fst = "n"
mae番号 = rs!番号 '1つ前の番号として保存
rs.MoveNext
Wend
'---------
rs.Close
End Sub
    • good
    • 0

1~登録済み最大番号までのすべてを登録(欠番なし)した番号管理用の表を用意して、Left JoinまたはNot Existで判断するとよいと思います。

    • good
    • 1

まず最終レコードと連番の数字が合ってるかを調べてみるとか、それでも心配ならクエリで調べたいテーブルのフィールドを選択して抽出条件に null と入力して実行すれば値の入っていないレコードがでます。

一レコードも出なかったら空き番がないということでは

この回答への補足

すばやい回答ありがとうございます。
連番となっているのは主キーですので
nullとなっていることはありません。
VBAなどでできれば良いなー(VBAの
知識はほとんどありませんが・・・)
と考えております。

補足日時:2003/01/17 16:59
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報