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

Вниз

поле char c пробелами....   Найти похожие ветки 

 
memo   (2006-08-29 12:08) [0]

Привет всем.
У меня проблема!!!
Есть база данных на MsSql.
Подключаюсь через ADO(если подключаться через BDE такой проблемы нет).
В таблице есть поле типа char. если выводить его в Dbgrid, то строка после данных заполняется пробелами и для того чтоб добавить данные необходимо сначала удалить эти пробелы в конце строки. ltrim, rtrim в запросе не помогают...
Если поле типа nvarchar, то такого не наблюдается...


 
Карелин Артем ©   (2006-08-29 12:11) [1]

кастуй в nvarchar


 
memo   (2006-08-29 12:12) [2]

переделывать очень много!!!
Много таблиц, и в каждой много вот таких полей...


 
Карелин Артем ©   (2006-08-29 12:14) [3]

Да в запросе кастуй


 
memo   (2006-08-29 12:17) [4]

В запросе ...
пожалуйста пример:
select LTRIM(RTRIM(поле)) from tables
тот же результат...


 
Карелин Артем ©   (2006-08-29 12:23) [5]


> memo   (29.08.06 12:17) [4]

Ты не понимаешь, что я написал. Пользуй Cast и Convert для явного преобразования в nvarchar
USE AdventureWorks;
GO
SELECT "The list price is " + CAST(ListPrice AS varchar(12)) AS ListPrice
FROM Production.Product
WHERE ListPrice BETWEEN 350.00 AND 400.00;
GO


 
wicked ©   (2006-08-29 12:24) [6]

поля типа char всегда добиваются пробелами до полной длины.
лечить - либо кастовать в запросе до varchar/nvarchar, либо alter table - на varchar/nvarchar же...
пример:
select cast(поле as varchar(255)) from tables


 
memo   (2006-08-29 12:54) [7]

я понял...
Нопочемуто select cast(поле as varchar(255)) from tables не получается, всё остаётся также:(


 
Карелин Артем ©   (2006-08-29 12:57) [8]


> memo   (29.08.06 12:54) [7]

А ты про *TRIM забыл ;)
После каста


 
memo   (2006-08-29 12:58) [9]

пробовал:
select CAST(ltrim(rtrim(field)) AS varchar(250)) AS name  from tables
пробелы обрезаются, но тогда поле не редактируется


 
Карелин Артем ©   (2006-08-29 13:01) [10]

В программе сделай обработчик для события OnGetText у поля и там делай TRIM


 
Sergey13 ©   (2006-08-29 13:03) [11]

2 memo
Старика Хоттабыча ищешь? Он тут не тусуется.


 
Плохиш ©   (2006-08-29 13:17) [12]


> Sergey13 ©   (29.08.06 13:03) [11]
> 2 memo
> Старика Хоттабыча ищешь? Он тут не тусуется.

Да нет, скорее всего, это крютые начинающие проектировали базу, а документацию читают одни ламеры, поэтому напихали полей с типом char, а теперь удивлются, что они работают так как описано в документации к используемой базе данных и пытаются вырвать гланды через ж...


 
Sergey13 ©   (2006-08-29 13:21) [13]

> [12] Плохиш ©   (29.08.06 13:17)

Да кто базу рисовал понятно, и что делать надо вроде то-же. Но

> [2] memo   (29.08.06 12:12)
> переделывать очень много!!!
> Много таблиц, и в каждой много вот таких полей...

Я и подумал - Хоттабыча исчють.


 
memo   (2006-08-29 13:26) [14]

Базу делали ещё до меня, а мне вот теперь приходится работать...
Там до хр...на таких полей, переделывать не охота...


 
Карелин Артем ©   (2006-08-29 13:28) [15]


> memo   (29.08.06 13:26) [14]

Делаешь 1 универсальный обработчик. Как грузится форма, берешь все наборы данных. У каждого текстового поля назначаешь этот обработчик в run time


 
ANB ©   (2006-08-29 13:50) [16]


> memo   (29.08.06 13:26) [14]

Вариант номер 2 :
Пишешь скрипт, который сканирует список таблиц и меняет тип все полей CHAR на VARCHAR. После этого все должно работать :)


 
Sergey13 ©   (2006-08-29 13:53) [17]

> [16] ANB ©   (29.08.06 13:50)

Да не охота ему. Может ты Хоттабычем будешь? 8-)


 
memo   (2006-08-29 13:55) [18]

я менять уже пробовал, не в этом проблема...
если я меняю везде на varchar, у меня прога перестаёт правильно работать, надо ещё разбираться почему...


 
ANB ©   (2006-08-29 13:56) [19]


> если я меняю везде на varchar, у меня прога перестаёт правильно
> работать,

А чего вываливать начинает ?
Чудес не бывает.


 
memo   (2006-08-29 13:58) [20]

нет, не вываливает, всё молча делает, но не правильно...


 
ANB ©   (2006-08-29 14:03) [21]

А что неправильно делает ? Кстати, после замены типа поля на varchar его еще и затримить по идее надо.


 
memo   (2006-08-29 14:11) [22]

я лучше в базе update table set field=(ltrim(rtrim(field))
мне кажется так попроще будет...


 
memo   (2006-08-29 14:13) [23]

программа печатает счета-фактуры, так вот они печатаются без данных...


 
ANB ©   (2006-08-29 14:14) [24]


> memo   (29.08.06 14:13) [23]

Значит какой то придурок сделал связку по char полю. Проверь мое предположение.


 
memo   (2006-08-29 14:16) [25]

это запросто...


 
ANB ©   (2006-08-29 14:20) [26]


> я лучше в базе update table set field=(ltrim(rtrim(field))
>
> мне кажется так попроще будет...

Не, не будет. char поле обратно пробелы допишет при покладке в базу.


 
memo   (2006-08-29 14:24) [27]

я имел ввиду, что если я поменяю char на varchar в таблице , то пробелы останутся и их уже придётся убирать update...


 
ANB ©   (2006-08-29 14:35) [28]

А сколько таблиц программой задействовано и есть ли исходники ?


 
memo   (2006-08-29 14:48) [29]

использовано 5 таблиц.
Исходники есть


 
ANB ©   (2006-08-29 15:01) [30]


>
> memo   (29.08.06 14:48) [29]

Ну так переделай все по-человечески. Там не сильно много - только связки поменять.



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

Форум: "Прочее";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.036 c
15-1156694224
Griha
2006-08-27 19:57
2006.09.17
Скрыть от приложения деактивацию его окна (WM_ACTIVATE)


15-1156922487
Dbn
2006-08-30 11:21
2006.09.17
a+b


15-1156837680
Griha
2006-08-29 11:48
2006.09.17
Вывод текста и графики в игру


15-1156059538
PSPF2003
2006-08-20 11:38
2006.09.17
Снотворное без рецепта


2-1156506003
Alral
2006-08-25 15:40
2006.09.17
Разбитие строки.





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