Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Charactrer Sets (vs Delphi7)  (Прочитано 9477 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Helium
Гость
« : 06-01-2004 19:06 » 

Пишу базу данных под IB на Delphi7.  :oops:
При вызове SQL из проги (дельфийской) вылазит ошибка о невозможности транслитерации символов из одной кодировки в другую, но при выполнении аналогичных запросов из IBConsole проблем не возникает.
На жонглирование кодировками в IBConsole дельфи не реагирует.  Молчу
  Жаль Может у меня руки откуда-то не от туда растут...
 :?: В общем как это можно побороть?
Записан
ixania
Гость
« Ответ #1 : 07-01-2004 16:40 » 

Может проблема кроется в настройках комонентов которыми пользуешся?
Записан
Helium
Гость
« Ответ #2 : 07-01-2004 18:31 » 

Вполне может быть, но в настройках компонентов про кодировки кажись ничего нет.
Записан
ixania
Гость
« Ответ #3 : 07-01-2004 22:31 » 

Думаю тарнслитерация может происходить когда результат запроса должен быть отображен например в таблице. Впрочем смотри что я только что нашел в хелпе по слову transliterate:

TIBBatchMove.Transliterate
----------------------------------------------------------------------------------------------
Specifies whether the data in the Source records should be converted form the locale of the Source to the locale of the Destination when the Execute method is called.

property Transliterate: Boolean;

Description

Set Transliterate to True when the Source dataset and the Destination table use different language drivers and the data may contain extended ASCII characters. Set Transliterate to False to avoid the overhead of the character set conversion when both the Source and the Destination use the same language driver or the data does not contain extended ASCII characters.

По хелпу свойство Transliterate имеют следующие обьекты:

TBatchMove
TIBBatchMove (вреоятно тут твоя проблема)
TBlobField
TStringField
Записан
Helium
Гость
« Ответ #4 : 07-01-2004 22:58 » 

Да я и не использую эти компоненты.
Упрощенный вариант проблемы в следующем. У меня только 3 компонента: TIBDatabase, TIBTransaction, TIBQuery. Все компоненты повязаны друг с другом.
Пытяюсь добавить в таблицу простую запись со строкой на русском:
INSERT INTO test (id, name)
  VALUES (3,'текст');
id - integer
name - varchar(20)
При попытке запуска такого запроса вываливается ошибка о невозможности транслитерации.

Весь ужас в том, что прогу я практически сделал, только когда делал на англицком тестил  Ха-ха-ха !
Чтож теперь, переделывать усе сначала! Жаль
Записан
ixania
Гость
« Ответ #5 : 07-01-2004 23:37 » 

Поменяй драйвер языка для базы, кодовую страницу или еще чтото, не помню уже, но насколко помню чтото должно быть, тоесть я думаю что проблема кроется в настройках базы и она просто не может проглотить твои символы.
Записан
ixania
Гость
« Ответ #6 : 07-01-2004 23:48 » new

Да в догонку, попробуй при сохранении в базу свои кирилицу прогнать через CharToOem, а когда считываешь OemToChar при необходимости, эт должно сработать, т.к. по умолчанию базы данных настроены на Oem, а кирилица это расширенные символа так что надо конвертить, по крайней мере так пишется в доках SQL Serever думаю IB не исключение.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines