gpt4 book ai didi

postgresql - vba 和 postgresql 连接

转载 作者:行者123 更新时间:2023-11-29 13:03:17 24 4
gpt4 key购买 nike

我从 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 驱动程序升级到最新版本。我读了here我必须将 Use declare/catch 设置为 true 某处(我猜是 odbc 驱动程序)。

可以用VB代码设置吗?

最佳答案

我相信您可以像这样将 UseDeclareFetch=1 选项添加到连接字符串中:

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

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

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

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

关于postgresql - vba 和 postgresql 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22532149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com