Пытаюсь прочесть SQL запрос из файла в переменную. В запросе используются русские наименования полей таблицы, однако VBA возвращает в переменной русский текст битым. Есть подозрение, что проблема имеет решение отличное от переименования полей таблицы на сервере. Подскажите, пожалуйста, как с этим бороться?
Запрос возвращает латиницу: в основном там набор бессмысленного для человека текста, здесь проблем не будет. Беда в том, что некоторые платежные системы предоставляют свои отчеты с русским наименованием столбцов, опасаюсь ошибок при импорте таблиц с разными названиями, поэтому не хочется переименовывать поля на сервере. Была мысль запилить процедуру переименования полей в источнике при импорте, но, по-моему, это уже ерунда будет.
А как решили свою проблему?
PS. В общем, из сервера кириллица нормально выгружается (через файл подключения), проблема именно в самом VBA, как мне кажется, поскольку даже русские названия листов книги Excel также возвращаются битыми и в переменных, и в msgbox. Подсказали, что нужно в настройках редактора установить кодировку Unicode UTF-8, но как это делается, не объяснили.
Решил проблему пересохранением файла-источника в кодировке ANSI
Теперь другая беда: делаю сохранение на локальной машине Win7 - после этого VBA на сервере кушает с удовольствием. Делаю ту же процедуру на Win Server 08 R2 - вместо кириллицы ставит "?". В общем, без бубна не обойтись.
Спасибо за ссылку, классная функция, но в моем случае не помогла. В общем, VBA отказывается передавать кириллицу в понятном для сервера виде. Пробовал разные кодировки в функции ChangeTextCharset по вашей ссылке, не помогло. Буду делать хранимку. В любом случае, спасибо что уделили внимание.
Да. Локальную использую только в целях эксперимента. Получается, если файл sql сохранить в коде ANSI, то VBA его прекрасно переваривает, но Server - нет. Установил open with encoding, при Auto-Detect кириллицу из ANSI бьет, при Win-1251 - нормально читает. Пытаюсь передать в VBA через ADODB.Connection текст команды в ANSI, Win-1250 (--51, --52) или UTF-8 - вылетает ошибка.
В целом ответ на вопрос как скормить VBA кириллицу найден, тему можно считать закрытой. А вот как подать эту кириллицу серверу - другая тема. Сделал через хранимую процедуру, работает.