Jet(MS Access)获取COUNTER列的种子和增量

时间:2012-10-24 20:39:01

标签: ms-access ddl jet

是否有人知道如何在 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)
)

创建下表(为演示添加了一些数据):

enter image description here

2 个答案:

答案 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