是否有人知道如何在 Jet(MS Access)数据库中检索种子并增加自动增量字段(也称为COUNTER或Access UI中的“AutoNumber”)?
我枚举了相应DAO.Field对象,ADO.Field对象和ADOX.Column对象的所有属性,但无法识别任何内容。任何方法都是可以接受的,包括MSys *表或本机方法调用的黑客攻击。
背景
在Jet SQL中,您可以使用自定义种子创建自动递增列,并使用DDL数据类型子句COUNTER(seed, increment)
进行递增,如下所示:
CREATE TABLE ODD_INCREMENTER (
ID_COL COUNTER(-52098, 42)
, TEXT_COL VARCHAR(50)
)
创建下表(为演示添加了一些数据):
答案 0 :(得分:3)
您可以使用ADOX
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim col As ADOX.Column
Set cat.ActiveConnection = CurrentProject.Connection
Set tbl = cat.Tables("Table1")
Set col = tbl.Columns("AKey")
'Next autonumber
lngSeed = col.Properties("Seed")
Allen Browne有一个相当详细的参考:http://allenbrowne.com/ser-40.html
答案 1 :(得分:2)
考虑使用后期绑定而不是添加引用。
通过检查其属性,您可以获得除种子之外的增量。
Public Sub SeedAndIncrement(ByVal pTable As String, _
ByVal pAutonumField As String)
Dim cat As Object
Dim objColumn As Object
Set cat = CreateObject("ADOX.Catalog")
Set cat.ActiveConnection = CurrentProject.Connection
Set objColumn = cat.Tables(pTable).Columns(pAutonumField)
Debug.Print "Seed: " & objColumn.Properties("Seed")
Debug.Print "Increment: " & objColumn.Properties("Increment")
Set objColumn = Nothing
Set cat = Nothing
End Sub