Главная страница
    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.012 c
5-1126858582
newGuest
2005-09-16 12:16
2006.03.12
Control has no parent window.


15-1140453655
Михаил (Киров)
2006-02-20 19:40
2006.03.12
COM-порт


2-1140437359
nap<>
2006-02-20 15:09
2006.03.12
TEhLib


15-1140292334
ArtemESC
2006-02-18 22:52
2006.03.12
Hello world в ассме


1-1139337192
JIurasdfsdf
2006-02-07 21:33
2006.03.12
Как узнать какой обьет выделен.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский