Добрый день,
Как быть если в базе есть юникодовые поля и неюникодовые?
Например имеем поля
FULL_NAME: VARCHAR(25) CHARACTER SET UTF8
IDCD_SERIE: VARCHAR(2) CHARACTER SET ASCII или NONE
Тоесть для имя я хочу чтоб создалось TWideStringField а для серию пасспорта TStringField чтоб пользователь смог вводить только ASCII символы.
Если ставим IBCConnection.UseUnicode то IBDAC создает ВСЕ char/varchar поля как TWideStringField что думаю неправильно. Это отражается и на производительность.
Логично если чарсет у поля/домэйна юникодовое то создать TWideStringField в независимости установлен ли флаг UseUnicode или нет. UseUnicode должен иметь значение если чарсет NONE, здесь можно пихать и юникод стринг.
Спасибо!
Unicode
Re: Unicode
Здравствуйте,
Для решения проблемы Вам следует установить опцию UseUnicode в False и использовать Data Type Mapping. Например:
При этом, для поля FULL_NAME будет создан TWideStringField, а для поля IDCD_SERIE - TStringField.
Более подробную информацию о Data Type Mapping Вы можете найти в статье "Data Type Mapping" документации IBDAC.
Для решения проблемы Вам следует установить опцию UseUnicode в False и использовать Data Type Mapping. Например:
Код: Выделить всё
IBCQuery1.DataTypeMap.AddFieldNameRule('FULL_NAME', ftWideString);
IBCQuery1.Open;
Более подробную информацию о Data Type Mapping Вы можете найти в статье "Data Type Mapping" документации IBDAC.
Re: Unicode
Так если бы было дело только в FULL_NAME дело, можно дата маппигом пользоватся. А когда куча (>100) датасетов не очень получается мапить неделю. Я как пример выдал.
Почему же не создать сразу TWideStringField если поле в базе по определению юникодовое? Логично же...
Почему же не создать сразу TWideStringField если поле в базе по определению юникодовое? Логично же...
Re: Unicode
Мы рассмотрим возможность добавления мапинга полей по типу с указанием кодировки в одной из следующих версий. Например:
Код: Выделить всё
IBCConnection.DataTypeMap.AddDBTypeRule(ibcVarchar, ftWideString, 'UTF8');
IBCConnection.DataTypeMap.AddDBTypeRule(ibcVarchar, ftString, 'ASCII');
Re: Unicode
Андрей, спасибо, это будет супер!
Re: Unicode
Пожалуйста, мы сообщим Вам когда данная функциональность будет добавлена в IBDAC.