Проблемы с именем листа Excel для запросов ADODB - PullRequest
0 голосов
/ 03 сентября 2018

Я писал некоторые макросы, используя запросы ADODB для извлечения данных из других книг, используя Excel 2013. Во время тестирования в некоторых случаях возникала ошибка «неверный брекетинг», и методом проб и ошибок я пришел к выводу, что ADODB не может обрабатывать имена листов, содержащие точку, за которой следует пробел . Другими словами:

XYZ S.à r.l. -12.2017  -> error   
XYZ S.à r.l -12.2017   -> works ok (dot before space is deleted)
XYZ S.à r.l.-12.2017   -> works ok (space after dot is deleted)

Конечно, в запросе имя листа сопровождается обратными чертами: -)
Ошибка msg -2147217900 есть; Неверный брекетинг имени 'XYZ S.à r.l. -12.2017 $ A9: H49 '

Мой вопрос: знаете ли вы какие-либо другие подобные проблемы, которые я должен отслеживать? Это где-нибудь задокументировано?


обновление: сгенерированный оператор SQL (но, опять же, он был успешно протестирован в ряде других рабочих книг, и мне удалось заставить его работать, переименовав 1-й из 2-х задействованных рабочих листов, как описано выше)

select cstr(pr.reference), pr.[name],null, pr.item, pr.country, pr.currency, pr.maturity, pr.sector 
 from [Excel 12.0 Xml;HDR=Yes;Database=\\mydomain.com\someLongPath\XYZ S.à r.l. - 12.2017 - reviewed - MACRO TESTING.xlsx].`XYZ S.à r.l. -12.2017$A9:H49` pr
 where  cstr(pr.reference) not in (select cur.reference from [Excel 12.0 Xml;HDR=Yes;Database=\\mydomain.com\someLongPath\KB Sarl - 01.2018 to 03.2018 - MACRO TESTING.xlsx].`TB - 03.2018$A9:H51`cur ) 
 and pr.item is not null

Этот запрос получает данные из предыдущего списка, ссылка которого отсутствует в текущем списке. Предыдущие и текущие списки обычно находятся в разных книгах.

1 Ответ

0 голосов
/ 22 ноября 2018

Просто чтобы закрыть этот вопрос:

Я пришел к выводу, что ADODB не может обрабатывать имена листов, содержащие точку, за которой следует пробел (".").
Следовательно, я только что добавил проверку для этого.

...