从NAV数据库中选择数据时出现Pyodbc DataError 22003



我正在使用Pyodbc从我公司的Dynamics NAV数据库中选择数据,到目前为止,它使用Excel/microsoft查询创建的选择字符串运行得很好,但现在我想使用WHERE子句只选择特定供应商的信息。供应商NO是作为字符串存储在列"0"中的一个数字;买方供应商编号;当我尝试使用它时,我遇到了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子句,它会起作用,所以我想引号或双引号有问题吗?

感谢您的帮助。

致以最良好的问候Martin

解决了它:

'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'

有时我只需要思考一下。

最新更新