Что означает код HRESULT 0x80041664 (QPARSE_E_EXPECTING_CURRENCY)?

 
Предыдущий Следующий
QPARSE_E_EXPECTING_DATE QPARSE_E_EXPECTING_GUID

QPARSE_E_EXPECTING_CURRENCY

Что именно отказало

Практический смысл QPARSE_E_EXPECTING_CURRENCY (0X80041664): парсер ожидал денежный литерал. В трассировке отделяйте маркер «expecting currency» от последующих wrapper/UI ошибок: они могут появиться уже после первичной границы и не объясняют исходное состояние.

Данные до повторной попытки

До повторной попытки запишите финальную строку запроса, parser offset, delimiter/quote state и property schema. Для условия «парсер ожидал денежный литерал» эти данные важнее общего текста сообщения, потому что позволяют связать результат с конкретным владельцем операции.

  • точную сериализованную строку/список свойств, реально переданный парсеру.
  • позицию токена, quote/delimiter state, locale и code page.
  • canonical property name/type и schema/catalog generation.
НаблюдениеЧто оно означает
Первый вызов возвращает QPARSE_E_EXPECTING_CURRENCYГраница «парсер ожидал денежный литерал» относится к текущему объекту и generation; сохраните это состояние до cleanup.
После одного целевого изменения код исчезаетСвязь с условием «парсер ожидал денежный литерал» подтверждается только если остальные входы и owning context не изменились.
Первым становится другой HRESULTСчитайте его новой первичной границей; маркер «expecting currency» больше не должен подменять причину следующего отказа.

Специфическая проверка для этого кода

Зафиксируйте raw literal, locale/LCID, decimal separator и currency parser mode. Проверьте, какой token class ожидался после свойства/оператора. Контроль — подставить валидный currency literal для той же locale, не меняя property type.

Изолированный тест

Контрольный запуск должен воспроизводить «парсер ожидал денежный литерал» на тех же исходных данных. Затем исправьте отсутствующий или неверно расположенный токен в окончательной строке, не меняя locale и property schema. Если операция проходит прежнюю стадию, гипотеза локализована; если нет — вернитесь к первому HRESULT и сохранённым полям.

  1. Зафиксируйте первый QPARSE_E_EXPECTING_CURRENCY и объект, которому принадлежит маркер «expecting currency».
  2. Сохраните входные данные и lifecycle-state до изменения условия «парсер ожидал денежный литерал».
  3. Измените только состояние, связанное с «парсер ожидал денежный литерал», и выполните тот же вызов ещё раз.

Что не стоит смешивать

Не правьте каталог или schema до сохранения точной сериализованной строки и позиции токена. Исправление считается реальным, когда прежняя граница «парсер ожидал денежный литерал» пройдена на сопоставимом входе, а не просто скрыта более общим сообщением.

Документация


Нужно найти другой код? Найти другой код состояния или ошибки.