Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

лишние символы в записи таблицы БД (firebird, delphi7)   Найти похожие ветки 

 
Kabazoo   (2006-01-16 00:21) [0]

Народ проблема следующая ...

есть база данных на 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.

Есть предположение ,что это как то связано с незаконченной транзакцией. Прошу помочь ..


 
sniknik ©   (2006-01-16 00:51) [1]

никак не с транзакцией... это связано с обьявлением типа Char (50) т.е. массива символов 50 символов длинной (пересчитай так и будет. сколько бы символов в начало не записал размер массива неизменится)

есть другое обьявления - динамический массив - VarChar (должно быть. IB4.x не уверен а в файребирде должно), пересоздай таблицу с ним. это будет с переменной длинной (какую строку внесеш), но не более ограничения указанного при создании.


 
Vemer ©   (2006-01-16 09:34) [2]

edit1.text := TRIM(ibsql.sql.fieldbyname("Name").asstring);


 
Виталий Панасенко   (2006-01-16 10:29) [3]


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

"Не дирижбамбль, Василий Иванович, а стратоступ... Энциклопию читать нужно..."(с) Петька


 
evvcom ©   (2006-01-16 10:32) [4]


> Виталий Панасенко   (16.01.06 10:29) [3]

:-))))))))


 
КиТаЯц ©   (2006-01-16 10:52) [5]

Два решения:
1. [2]
2. Изменить тип поля на VARchar


 
evvcom ©   (2006-01-16 10:58) [6]


> КиТаЯц ©   (16.01.06 10:52) [5]
> Два решения:
> 1. [2]
> 2. Изменить тип поля на VARchar

1. [2]
2. [1]
:)


 
kabazoo   (2006-01-16 11:02) [7]

ну trim это половина решения :)

приведу свой код ..

1. var1:=trim(fieldbyname("name").asstring);
2. sql1.sql.text:="select * from table2 where "name"=:s1";
....parambyname("s1"):=var1;

в таблице table2 запись со значением ,которое я получаю в 1), 100% есть , но выборка не возвращает никакого результата...

сегодня попытаюсь изменить на varchar


 
Sergey13 ©   (2006-01-16 11:04) [8]

А по мне так [2] - это не решение, а обход проблемы при невозможности менять структуру. 8-)


 
Плохиш ©   (2006-01-16 11:14) [9]


> в таблице table2 запись со значением ,которое я получаю
> в 1), 100% есть , но выборка не возвращает никакого результата

"blablabla           " <> "blablabla" - это понятно?


 
Desdechado ©   (2006-01-16 11:16) [10]

CHAR(50) - это ВСЕГДА 50 символов (дополняется пробелами автоматически)
VARCHAR(50) - это НЕ БОЛЕЕ 50 символов (что записал, то и будет)


 
Johnmen ©   (2006-01-16 11:17) [11]

>но выборка не возвращает никакого результата...

Конечно. Ведь "name" <> значение в var1

>....parambyname("s1"):=var1;

А это даже компилироваться небудет...


 
kabazoo   (2006-01-16 11:33) [12]

Johnmen ©

Возможно....... делфи  сейчас от меня далеко :)))


 
КиТаЯц ©   (2006-01-16 12:15) [13]


> evvcom ©   (16.01.06 10:58) [6]
>
> > КиТаЯц ©   (16.01.06 10:52) [5]
> > Два решения:
> > 1. [2]
> > 2. Изменить тип поля на VARchar
>
> 1. [2]
> 2. [1]
> :)

:)))
Да. Только в [1] советуют ПЕРЕСОЗДАть таблицу, а по мне так лучше просто тип поля сменить.


 
evvcom ©   (2006-01-16 12:27) [14]


> Только в [1] советуют ПЕРЕСОЗДАть таблицу, а по мне так
> лучше просто тип поля сменить.

Ну я не знаю особенностей птицы, поэтому к словам
> sniknik ©   (16.01.06 00:51) [1]
цепляться не стал. :)


 
DSKalugin ©   (2006-01-16 14:17) [15]

После изменения типа данных с CHAR(50) на VARCHAR(50) на лету(с имеющимися данными), обязательно рекомендую выполнить такой запрос

update TABLE_A set name=name



Страницы: 1 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
2-1140767478
evgenij_
2006-02-24 10:51
2006.03.12
DBGrid.Option


6-1130140516
isasa
2005-10-24 11:55
2006.03.12
Сеть XP + Win98.


15-1139864793
QwertyKz
2006-02-14 00:06
2006.03.12
Замена строк


3-1135230595
vista
2005-12-22 08:49
2006.03.12
Удаленный доступ к серверу Oracle


15-1140314092
Жду ответа
2006-02-19 04:54
2006.03.12
База или файл?