Как изменить Порядковый Дата на ММДДГГГГ - PullRequest
0 голосов
/ 24 января 2019

У меня есть строка SQL, которая преобразует обычную дату, хранящуюся на сервере, но когда я добавляю строку в VBA, я получаю Run Time Error that the Column or global variable doesn't exist.

Когда я использую строку в Microsoft Query, она работает простохорошо.Обратите внимание, что я почти не знаю SQL.

Это строка SQL, которую я использую для преобразования из YYYYDD в MMDDYYYY decimal(replace(char(date(timestamp_format(digits(CFMAST.CFDOB7),'YYYYDDD')),usa),'/',''),8,0)

Здеськак я внедряю его в VBA для Excel

strSQL="SELECT decimal(replace(char(date(timestamp_format(digits(CFMAST.CFDOB7),'YYYYDDD')),usa),'/',''),8,0) FROM CNCTTP08.JHADAT842.CFMAST "

strSQL = strSQL & " WHERE (CFMAST.CFDOB7<>0) AND (CFMAST.CFDOB7<>1800001)"

Когда я запускаю запрос через Microsoft Query, я получаю ожидаемый результат, когда он форматирует все даты из CFMAST.CFDOB7 as MMDDYYYY, но когда я запускаюстрока в VBA Я получаю следующую ошибку:

[IBM] [Драйвер ODBC для System i Access] [DB2 для i5 / OS] SQL0206 - Столбец или глобальная переменная CFDOB7 не найдены.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Попробуйте использовать псевдоним в предложении FROM, например "FROM CNCTTP08.JHADAT842.CFMAST T01" и использовать T01 для замены CFMAST "

strSQL="SELECT decimal(replace(char(date(timestamp_format(digits(T01.CFDOB7),'YYYYDDD')),usa),'/',''),8,0) FROM CNCTTP08.JHADAT842.CFMAST T01"

strSQL = strSQL & " WHERE (T01.CFDOB7<>0) AND (T01.CFDOB7<>1800001)"

Дайте мне знать, что вы получите.

0 голосов
/ 25 января 2019

Возможно, проблема в том, что вы используете трехчастное имя для таблицы CNCTTP08.JHADAT842.CFMAST. Удалите системное имя CNCTTP08 и просто используйте схему и таблицу JHADAT842.CFMAST. Ваше соединение ODBC должно привести вас к правильной системе.

Другая проблема может заключаться в том, что DB2 for i действительно не любит коррелированные имена, если они не были явно определены. Поэтому, если вам действительно нужно имя из трех частей, добавьте идентификатор корреляции в предложении from, например:

FROM CNCTTP08.JHADAT842.CFMAST AS CFMAST
...