1

有谁知道如何在Jet (MS Access)数据库中检索自动增量字段(又名 COUNTER,或 Access UI 中的“自动编号”)的种子和增量?

我已经枚举了对应的 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)
)

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

在此处输入图像描述

4

2 回答 2

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

于 2012-10-24T20:54:11.903 回答
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
于 2012-10-24T21:02:43.130 回答