лишние символы в записи таблицы БД (firebird, delphi7)
От: kabazoo  
Дата: 15.01.06 21:26
Оценка:
Народ проблема следующая ...

есть база данных на firebird 1.5. В ней таблица, в таблице — поле Name, типа Char (win1251) длинной 50 символов.

1.Делаю выборку : SELECT * FROM TABLE_A
2.Cчитываю значения поля командой fieldbyname и присваиваю edit'у значение поля...
edit1.text:=ibsql.sql.fieldbyname('Name').asstring;

Результат: к значению поля непонятно откуда "прилепливается" еще ~40 пробелов.
такой же результат если просто воспользоваться DBEdit и заассигнить его к полю Name.
В базе никаких пробелов нет , проверял IB Expert'ом..


Есть предположение ,что это как то связано с незаконченной транзакцией. Прошу помочь ..
Re: лишние символы в записи таблицы БД (firebird, delphi7)
От: U-4X-96  
Дата: 15.01.06 21:31
Оценка:
Здравствуйте, kabazoo,

Ну так CHAR это строка фиксированой длины, тебе наверное VARCHAR нужен.
Хотя про firebird незнаю ничего, может у него свои тараканы имеються.
Re: лишние символы в записи таблицы БД (firebird, delphi7)
От: Аноним  
Дата: 16.01.06 06:16
Оценка:
Здравствуйте, kabazoo, Вы писали:

K>есть база данных на firebird 1.5. В ней таблица, в таблице — поле Name, типа Char (win1251) длинной 50 символов.


K>1.Делаю выборку : SELECT * FROM TABLE_A

K>2.Cчитываю значения поля командой fieldbyname и присваиваю edit'у значение поля...
K>edit1.text:=ibsql.sql.fieldbyname('Name').asstring;

K>Результат: к значению поля непонятно откуда "прилепливается" еще ~40 пробелов.

K>такой же результат если просто воспользоваться DBEdit и заассигнить его к полю Name.
K>В базе никаких пробелов нет , проверял IB Expert'ом..
FB все строковые типы хранит как VARCHAR. Различия между CHAR и VARCHAR появляются на стороне клиента. К CHAR добавляется нужное количество пробелов.

P.S. Кстати, из твоего поста не понятно, у тебя 40 пробелов дополняют поле до 50-символов или получается 90?
Re[2]: лишние символы в записи таблицы БД (firebird, delphi
От: kabazoo  
Дата: 16.01.06 07:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, kabazoo, Вы писали:


K>>есть база данных на firebird 1.5. В ней таблица, в таблице — поле Name, типа Char (win1251) длинной 50 символов.


K>>1.Делаю выборку : SELECT * FROM TABLE_A

K>>2.Cчитываю значения поля командой fieldbyname и присваиваю edit'у значение поля...
K>>edit1.text:=ibsql.sql.fieldbyname('Name').asstring;

K>>Результат: к значению поля непонятно откуда "прилепливается" еще ~40 пробелов.

K>>такой же результат если просто воспользоваться DBEdit и заассигнить его к полю Name.
K>>В базе никаких пробелов нет , проверял IB Expert'ом..
А>FB все строковые типы хранит как VARCHAR. Различия между CHAR и VARCHAR появляются на стороне клиента. К CHAR добавляется нужное количество пробелов.

А>P.S. Кстати, из твоего поста не понятно, у тебя 40 пробелов дополняют поле до 50-символов или получается 90?


неа , всего около пятидесяти символов ...
Re[3]: лишние символы в записи таблицы БД (firebird, delphi
От: OLEGus1 Россия  
Дата: 16.01.06 08:02
Оценка:
Здравствуйте, kabazoo, Вы писали:

K> неа , всего около пятидесяти символов ...


те 45 — 55?
Crescite, nos qui vivimus, multiplicamini
Re[3]: лишние символы в записи таблицы БД (firebird, delphi
От: linker Россия  
Дата: 16.01.06 08:05
Оценка:
Здравствуйте, kabazoo, Вы писали:

А>>P.S. Кстати, из твоего поста не понятно, у тебя 40 пробелов дополняют поле до 50-символов или получается 90?


K> неа , всего около пятидесяти символов ...

Блин поставь вместо char varchar и все будет хорошо.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[3]: лишние символы в записи таблицы БД (firebird, delphi
От: FWP Россия  
Дата: 16.01.06 09:05
Оценка:
Здравствуйте, kabazoo, Вы писали:

K> неа , всего около пятидесяти символов ...

Значит все правильно. fbclient.dll добавила строку до 50 символов. Значит или режь лишнее c помощью RTrim() или меняй поле на VARCHAR.
Re[2]: лишние символы в записи таблицы БД (firebird, delphi
От: MatFiz Россия  
Дата: 16.01.06 10:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>FB все строковые типы хранит как VARCHAR. Различия между CHAR и VARCHAR появляются на стороне клиента. К CHAR добавляется нужное количество пробелов.


Нафига вообще нужен тип CHAR тогда???
Неужели просто для обратной совместимости?
How are YOU doin'?
Re[3]: лишние символы в записи таблицы БД (firebird, delphi
От: linker Россия  
Дата: 16.01.06 11:16
Оценка:
Здравствуйте, MatFiz, Вы писали:


MF>Нафига вообще нужен тип CHAR тогда???

MF>Неужели просто для обратной совместимости?
Если данные одинаковой длинны,то лучше char и СУБД быстрей обрабатывает char(длинну не надо считать)
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.