| オートナンバー型フィールドの値を再設定する方法 |
|
対象バージョン : 97, 2000(MDB), 2002(MDB), 2003(MDB)
最終更新日 : 2005/04/25
(オリジナル作成日 : 1999/02/21)
概 要
オートナンバー型のフィールドは、該当のテーブルが空の場合、データベースを最適化することにより初期値(次回入力時 1 )に戻る、とされています。
これを最適化を行うことなく、プロシージャで設定する方法です。
オートナンバー型のフィールドは、VBA + DAO
を使用することにより、任意の値を代入することができます。また、このフィールドの取りうる値には循環性(「オートナンバー型フィールドが上限値を超えた場合はどうなる?」参照)があるので、これを利用して初期値を設定します。
構 文
CALL InitializeFieldValue(TableName, FieldName [,InitialValue])
解 説
InitializeFieldValue 関数は、指定したテーブルのレコードを削除し、オートナンバー型のフィールドの初期値を設定します。
InitializeFieldValue 関数では次の引数を使用します。
| 引 数 | 内 容 |
|---|---|
| TableName | テーブル名を示す文字列式 |
| FieldName | フィールド名を示す文字列式 |
| InitialValue | 次回入力時の初期値。省略時は 1。 |
【プロシージャ】
Public Sub InitializeFieldValue (argTableName As String, argFieldName As String, _
Optional argInitValue)
Dim lngInitValue As Long
Dim db As Database
Dim rs As Recordset
If IsMissing(argInitValue) Then
lngInitValue = 0
Else
lngInitValue = argInitValue -1
End If
Set db = CurrentDb
db.Execute "DELETE FROM " & argTableName
Set rs = db.OpenRecordset(argTableName, dbOpenTable)
rs.AddNew
rs(argFieldName) = -1
rs.Update
rs.AddNew
rs(argFieldName) = lngInitValue
rs.Update
rs.Close
db.Execute "DELETE FROM " & argTableName
db.Close
Set rs = Nothing Set db = Nothing End Sub
補 足