给定一个预配置的ODBC系统DSN,我想编写一个使用VBA 优雅地测试该连接的函数.
Private Function TestConnection(ByVal dsnName As String) As Boolean
' What goes here?? '
End Function
Run Code Online (Sandbox Code Playgroud)
编辑:为了澄清,系统DSN指向外部SQL Server 2005数据库,使用Windows NT身份验证.
我尝试过的一种方法是将一些随机查询发送到目标数据库并捕获错误.如果查询有效,则返回true.如果有错误则返回false.这工作得很好,但感觉...... kludgy.有没有更优雅的方式,特别是不依赖On Error Goto的方式?
注意:这是我正在使用的传统Access 2000数据库,因此任何解决方案都不能具有任何Access 2007或2003依赖项.我想把它变成VBA的通用,但如果在Access中有一个简单的方法也很好.
任何建议都很有必要.
明天我将编写一个Python脚本,首先将旧的MS Access数据库中的所有数据检索到CSV文件中,然后进行一些数据清理,整理等工作之后,将数据导入Linux上的mySQL数据库中。
我打算使用pyodbc建立与MS Access数据库的连接。我将在Windows环境中运行初始脚本。
该数据库具有IIRC超过五百万行的数据。我的问题是:
我之所以选择CSv,是因为它非常简单明了(并且我是Python新手)-但我希望听到有人做过类似的事情。
我正在使用 .Net 中的 ODBC 命令对象构建查询,并传入多个参数。对 SQL Anywhere 执行查询时,出现以下错误。(相同的代码适用于 SQL Server)。
[System.Data.Odbc.OdbcException] = {"ERROR [07002] [Sybase][ODBC 驱动程序][SQL Anywhere]没有足够的主机变量值"}
命令对象添加了与查询中的占位符 ('?') 相同数量的参数。以下是未通过测试的简单查询和 C# 代码。
用于填充宿主变量的 C# 代码
String queryText= @"DECLARE @loanuseraddress varchar(40), @loanid decimal Set @loanid = ? Set @loanuseraddress = ? select * from Loan_assignments where Loan_id = @loanid"
OdbcConnection connection = new OdbcConnection(request.ConnectionString);
OdbcCommand command;
command = new OdbcCommand(queryText, connection);
OdbcParameter param1 = new OdbcParameter("@loanid", OdbcType.Decimal);
param1.Value = request.Loan.LoanNumber;
command.Parameters.Add(param1);
OdbcParameter param2 = new OdbcParameter("@loanuseremployer", dbcType.VarChar);
param2.Value = appraisalCompanyUpdate.LoanUserEmployer;
if …Run Code Online (Sandbox Code Playgroud) 我正在使用 CentOS 5.6 版(最终版)和 PHP 5.1.6(cli)(构建时间:2012 年 2 月 2 日 18:24:47)。我需要与同一本地网络中的 DB2 数据库服务器连接。db2 版本是 V5R3。我已经安装了 iSeriesAccess 客户端和 unixODBC。
我的 odbc.ini 配置:
[iSeries Access ODBC Driver]
Description = iSeries Access for Linux ODBC Driver
Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
NOTE1 = If using unixODBC 2.2.11 or later and you want the 32 and 64-bit ODBC drivers to share DSN's,
NOTE2 = the following Driver64/Setup64 keywords will provide that support.
Driver64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbc.so
Setup64 = /opt/ibm/iSeriesAccess/lib64/libcwbodbcs.so
Threading = 2
DontDLClose …Run Code Online (Sandbox Code Playgroud) 我试图从数据库(MS Access或SQL服务器)加载数据,odbc sqlfile似乎代码运行时出现任何错误,但我没有得到数据.我使用以下代码odbc sqlfile("sqlcode.sql"),dsn("mysqlodbcdata").注意,sqlcode.sql只包含sql声明SELECT.问题是相同的sql代码正在提供数据odbc load,exec(sqlstmt) dsn("mysqlodbcdata").任何人都可以建议我如何使用odbc sqlfile导入数据?这对我来说是一个很大的帮助.
谢谢乔伊
我正在尝试创建到 SQL Server 的 ODBC 连接,但是当我这样做时,出现错误:
Connection failed:
SQLState: '01000'
SQL Server Error: 10060
[Microsoft][ODBC_SQL Server Driver][TCP/IP Sockets] COnnectionOpen (Connect()).
Connection failed:
SQLState: '08001'
SQL Server Error: 17
[Microsoft][ODBC_SQL Server Driver][TCP/IP Sockets] SQL Server does not exist or access denied.
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
我唯一能想到的是客户端计算机是 windows server 2003,并且具有各种角色设置:
我不知道为什么要设置这些服务,但目前我无法关闭它们。是否是其中任何一个,如果是,是否有办法禁用它们的任何方面,这可能会阻塞 SQL。
任何建议真的很感激!
我正在尝试编写一个查询来计算服务器端的一些数字,而不是在提取数据之后。我不断收到 SQL0802 错误。我已经尝试了常规Sum,以及Double和float命令。我认为回报是漫长的。我正在使用 SQL Squirrel,所以我删除了小数位限制,看看是否可以解决问题。是"Gross Margin"计算将其抛弃。其余的计算工作正常。我很感激我能得到的任何帮助。这只是代码的一部分。为了空间起见,我省略了Where,Group By和Order By部分:
Select Distinct DB1.Tb1.STORE,
DB1.Tb2.DATE_ID,
Sum (DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES) As "Total Sales",
Sum (DB1.Tb1.CUR_CASH_COST+DB1.Tb1.CUR_CHARGE_COST) As "Total Cost",
Sum ((DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES)-DB1.Tb1.CUR_CASH_COST+DB1.Tb1.CUR_CHARGE_COST)) As "Gross Profit",
Sum (((DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES)-(DB1.Tb1.CUR_CASH_COST+DB1.Tb1.CUR_CHARGE_COST))/(DB1.Tb1.CUR_CASH_SALES+DB1.Tb1.CUR_CHARGE_SALES)))As "Gross Margin"
Run Code Online (Sandbox Code Playgroud) 我有一个新安装的 MySQL 服务器,它在 localhost:3306 上侦听。从我的 Qt 应用程序连接到它的正确方法是什么?
我终于在 Windows 10 上测试了一个较旧的 .NET 应用程序。它使用 32 位 9.03 odbc 针对 Postgresql 9.3(64 位)运行十几个 sql 选择。该应用程序运行 Select 以获取一些配置数据 Select MyRow, MyName from Config where ConfigID = ? 它按预期返回。然后它再次运行它以获取不同的 id 并且它失败并显示错误 [HY000] 没有使用该句柄执行查询。sql 在语法上是正确的,当我在 QA 中运行它时,它会按预期返回。我用谷歌搜索错误,IBM 说要添加 ;UseDeclareFetch=1 到连接。我做到了,该应用程序继续正常运行。
我找不到任何关于 ;UseDeclareFetch=1 的功能以及为什么它突然在 Windows 10 中产生影响的任何信息。我已经阅读了https://odbc.postgresql.org/docs/config.html但它并没有说太多关于它的用途。
我有一个SQLOLEDB连接到 MS SQL 服务器的 Excel 文件,
当我使用 Oracle 链接执行此操作时,我可以简单地WHERE XXX = ?输入查询以提示 Excel 中的值,但是使用 MSSQL 执行此操作时出现以下错误:
没有为一个或多个必需参数提供值
尝试将基本 excel 查询从值参数化为 ?
如果我使用这样的值,我会得到结果:
SELECT *
FROM srv.stats
WHERE srv.stats.[year] = '2016'
AND srv.stats.[quarter] = '1'
Run Code Online (Sandbox Code Playgroud)
当我添加参数时?,出现上述错误。
SELECT *
FROM srv.stats
WHERE srv.stats.[year] = ?
AND srv.stats.[quarter] = ?
Run Code Online (Sandbox Code Playgroud)
我希望能够在不使用 VB 的情况下做到这一点。
odbc ×10
sql ×3
db2 ×2
excel ×2
ibm-midrange ×2
ms-access ×2
sql-server ×2
.net ×1
c# ×1
c++ ×1
connection ×1
csv ×1
mysql ×1
php ×1
postgresql ×1
python ×1
qt ×1
sqlanywhere ×1
stata ×1
unixodbc ×1
vba ×1
windows ×1