Sage Line 50 SQL Query выбрасывает ошибку "Столбец не найден" или возвращаются числовые данные

Я пытаюсь запросить Sage Line 50 через приложение.NET. Подключение через ODBC работает нормально. Я могу открывать / закрывать базу данных и выполнять очень простые запросы, но один из моих запросов немного сложнее, и мне нужно включить жестко заданные значения по умолчанию, но он ведет себя очень странно.

Запрос отлично работает, когда я запускаю его в Microsoft Access и запускаю его для связанных таблиц, но когда я запускаю его в.NET, он выдает ошибку столбца not found, ну, в зависимости от моих значений.

1) возвращены числовые данные

Если мой запрос

Select SELECT PURCHASE_LEDGER.ACCOUNT_REF AS SupplierCode, '10' as OrganizationNumber, ...

Результат: 10 возвращается как 10.00

2) Пропавшие столбцы:

Если мой запрос

Select SELECT PURCHASE_LEDGER.ACCOUNT_REF AS SupplierCode, '' as City, ...

Результат: мой OdbcDataReader будет возвращать столбцы только до первого экземпляра '', поэтому в этом случае он будет возвращать только ACCOUNT_REF

3) В столбце не найдена ошибка:

если мой запрос

Select SELECT PURCHASE_LEDGER.ACCOUNT_REF AS SupplierCode, 'GB' as Country, ...

будет выдано сообщение об ошибке, что столбец не найден. Все же, если я использую '-' as Country или же '--' as Country это будет работать, но вернет 0,00 вместо пустой строки

Итак, мои вопросы:

1) Почему MS Access ведет себя по-разному и позволяет мне возвращать пустое значение, когда мой запрос включает '' as City например, но он не может вернуть его при запросе через.NET

2) Почему он не позволяет использовать буквенно-цифровые значения, такие как "ГБ", в качестве жестко закодированных значений, не выбрасывая столбец не найден.

3) Почему это позволяет мне использовать '-' as Country но возвращает 0,00

Есть ли обходной путь для этих? Мне действительно нужно возвращать жестко запрограммированные пустые значения для некоторых полей, буквенно-цифровые значения для некоторых других полей, и у меня не может быть значений, возвращаемых с десятичными знаками, когда их не должно быть.

Это сводило с ума в течение нескольких часов, и мне нужно сохранить это общее, и, хотя у меня есть другие проблемы, такие как запрос не может объединить столбцы, у меня есть обходной путь для этого, но я пытаюсь сохранить свое приложение как как можно более универсальным, поэтому вводить странные параметры в мое определение xml просто не имеет смысла. Я думал о введении значения по умолчанию, которое было бы технически приемлемым при определении отображений полей, но как насчет значений, возвращаемых как 0,00, когда это должна быть пустая строка, и как насчет значений, которые должны быть 1,2,3? возвращается как 1.00, 2.00 и т. д.

Поэтому я надеюсь, что кто-то узнает, как это исправить на уровне запросов, вместо того, чтобы вводить хитрый обходной путь с помощью кода.

Благодарю.

ОБНОВИТЬ:

Вот мой полный запрос, если это поможет:

SELECT PURCHASE_LEDGER.ACCOUNT_REF AS SupplierCode, 
       PURCHASE_LEDGER.NAME AS SupplierName, 
       PURCHASE_LEDGER.ADDRESS_1, 
       PURCHASE_LEDGER.ADDRESS_2, 
       PURCHASE_LEDGER.ADDRESS_3, 
       PURCHASE_LEDGER.ADDRESS_4, 
       PURCHASE_LEDGER.ADDRESS_5,
       'London' AS City,
       COUNTRY_CODE.Name AS Country, 
       '' AS PostCode,
       '-' AS PostCode1,
       PURCHASE_LEDGER.VAT_REG_NUMBER AS TaxRegistrationNumber, 
       '10' AS CorporateGroupId,
       COUNTRY_CODE.Name AS Location, 
       CURRENCY.CODE AS CurrencyCode
  FROM (PURCHASE_LEDGER 
       INNER JOIN CURRENCY ON PURCHASE_LEDGER.CURRENCY = CURRENCY.NUMBER) 
       INNER JOIN COUNTRY_CODE ON PURCHASE_LEDGER.COUNTRY_CODE = COUNTRY_CODE.CODE
  1. Город выдаст ошибку т.е. столбец не найден
  2. PostCode приведет к тому, что остальные поля не будут возвращены
  3. PostCode1 вернет 0,00 вместо '-'
  4. OrganizationNumber вернет 10,00 вместо 10

0 ответов

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