Страницы: 1
RSS
проблема кодировки в SQL выражениях, Select c фильтром значений на русском не работает при региональных настройках другой страны
 
Доброго времени суток, коллеги!
Давно я не заходил сюда, но вот судьба подкинула проблемку и я понял, что без помощи наших гуру мне не обойтись. Может кто сталкивался уже мой проблемой и у него есть решение?
Суть проблемы в следующем:
Через ADODB пытаюсь получить данные с листа Excel с учетом фильтров по ряду полей и диапазону дат:
Код
fName = ThisWorkbook.Path & "\" & ThisWorkbook.Name

Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
    
objConnection.Open "Provider='Microsoft.ACE.OLEDB.12.0';Data Source=""" & fName & """;Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';"

objRecordset.Open "Select distinct [Order Number] FROM [" & tbl1 & "] WHERE Product = '" & prodName & "' and Status = '" & stat & "' " & _
                    "and (Commodity = '" & cmdty & "' or '" & cmdty & "' = '- ПО ВСЕМ') " & _
                    "and (Strategy = '" & strtgy & "' or '" & strtgy & "' = '- ПО ВСЕМ') " & _
                    "and [Est Mvt Date] >= #" & Format(estBeg, "DD\/MM\/YYYY") & "# " & _
                    " and [Est Mvt Date] < #" & Format(estFin, "DD\/MM\/YYYY") & "#", objConnection, adOpenStatic, adLockOptimistic, adCmdText

У меня на компьютере работает все прекрасно, но у знакомого в региональных настройках системы указан United Kingdom и кириллица в тексте Select-а отражается так:


Естественно селект ничего не возвращает.
Как можно устранить проблему "???" и "кракозябр"? Может кто подскажет?
Заранее благодарен за любую помощь.
Учимся сами и помогаем другим...
 
Попробуй перекодировать в utf-8 а потом подгрузить из файла запрос.
Спасибо
 
т.е. сперва текст запроса загнать в файл, затем его через ADODB.Stream конвертировать?
Учимся сами и помогаем другим...
 
Можно и так, но лучше сделайте файл в utf-8, и в него дописывайте параметры, сохраняйте и считывайте, должно работать.
Спасибо
 
Попробовал как посоветовали. Вопросы пропали, но кракозябры остались. Получается, что если кириллицу передавать как параметр, то utf-8 помогает сохранить вид текста, но если по русски написано в самом коде, то уже не работает :-(
Учимся сами и помогаем другим...
 
Доброе время суток.
Цитата
ber$erk написал:
utf-8 помогает сохранить вид текста, но если по русски написано в самом коде
VBA поддерживает Unicode, а вот его редактор - нет (его похоже с 97 до ума не доводили). Тема эта уже не раз обсуждалась ;)
Результаты по обсуждениям: если предполагается международное использование кода, то весь текст, отличный от латиницы, лучше хранить в ячейках скрытого листа, ну, или как вариант, как было предложено R Dmitry, в отдельном файле в Unicode (проще, можно Scripting библиотекой читать) или UTF-8 (подвид, читаемый через ADODB Stream).
Страницы: 1
Наверх