| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Проблемма |
| Автор: BlauTood 8.9.2004, 16:13 |
| Создал домен DOL. и в двух разных таблицах Field Name присвоил этот домен. пытаюсь из одной таблицы пренести данные в другу таблицу, а она мне говорит. Arithmetic overflow or division by zero has occurred. arithmetic exception, numeric overflow, or string truncation. Cannot transliterate character between character sets Ввзято из FAQ! Ошибка возникает из-за несовпадения кодировок при работе со строковыми полями. Необходимо помнить следующие моменты: 1) Невозможно простой командой SQL типа UPDATE TAB SET TEXT1=TEXT2 скопировать знначения поля TEXT2 в поле TEXT1, если у них разная кодировка. (Кодировка везде одинаковая, так как использую для этого домен.) 2) Если явно не указана кодировка при создании текстового поля, то поле создаётся с кодировкой по умолчанию. Проверить кодировку по умолчанию вы можете запросом SELECT RDB$CHARACTER_SET_NAME FROM RDB$DATABASE. (пишет WIN1251) 3) Кодировка текстового поля должна совпадать с кодировкой, указанной в параметре lc_type при подключении клиента (Это где находится???) Кто сможет помочь новичку |
| Автор: Vit 8.9.2004, 16:18 |
| 1) Покажи код 2) Надо бы указать какая база данных 3) Пожалуйста, не используй красный цвет в сообщениях - им обычно пользуются модераторы для указания нарушений. |
| Автор: BlauTood 8.9.2004, 16:37 |
| тот что ты мне помог сделать! База IB. osn.ibtdol.Last; osn.ibtdol.First; while not osn.IBTDol.Eof do begin spso.gridspso.Columns.Items[4].PickList.add(osn.IBTDol.fieldbyname('DOL').AsString); osn.IBTdol.Next end; osn.IBTDOl.First; |
| Автор: _hunter 9.9.2004, 10:53 | ||
находится в параметрах базы установка: IBDatabase.Params.Add('lc_ctype=WIN1251'); ( но необходима предварительная проверка на существование ) |