powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
13 сообщений из 13, страница 1 из 1
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32432663
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
посмотрите ХП : работает IB Expert как надо без ошибок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
begin
  select form_id from forms where form_name=:FORM_NAME into :FORM_ID;
  select period_id from periods where period_name=:period_NAME into :PERIOD_ID;
  select kind_id from kinds where kind_name=:KIND_NAME into :KIND_ID;
  select granting_id from grantings where granting_name=:GRANTING_NAME into :GRANTING_ID;
  select user_id from users where user_name=:USER_NAME into :USER_ID; 

  select count(id) from regbankrot
  where rnn_kru=:RNN_KRU and rnn_bankrot=:RNN_BANKROT and
        form_id=:FORM_ID and period_id=:PERIOD_ID and
        date1=:DATE1 and date2=:DATE2 and year_num=:YEAR_NUM and
        kind_id=:KIND_ID and granting_id=:GRANTING_ID and
        user_id=:USER_ID and reception_date=:RECEPTION_DATE
  into :TEMP_KOL;

  if (TEMP_KOL= 0 ) then
     begin
       select max(fill_date) from regbankrot into :MAX_DATE;
       if ((extract(month from :MAX_DATE)=extract(month from current_date)) and
          (extract(year from :MAX_DATE)=extract(year from current_date)))
       then begin
              NUMBER1=cast(gen_id(number, 1 ) as varchar( 6 ));
              ERRORS= 0 ;
              insert into regbankrot(id,nomer,rnn_kru,rnn_bankrot,form_id,granting_id,kind_id,period_id,
                                     year_num,date1,date2,reception_date,status_id,user_id,fill_date)
              values(gen_id(id_regbankrot, 1 ),:NUMBER1,:RNN_KRU,:RNN_BANKROT,:FORM_ID,:GRANTING_ID,
                     :KIND_ID,:PERIOD_ID,:YEAR_NUM,:DATE1,:DATE2,:RECEPTION_DATE, 1 ,:USER_ID,current_date);
            end
       else
         if (((extract(month from :MAX_DATE)<extract(month from current_date)) and
            (extract(year from :MAX_DATE)=extract(year from current_date))) or
            ((extract(month from :MAX_DATE)=extract(month from current_date)) and
            (extract(year from :MAX_DATE)<extract(year from current_date))) or
            ((extract(month from :MAX_DATE)<extract(month from current_date)) and
            (extract(year from :MAX_DATE)<extract(year from current_date))) or
            ((extract(month from :MAX_DATE)>extract(month from current_date)) and
            (extract(year from :MAX_DATE)<extract(year from current_date))))
         then begin
                SELECT GEN_ID(number, -GEN_ID(number,  0 )) FROM RDB$DATABASE into :NUMBER1;
                NUMBER1=cast(gen_id(number, 1 ) as varchar( 6 ));
                ERRORS= 0 ;
                insert into regbankrot(id,nomer,rnn_kru,rnn_bankrot,form_id,granting_id,kind_id,period_id,
                                       year_num,date1,date2,reception_date,status_id,user_id,fill_date)
                values(gen_id(id_regbankrot, 1 ),:number1,:RNN_KRU,:RNN_BANKROT,:FORM_ID,:GRANTING_ID,
                       :KIND_ID,:PERIOD_ID,:YEAR_NUM,:DATE1,:DATE2,:RECEPTION_DATE, 1 ,:USER_ID,current_date);
              end
         else begin
                number1='';
                ERRORS= 2 ;
              end
     end
  else begin
         number1='';
         ERRORS= 1 ;
       end 
 suspend;
END

------------Delphi 7-----------------------
событие на кнопке :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
DataModule2.SQLStoredProc1.Params[ 2 ].AsString:='111111111111';
DataModule2.SQLStoredProc1.Params[ 3 ].AsString:='111111111111';
DataModule2.SQLStoredProc1.Params[ 4 ].AsString:='форма1';
DataModule2.SQLStoredProc1.Params[ 5 ].AsString:='на магнитном';
DataModule2.SQLStoredProc1.Params[ 6 ].AsString:='первоначальная';
if mxFlatRadioButton1.Checked=true
then
    DataModule2.SQLStoredProc1.Params[ 7 ].AsString:='январь'
else
    DataModule2.SQLStoredProc1.Params[ 7 ].AsString:='в диапазоне';
DataModule2.SQLStoredProc1.Params[ 8 ].AsInteger:= 2004 ;
DataModule2.SQLStoredProc1.Params[ 9 ].AsDate:=Date();
DataModule2.SQLStoredProc1.Params[ 10 ].AsDate:=date();
DataModule2.SQLStoredProc1.Params[ 11 ].AsDate:=date();
DataModule2.SQLStoredProc1.Params[ 12 ].AsString:='Нашаров К.Т.';

DataModule2.SQLStoredProc1.ExecProc;

if DataModule2.SQLStoredProc1.Params[ 1 ].AsInteger= 0 
then ShowMessage('Присвоенный новер - '+DataModule2.SQLStoredProc1.Params[ 0 ].AsString)
else
  if DataModule2.SQLStoredProc1.Params[ 1 ].AsInteger= 1 
  then ShowMessage('Данные уже существуют!')
  else
    if DataModule2.SQLStoredProc1.Params[ 1 ].AsInteger= 2 
    then ShowMessage('Дата на узле меньше чем максимальная в базе!');
end;

вот при нажатии кнопки выходит :
raised class EdatabaseError with message 'arithmetic exception,numeric overflow,or string truncation Cannot transliterate character between character sets' ну и дальше пошло дельфийское

в дополении могу сказать что IB занимаюсь третий день :)
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32432732
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу сказать, что до конца разобрался во всем Вашем коде, но у меня лично такая ошибка на первых порах выскакивала, когда я пытался заносить "русские" слова в текстовые поля, у которых Character set не был WIN_1251
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32432756
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похожая вещь возникала, когда при подключении к БД указываешь один чарсет (скажем WIN1254) , а в результате запроса должны выйти (или записаться) данные в текстовом поле из другого чарсета (скажем WIN1251).

если просто выборка, то он ругается похожим образом, правда выводит некоторые записи (те записи, в которых нет коллизии этих самых чарсетов)
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32432763
hm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ: весь листинг я не читал, то что я сказал, относится к
" arithmetic exception,numeric overflow,or string truncation Cannot transliterate character between character sets "
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32433203
Andrew Kruchinin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мдя.

1. Скрипт создания базы + текст ХП и нужных таблиц. Текст коннекта к базе. Про кодировку правильно сказали, но может еще быть проблема с переполнением в строке. А вобще непонятно какую перепменную ты куда заносишь. В таком виде тебе никто не ответит никогда.

2. Если сам хочешь разобратся, код комментируй участками и постепенно его раскомментируй. Тогда может и сам строчку отыщешь в которой ошибка вылетает.
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32433209
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Про кодировку правильно сказали, но может еще быть проблема с переполнением в строке.

тогда бы не сказала "Cannot transliterate character between character sets", имхо...
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32433214
Andrew Kruchinin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тогда бы не сказала "Cannot transliterate character between character sets", имхо...

Согласен, но вообще без скрипта тут что-то смотреть нереально. А ни скрипта создания, ни строки коннекта не видно.
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32433217
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ув. Тиран!

Для ответа на вопрос, с кодировками ли грабли, дайте строку подсоединения к базе. А раз в IBExpert работает, то из информации о регистрации базы - кодировку подключения. А мы сравним, какая кодировка указана у вас в Дельфи и какая в IBE.
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32433220
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раз говорит, что в ибэ работает, должно хватить указанной там кодировки?
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32434064
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
про кодировки - заметил странную вещь в IB Expert: указанный тип кодировки WIN1251 для всех параметров ХП я указал, поработал и закрыл эксперта, странность в том что открыв в следующий раз оказалось что все что проставлял исчезло,хотя я уверен на все 100 что все было прописано!
CREATE PROCEDURE INSERT_REGBANKROT (
RNN_KRU VARCHAR(12),
RNN_BANKROT VARCHAR(12),
FORM_NAME VARCHAR(255),
GRANTING_NAME VARCHAR(50),
KIND_NAME VARCHAR(50),
PERIOD_NAME VARCHAR(50),
YEAR_NUM INTEGER,
DATE1 DATE,
DATE2 DATE,
RECEPTION_DATE DATE,
USER_NAME VARCHAR(50))
RETURNS (
NUMBER1 VARCHAR(6),
ERRORS INTEGER)
AS
DECLARE VARIABLE MAX_DATE DATE;
DECLARE VARIABLE FORM_ID INTEGER;
DECLARE VARIABLE PERIOD_ID INTEGER;
DECLARE VARIABLE KIND_ID INTEGER;
DECLARE VARIABLE GRANTING_ID INTEGER;
DECLARE VARIABLE USER_ID INTEGER;
DECLARE VARIABLE TEMP_KOL INTEGER;

а строки коннекта у меня нет потому что я делаю это через IBDatabase1 и IBTransaction1 :
DataModule2.IBDatabase1.Connected:=true;
DataModule2.IBTransaction1.Active:=true;
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32434164
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выяснил что текст процедуры нипричем, ошибка при назначении параметру типа varchar значения их русских слов... - цифры принимаются нормально!
как правильно в дельфи передать параметры с русскими буквами?
я это делаю вот так:
DataModule2.IBStoredProc1.Params[4].AsString:='форма1'; для всех параметров,
текст в этом случае я прописал вручную для тестирования ХП

очень благодарен всем отозвавшимся на вопрос, книги у нас появляются оооочень редко и то сразу исчезают:) так что надежда только на Ваши ответы:)
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32434233
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
покопавшись всетаки в предыдущих вопросах нашел таки ответ на свой вопрос
так что он закрыт !!!
для всех кто столкнется в будущем - мне помогло указание в параметрах DataBase вот такой строчки - lc_ctype=win1251
...
Рейтинг: 0 / 0
Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
    #32434537
hyh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:D
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Cannot transliterate character between character sets (Было: 3 дня в InterBase :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]