Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Вниз

лишние символы в записи таблицы БД (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.013 c
15-1140025618
mr. Den
2006-02-15 20:46
2006.03.12
Люди ! Хелпь, плиз !


15-1140060498
КаПиБаРа
2006-02-16 06:28
2006.03.12
Ссылки в форуме


6-1132686956
Class1c
2005-11-22 22:15
2006.03.12
Работа с HTML контентом


2-1140427780
nap<>
2006-02-20 12:29
2006.03.12
TPageControl


1-1137717371
kostan
2006-01-20 03:36
2006.03.12
Ошибка - прозрачная панель при установке темы Windows XP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский