Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Привет! Кто поможет справиться со следующей проблемой: Использую TADOConnection и TADOQuery для работы с MS SQL Server 2000. Connection String равна следующему: Provider=SQLOLEDB.1;Password=MyPWD;Persist Security Info=True;User ID=MyUser;Initial Catalog=MyDB;Data Source=localhost;Current Language=Russian;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False Когда делаю следующий запрос через эти компоненты: insert into Table1 (name) VALUES ('Привет') то в базе данных получаю вместо 'Привет' 'I?eaao'. Что не так и как это дело пофиксеть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 14:23 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Надо, наверное, посмотреть скрипт с таблицы. Какая там кодировка стоит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 14:38 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Collation name = Cyrillic_General_CI_AS. Более того, я подозреваю, что база данных настроена как надо, так как я написал маленькую прогу на C#, где через ADO.NET делал этот же запрос - строка правильно записывается в БД. Еще идеи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 14:51 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Кусок кода покажи где у тя insert идет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 15:10 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Вот он: qryTemp1.SQL.Clear; qryTemp1.SQL.Add(SQL); iResult := qryTemp1.ExecSQL(); qryTemp1.Close(); Он очень простой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 15:24 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
> qryTemp1.SQL.Add(SQL) А откуда переменную SQL береш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 18:33 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Эта переменная может быть равна следующему значению: SQL := 'insert into Table1 (name) VALUES ('Привет')'; Я тут коварнул глубже и обнаружил, что все работает нормально, если поставить locale в Russioan. Но у меня должен стоять English(US). Посеме вопрос - как в Delphi трекается locale и как его мжно поменять для приложения целиком или частично? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.09.2003, 18:42 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Попробуй 'Auto Translate=False' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 10:24 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2003, 11:42 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Странно, что через C# нормально пишется. Пробуй еще : Tag with column collation when possible=True; и добавь Locale Identifier=Russian ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2003, 11:29 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
И это не решает проблемы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2003, 12:02 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
а настройки сервера смотрел ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2003, 13:15 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Ладно, по порядку - с базой : У сервера и database в свойствах правильный Collation ? Для таблицы скрипт генерируем, там непоняток с Collation нет ? Если ничего другое не поможет - попробуй в самом начале программы поставить : SetThreadLocale( MAKELCID( MAKELANGID( LANG_RUSSIAN, SUBLANG_DEFAULT), SORT_DEFAULT)); (Если, конечно, вся работа с датасетами в программе идет в основном потоке) При вызовах через OLE может где-то использоваться LOCALE_SYSTEM_DEFAULT, а может LOCALE_USER_DEFAULT. Если виноват второй случай - может помочь, в первом - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2003, 13:53 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
1) C Collation все апрорядке... 2) Способ я вчера надыбалю Он решает проблему... Но насколькл он правильный, вот в чем вопрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2003, 18:05 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Дык хоть поделись, что за способ-то ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2003, 14:10 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Юзаю SetThreadLocale(...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.09.2003, 14:53 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Скорее всего - это неправильная настройка либо сервера либо клиента. По умолчанию все должно работать, иначе при каждом переносе программы на другую машину могут быть разные проблемы..... и всех их решать можно без конца. ИМХО - Это скорее вопрос о настройках к СисАдмину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2003, 02:47 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Здесь все дело именно в том, что где-то при прохождении COM преобразований вариантов используется текущий locale, а он в системе (и в потоке приложения) выставлен в English по умолчанию. Взгляните, нет ли в опциях проекта или модуля у Вас опции H- (использовать короткие строки по умолчанию). Я бы попробовал еще просто открыть любой COM объект (Excel) на этой же машине, в этом же проекте, передать в него строковую константу, заданную так же явно в тексте программы. Если результат будет нормально читаться - проблема в ADO + SQL provider, если нет - взаимодействие Delphi с COM. Т.е. надо хотя бы примерно представить, в чем загвоздка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2003, 14:43 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Эта переменная может быть равна следующему значению: SQL := 'insert into Table1 (name) VALUES ('Привет')'; Вроде правильнее было бы так: SQL := 'insert into Table1 (name) VALUES (''Привет'')'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 00:23 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Вряд ли компилятор пропустил бы такую ошибку :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 07:21 |
|
||
|
ADO + MS SQL Server 2000
|
|||
|---|---|---|---|
|
#18+
Тогда надо смотреть профайлером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2003, 10:40 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2006&tid=2116790]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 402ms |

| 0 / 0 |
