есть база данных на 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)
Ну так 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, Вы писали:
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
Здравствуйте, kabazoo, Вы писали:
А>>P.S. Кстати, из твоего поста не понятно, у тебя 40 пробелов дополняют поле до 50-символов или получается 90?
K> неа , всего около пятидесяти символов ...
Блин поставь вместо char varchar и все будет хорошо.
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[3]: лишние символы в записи таблицы БД (firebird, delphi
Здравствуйте, kabazoo, Вы писали:
K> неа , всего около пятидесяти символов ...
Значит все правильно. fbclient.dll добавила строку до 50 символов. Значит или режь лишнее c помощью RTrim() или меняй поле на VARCHAR.
Re[2]: лишние символы в записи таблицы БД (firebird, delphi
Здравствуйте, Аноним, Вы писали:
А>FB все строковые типы хранит как VARCHAR. Различия между CHAR и VARCHAR появляются на стороне клиента. К CHAR добавляется нужное количество пробелов.
Нафига вообще нужен тип CHAR тогда???
Неужели просто для обратной совместимости?
How are YOU doin'?
Re[3]: лишние символы в записи таблицы БД (firebird, delphi
MF>Нафига вообще нужен тип CHAR тогда??? MF>Неужели просто для обратной совместимости?
Если данные одинаковой длинны,то лучше char и СУБД быстрей обрабатывает char(длинну не надо считать)