【问题标题】:Pyodbc DataError 22003 when selecting data from NAV database从 NAV 数据库中选择数据时出现 Pyodbc DataError 22003
【发布时间】:2022-01-18 13:09:04
【问题描述】:

我正在使用 Pyodbc 从我公司的 Dynamics NAV 数据库中选择数据,到目前为止,它使用 Excel / microsoft 查询创建的选择字符串运行良好,但现在我想使用 WHERE 子句仅从特定的供应商。供应商 NO 是他们作为字符串存储在“Buy-from Vendor No_”列中的数字,当我尝试使用它时,我遇到了 SQL 查询的问题。该语句的简化版本如下所示:

'SELECT "Companyname A_S$Purchase Line"."Planned Receipt Date", "Companyname A_S$Purchase Line"."Vendor Item NO_", "Companyname A_S$Purchase Line".No_ FROM COMPANYDB.dbo."Companyname A_S$Purchase Line" "Companyname A_S$Purchase Line" WHERE ("Companyname A_S$Purchase Line"."Buy-from Vendor No_"="96100961") ORDER BY "Companyname A_S$Purchase Line"."Order Date" DESC'

这会导致以下错误:

pyodbc.ProgrammingError: ('42S22', "[42S22] [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name '96100961'. (207) (SQLExecDirectW)")

如果我用 %s 替换数字字符串并使用单引号插入数字,我会收到关于将 varchar 转换为 int 的错误,因为其中一个供应商 NO 高于 int 限制。

如果我尝试在 INT 数据列上使用 where 子句,它会起作用,所以我猜引号或双引号有问题?

感谢任何帮助。

最好的问候 马丁

【问题讨论】:

    标签: python sql excel pyodbc dynamics-nav


    【解决方案1】:

    解决了:

    'SELECT "Companyname A_S$Purchase Line"."Planned Receipt Date", "Companyname A_S$Purchase Line"."Vendor Item NO_", "Companyname A_S$Purchase Line".No_ FROM COMPANYDB.dbo."Companyname A_S$Purchase Line" "Companyname A_S$Purchase Line" WHERE ("Companyname A_S$Purchase Line"."Buy-from Vendor No_"='+"'96100961'"+') ORDER BY "Companyname A_S$Purchase Line"."Order Date" DESC'
    

    有时我只需要思考片刻。

    【讨论】:

      猜你喜欢
      • 2018-01-24
      • 2018-08-03
      • 2015-05-10
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      • 2018-11-07
      相关资源
      最近更新 更多