Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
ВнизЧто за ошибка такая? Найти похожие ветки
← →
diww (2002-05-28 15:37) [0]EDBEngineError: General SQL Error: arithmetic exception, numeric overflow or string truncaction. Cannot transliterate character between character sets.
Происходит во время Query.Open. В запросе - select .. from .. where .. order. В Query есть несколько вычисляемых полей. Когда-то давно все работало. Сейчас пробовал на 2-х компах - выдает эту ошибку. Если удалить все поля в Query ошибка остается.
Как с этим бороться?
← →
Johnmen (2002-05-28 15:43) [1]Убей Query и создай его заново...
← →
Nikolay M. (2002-05-28 17:02) [2]А текст запроса из SQL Explorer выполняется? Если да, то действительно пересоздай Query, если нет, коцай текст запроса до тех пор, пока не заработает...
ЗЫ
по-моему, надежнее делать не
Query.Open, а
Query.Active := False;
Query.Active := True;
так не рискуешь получить ексепшн, если Query уже открыта...
← →
Johnny Smith (2002-05-28 17:17) [3]IB возвращает такую ошибку, когда идет попытка поместить некое значение в переменную меньшей длины. Я в свое время сталкивался с ней, когда в хранимой процедуре переменной, скажем, строковой с длиной в 30 символов присваивалось значение поля длиной в 50 символов (Varchar). Причем если оно было меньше или равно 30 симв., то все проходило на "ура", что не позволило "с лету" разобраться в ситуации.
← →
Johnmen (2002-05-28 17:22) [4]>Johnny Smith ©
Если быть чуточку внимательней, то в вопросе указан select ...
← →
Johnny Smith (2002-05-28 17:30) [5]А вы не в курсе, что в IB обращение к SP также может идти через select ?
← →
Johnmen (2002-05-28 17:45) [6]>Johnny Smith © (28.05.02 17:30)
В курсе....Да только автор об этом не упоминал....
(И вообще, не надо мне выкать - не люблю...:))))
← →
diww (2002-05-28 17:58) [7]Разобрался в чем причина проблемы.
Возникает она ещё на стадии создания одной из View. При попытке ее просмотра через SQL Explorer появляется то же сообщение.
В View есть поле задаваемое как обьединение нескольких полей бд (field1 || field2 || field3). Если убрать одно из этих полей, то вьюшка нормально создается (а прорамма дальше работает криво). Так что, наверное, Johnny Smith © (28.05.02 17:17) прав насчет длин переменной.
Но раньше как-то ведь работало (Давно и на другом компе). Наверное, можно как-то настроить максимальный размер поля?
Подскажите, плиз!
← →
Praco (2002-05-28 18:09) [8]Johnny Smith © (28.05.02 17:17)
Прав, однозначно.
Например, одно из полей в select, типа char(20)
преобразовывается в cast(field as char(10))
Если есть поля реально длинее 10 - будет ошибка. Если нет - запрос пройдет. SQL Explorer такие записи (>10) не покажет, WISQL - даст ошибку. В IB старше 4.21 не проверял.
Иногда эта ошибка выскакивала у меня при непонятных сбоях IB(похоже, сетка глючила).
diww (28.05.02 17:58)
Возможно, поля разных типов - char, varchar
← →
Val (2002-05-28 19:15) [9]а может дело в неверно указанной кодировке?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c