实际上,连接的不是gdb文件,是访问的以.gdb名的目录下的shp文件。否则就报错,找不到文件。
不是连接的gdb目录下的a0000001.gdbtable之类的,而是需要用arcmap转为shp文件,放到该目录下。将来使用mo的findgeoset方法,传递的是shp的主文件名,不带后缀,这样才能找到。
下面是执行成功的例子:
Private Sub Command1_Click()
'2021年9月18日00:49:49 mapobjects连接gdb数据库(实际上是转换后的shp文件)
Dim gdbconn As New MapObjects2.DataConnection
'连接gdb数据库,如果名称或路径不对,connected属性就为false
'HADZQP411524SCXYQLYDatabase.gdb 是目录,不是文件名,下面要放对应的shp文件。
' ....需要用arcmap将gdb里面的某个图层导出为shp文件。
'....将来gdbconn.FindGeoDataset里面传递的参数就是shp文件的名字,不带后缀。
gdbconn.Database = "D:\411700113\HADZQP411524SCXYQLYDatabase.gdb"
'必须显式连接一下,否则不起作用,也不知道连接成功与否。
gdbconn.Connect
MsgBox gdbconn.CONNECTED
Dim olayer As New MapObjects2.MapLayer
Dim geods As New MapObjects2.GeoDataset
'Export_Output是shp文件的名字,不带扩展名
olayer.GeoDataset = gdbconn.FindGeoDataset("Export_Output")
Map1.Layers.Add olayer
End Sub