Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何读取表的主键字段

樟树  发表于:2010-06-07 14:13:22  
复制

在对表的结构不知情的情况下,要用VBA获取表的主键字段(可能由多个字段组成),该怎么做?

 

Top
煮江品茶 发表于:2010-06-07 14:50:43

请参见《滴血认亲》一文。



樟树 发表于:2010-06-07 15:15:48

功能很强大,很好。恕我愚昧,没看出我要的东西。能解释一下吗?



煮江品茶 发表于:2010-06-07 18:19:25

如果建立了关系,在MSysRelationships中可以找到主键,没建立关系不行。

此外,用OpenSchema 方法也可以找到主键,可以与Access中搜索一下写法。好像参数是28。



煮江品茶 发表于:2010-06-07 19:35:54

增加引用:microsoft ADO Ext.2.8 for DDL and Security

Function Keyname(tbname As String) As String
Dim cnn As New ADODB.Connection
Dim cat As New ADOX.Catalog
Dim tbl As ADOX.Table
Dim t As ActionEnum
Dim i As Long, j As Long
Set cnn = CurrentProject.Connection
Set cat.ActiveConnection = cnn
Set tbl = cat.Tables(tbname)

For i = 0 To tbl.Keys.Count - 1
    If tbl.Keys(i).Type = adKeyPrimary Then
        For j = 0 To tbl.Keys(i).Columns.Count - 1
            Keyname = Keyname & tbl.Keys(i).Columns(j).Name & ";"
        Next
    End If
Next
End Function



煮江品茶 发表于:2010-06-07 21:07:59
把Dim t As ActionEnum 这句删除


总记录:5篇  页次:1/1 9 1 :