vba和postgresql连接

我有从VisualBasic(Excel)连接到postgresql的问题。 我这样定义我的连接:

Set ObjMyConn = New ADODB.Connection ObjMyConn.ConnectionString = "Driver={PostgreSQL Unicode};Server=ip;Port=port;Database=db_name;Uid=user;Pwd=pass;" ObjMyConn.Open 

当我想要加载443532行到Excel中

 Set objMyCmd = New ADODB.Command Set objMyCmd.ActiveConnection = ObjMyConn objMyCmd.CommandText = "select * from table" objMyCmd.CommandType = adCmdText objMyCmd.Execute 

它不断显示我运行时错误读内存错误,同时读取元组

我已经将我的ODBC驱动程序升级到最新版本。 我在这里读到,我必须设置使用declare / catch在某处真实 (odbc驱动程序,我猜)。

是否有可能在VB代码中设置?

我相信你可以添加UseDeclareFetch=1选项到连接string,如下所示:

 "Driver={PostgreSQL Unicode};Server=ip;Port=port;Database=db_name;Uid=user;Pwd=pass;UseDeclareFetch=1" 

但是,如果这不起作用,还有另一种方法 – 如果使用ODBC数据库连接pipe理器设置了ODBC系统数据源,则可以直接修改registry项(前提是您拥有足够的权限)。

要更改的密钥位于HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\PostgreSQL35W如果您使用的是系统DSN,并且以下vba代码将启用Use Declare/Fetch

 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ strComputer & "\root\default:StdRegProv") strKeyPath = "SOFTWARE\ODBC\ODBC.INI\PostgreSQL35W" strValueName = "UseDeclareFetch" strStringValues = "1" oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strStringValues