SQL STATE 37000 [Microsoft] [ODBC Microsoft Access驱动程序]语法错误或访问冲突

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL STATE 37000 [Microsoft] [ODBC Microsoft Access驱动程序]语法错误或访问冲突相关的知识,希望对你有一定的参考价值。

美好的一天!

我收到此错误:

SQL STATE 37000 [Microsoft] [ODBC Microsoft Access驱动程序]语法错误或访问冲突,尝试在Powerscript上运行嵌入式SQL语句时。

我使用的是MsSQL Server 2008和PowerBuilder 10.5,操作系统是Windows 7.我能够确定导致问题的其中一个查询:

SELECT top 1 CONVERT(DATETIME,:ls_datetime)
into :ldtme_datetime
from employee_information
USING SQLCA;

if SQLCA.SQLCODE = -1 then
    Messagebox('SQL ERROR',SQLCA.SQLERRTEXT)
    return -1 
end if

通过使用PowerBuilder的datetime()函数,我能够想出一个解决方案。但是程序的其他部分导致了这一点,我很难确定程序的哪个部分导致这个问题。我发现这非常奇怪,因为我在dev-pc中运行相同的脚本完全没有问题,但是当我尝试在客户端的工作站上运行程序时,我收到了这个错误。我没有发现工作站和我的dev-pc有任何差异。我也尝试按照here的说明,但问题仍然存在。

更新:我能够识别导致问题的另一个脚本:

/////////////////////////////////////////////////////////////////////////////
//  f_datediff
//  Computes the time difference (in number of minutes) between adtme_datefrom and adtme_dateto
////////////////////////////

decimal ld_time_diff

SELECT top 1 DATEDIFF(MINUTE,:adtme_datefrom,:adtme_dateto)
into :ld_time_diff
FROM EMPLOYEE_INFORMATION
USING SQLCA;

    if SQLCA.SQLCODE = -1 then
        Messagebox('SQL ERROR',SQLCA.SQLERRTEXT)
        return -1
    end if

return ld_time_diff

似乎传递datetime变量会导致上面的错误。其他脚本工作正常。

答案
  • 创建一个事务用户对象继承的trom事务。
  • 将逻辑放在对象的sqlpreview中以捕获并记录发送到db的sql语句。
  • 实例化它,连接到db,并在嵌入式sql中使用它。
  • 假设用户收到错误,您可以检查发送到数据库的内容并从那里开始。
另一答案

第一个语句中的错误应该是CONVERT函数的第二个参数。它的类型不是字符串,它的类型是有效的表达式https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql

所以我希望你的

CONVERT(DATETIME,:ls_datetime)

会评价

CONVERT(DATETIME, 'ls_datetime')

但它应该是

CONVERT(DATETIME, DateTimeColumn)

第二个语句中的错误可能是您提供了错误的日期时间格式。因此,请在使用此功能https://docs.microsoft.com/en-us/sql/t-sql/statements/set-dateformat-transact-sql时检查是否仍然出现错误

使用正确的日期时间格式

以上是关于SQL STATE 37000 [Microsoft] [ODBC Microsoft Access驱动程序]语法错误或访问冲突的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft SQL Server 2008 和Microsof Server 2008 有啥区别.?

在SQL SERVER 2005中还原数据库时出现错误:system.data.sqlclient.sqlerror 媒体集有 2 个媒体簇 但只提供了 1 个。必须提供所有成员。 (microsof

金马蹄头条Pickering和Ajax 37000户停电

PowerDesigner12连接database时候出现这个错误提示,连接的SQL2005.

安装SQL提示重启电脑失败,解决办法

什么类型的错误导致 MS SQL Server 中的 XACT_STATE 为 1?