Страницы: 1
RSS
Проблема с кириллицой: VBA "бьет" русский текст
 
Добрый день, коллеги!

Пытаюсь прочесть SQL запрос из файла в переменную. В запросе используются русские наименования полей таблицы, однако VBA возвращает в переменной русский текст битым. Есть подозрение, что проблема имеет решение отличное от переименования полей таблицы на сервере. Подскажите, пожалуйста, как с этим бороться?
Изменено: Павел - 27.12.2013 14:20:17
 
помнится у меня была такая проблема, но уже с результатом запроса.
Проблема была в кодировке. Думаю тут тоже.
 
Запрос возвращает латиницу: в основном там набор бессмысленного для человека текста, здесь проблем не будет. Беда в том, что некоторые платежные системы предоставляют свои отчеты с русским наименованием столбцов, опасаюсь ошибок при импорте таблиц с разными названиями, поэтому не хочется переименовывать поля на сервере. Была мысль запилить процедуру переименования полей в источнике при импорте, но, по-моему, это уже ерунда будет.

А как решили свою проблему?

PS. В общем, из сервера кириллица нормально выгружается (через файл подключения), проблема именно в самом VBA, как мне кажется, поскольку даже русские названия листов книги Excel также возвращаются битыми и в переменных, и в msgbox. Подсказали, что нужно в настройках редактора установить кодировку Unicode UTF-8, но как это делается, не объяснили.
Изменено: Павел - 27.12.2013 15:25:47
 
Решил проблему пересохранением файла-источника в кодировке ANSI

Теперь другая беда: делаю сохранение на локальной машине Win7 - после этого VBA на сервере кушает с удовольствием. Делаю ту же процедуру на Win Server 08 R2 - вместо кириллицы ставит "?". В общем, без бубна не обойтись. :)
 
я свою решил сменой кодировки в тексте запроса.
вам наверное нужно что то типо этого http://excelvba.ru/code/Encode
 
Спасибо за ссылку, классная функция, но в моем случае не помогла. В общем, 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 кириллицу найден, тему можно считать закрытой. А вот как подать эту кириллицу серверу - другая тема.
Сделал через хранимую процедуру, работает.
Изменено: Павел - 27.12.2013 18:18:13
Страницы: 1
Наверх