Sub リンクテーブルのリセット()
'リンクテーブル名「T_Data」
'リンクテーブル上のオートナンバー型フィールド名「連番」
Dim DB As DAO.Database
Dim Tbl_D As DAO.TableDef
Dim strPath As String
Dim strSQL As String
'■自DBに接続し、リンクテーブル「T_Data」のテーブル定義を取得
Set DB = CurrentDb
Set Tbl_D = DB.TableDefs("T_Data")
'「T_Data」のテーブル定義から接続情報を採取
strPath = Tbl_D.Connect
'(変数strPathの値は「;DATABASE=リンク先DBのフルパス」になっている)'相方(リンク先)DBのフルパス部分をMid関数で取得する
strPath = Mid(strPath, InStr(strPath, ";DATABASE=") + Len(";DATABASE="))
'(変数strPathの値は「リンク先DBのフルパス」のみになる) '【豆知識】Mid関数は最後の引数(取り出す文字数)を省略すると
' 取出し開始位置以降全ての文字列を取って来る
Set Tbl_D = Nothing
Set DB = Nothing
'■フルパス情報を使って相方のDBに接続
Set DB = OpenDatabase(strPath)
DoCmd.SetWarnings False
'リンクテーブルのレコードを全削除
strSQL = "DELETE * FROM T_Data;"
DB.Execute strSQL
'オートナンバーフィールドのカウンターをリセット
strSQL = "ALTER TABLE T_Data ALTER COLUMN 連番 COUNTER(1,1);"
DB.Execute strSQL
DoCmd.SetWarnings True
DB.Close
Set DB = Nothing
MsgBox "リンクテーブル「T_Data」の全レコードを削除し、" & _
"「連番」フィールドのカウンターをリセットしました。", _
vbInformation
End Sub
ちなみに「ALTER TABLE T_Data ALTER COLUMN 連番 COUNTER(1,1);」の「COUNTER(1,1)」のところを「COUNTER(10,10)」(初期値10,増分10)に変えてみると、こんな連番が付与できます。