- 締切済み
登録する際空いているIDを自動で探すには?
既存データベースを使用してAceessで検索・登録を行おうと思っています。 検索するイベントプロシージャは完成したのですが、 登録でつまってしまっています。 どのような登録の仕方にしたいかと言いますと、 登録する際に自動で空きIDを探し出しそこに登録を行いたいのです。 現在は一番後ろのIDを自分で見つけてそこに1を足してIDとしています。 これは利用者IDがわからない人のためにつけた簡易的なものでIDがわかり次第この簡易的なIDを利用者IDに書き換えます。 このときに空きができてしまうので、この空きを埋めるような登録システムを作りたいのですが可能でしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nicotinism
- ベストアンサー率70% (1019/1452)
>これは利用者IDがわからない人のためにつけた簡易的なもので >IDがわかり次第この簡易的なIDを利用者IDに書き換えます。 >このときに空きができてしまうので・・・ この意味が分かりませんが、以前に考えたのはこんな風 欠番があれば最小値を求められます Function getNo() as Long Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim strSQL As String Dim cnT As Long Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset strSQL = "SELECT ID FROM テーブル名 order by ID;" rs.Open strSQL, cn, adOpenStatic, adLockReadOnly 'ここは状況によって改変を rs.MoveLast If rs.RecordCount <> Nz(DMax("ID", "テーブル名"),0) Then rs.MoveFirst cnT = 1 Do Until rs.EOF If rs!ID <> cnT Then getNo = cnT Exit Do End If rs.MoveNext cnT = cnT + 1 Loop Else getNo = Nz(DMax("ID", "テーブル名"),0) + 1 End If rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub
- bin-chan
- ベストアンサー率33% (1403/4213)
1)MAX(ID)までのダミーIDテーブルを生成 2)不一致クエリで、ダミーIDにあって本物にないIDを列挙 3)好きなものを選択 でどうでしょう?
補足
すでに既存のデータベースに2つのテーブルがあるのでそちらのテーブルを使い、空いているIDを探してそのID登録をしたいのですが 新しいテーブルを作らなくていいようなものはありませんか?
お礼
遅くなりましたが、ありがとうございました!