Pyodbc DataError 22003 при выборе данных из базы данных NAV

Я использую Pyodbc для выбора данных из базы данных Dynamics NAV моей компании, и до сих пор она отлично работала, используя строку выбора, созданную запросом Excel/Microsoft, но теперь я хочу использовать предложение WHERE только для выбора информации от конкретного поставщика. Поставщик НЕТ - это их номер, хранящийся в виде строки в столбце «Купить у поставщика №_», и когда я пытаюсь использовать это, у меня возникает проблема с запросом 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.

Если я попытаюсь использовать предложение where в столбце данных INT, оно сработает, поэтому я предполагаю, что проблема связана с кавычками или двойными кавычками?

Любая помощь приветствуется.

С уважением Мартин

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'

Иногда мне просто нужно немного подумать.

Другие вопросы по тегам