Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с DBGrid / 25 сообщений из 38, страница 1 из 2
13.07.2015, 16:22
    #39006129
Mudrec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Пока DBGrid пустой, то адекватно реагирует на растяжение формы. Была сделана функция, которая самая меняет размеры поля. После заполнения DBGrid данными поля становятся широкими из за того что в БД скл зарезервированно nchar(50) и в Grid выводятся пробелы.
...
Рейтинг: 0 / 0
13.07.2015, 16:24
    #39006132
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Mudrecв БД скл зарезервированно nchar(50)
Дай по башке тому кретину, который это сделал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
13.07.2015, 19:52
    #39006313
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Джентльмены. Спокойнее. Тут тех-форум.
...
Рейтинг: 0 / 0
13.07.2015, 20:18
    #39006325
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Dimitry Sibiryakov,

Переменная длина поля - зло, но причины его применения всякие бывают. Лично я nchar(250) применял там где обычно 10-30 букав, но иногда 250 не хватает.
...
Рейтинг: 0 / 0
13.07.2015, 20:40
    #39006334
Зимаргл
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Dimitry SibiryakovMudrecв БД скл зарезервированно nchar(50)
Дай по башке тому кретину, который это сделал.

Переменная длина записи СУБД на сервере - большее зло, чем криворукое поделие на клиенте.
...
Рейтинг: 0 / 0
13.07.2015, 22:48
    #39006385
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Мудрец читай сильное колдунство
...
Рейтинг: 0 / 0
14.07.2015, 16:41
    #39007138
Mudrec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Спасибо за критику, она очень помогает, стимулирует. Я так понял, чтоб избежать долепливания пробелов справа, нужно конвертнуть поля nchar в varchar. Взял пример с ссылки, куда вы меня отправили. Вот так можно сделать?

Код: sql
1.
2.
3.
4.
5.
6.
7.
alter table tbFIO drop constraint PK_tbFIO;       //отключаю индексирование
                                                        
alter table tbFIO modify(name varchar);         //поле name модифицирую в varchar

alter table tbFIO add constraint PK_tbFIO foreign key  //обратно устанавливаем уникальное поле

(offcode)references cfg_office(officecode);               //вот здесь не понимаю что происходит





Вот исходный код товарища John Stegeman

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SQL> alter table cfg_off drop constraint fk_cfg;       
                                                       
Table altered.                                         

SQL> alter table cfg_office modify(officecode varchar2(5 byte)); 
                                                                 
Table altered.                                                   

SQL> alter table cfg_office modify(officecode varchar2(5 byte));       
                                                                       
Table altered.                                                         

SQL> alter table cfg_off add constraint fk_cfg foreign key (offcode)references cfg_office(officecode);                                                          
                                                                                
Table altered.   



Еще не могу понять зачем два раза одно и тоже:

Код: plaintext
1.
2.
3.
4.
5.
6.
SQL> alter table cfg_office modify(officecode varchar2(5 byte)); 
                                                             
Table altered.                                                   

SQL> alter table cfg_office modify(officecode varchar2(5 byte));  



А вот на другом сайте нашел:
Код: sql
1.
ALTER TABLE таб1 ALTER COLUMN  поле1 VARCHAR(50);



Скажите как правильно сделать. А то данных уже много, ну тупанул, но исправлять косяки ведь нужно!
...
Рейтинг: 0 / 0
14.07.2015, 17:31
    #39007212
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
MudrecСпасибо за критику, она очень помогает, стимулирует. Я так понял, чтоб избежать долепливания пробелов справа, нужно конвертнуть поля nchar в varchar.Глупости какие.
nchar - юникодная строка с жестко заданной длиной.
varchar - строка в стандартной кодировке базы, с длиной строки не более чем заданная.
И то и другое описывает какие строки ты можешь хранить в базе данных. Это никак не лимитирует то как ты будешь показывать это поле на клиенте.
DBGrid - это клиент. Он по умолчанию просто показывает то что прочитано из базы. Если ты хочешь чтобы поле у тебя было как-то по особому отрисованно на экране, управляй своим DBgrid.

MudrecСкажите как правильно сделать. А то данных уже много, ну тупанул, но исправлять косяки ведь нужно!Запусти свою любимую среду разработки. Поставь курсор на свой DBGrid и ткни кнопку F1. ЧИТАЙ! Попытайся оправдать свой ник.
...
Рейтинг: 0 / 0
14.07.2015, 17:47
    #39007230
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
White OwlMudrecСпасибо за критику, она очень помогает, стимулирует. Я так понял, чтоб избежать долепливания пробелов справа, нужно конвертнуть поля nchar в varchar.Глупости какие.
nchar - юникодная строка с жестко заданной длиной.

В разных СУБД по-разному. СУБД не озвучена, так что ...
...
Рейтинг: 0 / 0
14.07.2015, 18:00
    #39007248
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
MasterZivWhite Owlпропущено...
Глупости какие.
nchar - юникодная строка с жестко заданной длиной.

В разных СУБД по-разному.М? И в какой же СУБД, имеющей тип nchar, это не поле для юникодных строк?

MasterZivСУБД не озвучена, так что ...Ну и что, что не озвучена. Ты не знаешь СУБД в которой есть типы nchar и varchar2?
...
Рейтинг: 0 / 0
14.07.2015, 18:06
    #39007258
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Mudrec,

Код: sql
1.
2.
3.
4.
5.
alter table tbFIO drop constraint PK_tbFIO;       //отключаю индексирование
                                                        
...

alter table tbFIO add constraint PK_tbFIO foreign key  //обратно устанавливаем уникальное поле



Неправильно.

Код: sql
1.
2.
3.
4.
5.
alter table tbFIO drop constraint PK_tbFIO;
                                                        
...

alter table tbFIO add constraint PK_tbFIO primary key (ПОЛЯ ЧЕРЕЗ ЗАПЯТУЮ);
...
Рейтинг: 0 / 0
14.07.2015, 18:09
    #39007259
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
White OwlMasterZivпропущено...


В разных СУБД по-разному.М? И в какой же СУБД, имеющей тип nchar, это не поле для юникодных строк?


Не так. В некоторых СУБД такие поля не фиксированной длины.

White OwlMasterZivСУБД не озвучена, так что ...Ну и что, что не озвучена. Ты не знаешь СУБД в которой есть типы nchar и varchar2?

А в некоторых СУБД таких типов данных вообще нет, и все строки -- юникодные.
...
Рейтинг: 0 / 0
14.07.2015, 18:58
    #39007293
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Да. СУБД не озвучена. Я кинул ссылку на Oracle наугад. Просто надоело задавать сотню
наводящих вопросов.

Наш почемучка потыкается помыкается и возможно озвучит название СУБД.
...
Рейтинг: 0 / 0
14.07.2015, 19:01
    #39007294
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
maytonНаш почемучка потыкается помыкается и возможно озвучит название СУБД.или напишет метод, который будет ему при отрисовке строки в ячейку грида обрезать пробелы справа :)
Ведь и перевод чар в варчар всё равно потребует провести такую процедуру на текущих данных, правда - один раз.
...
Рейтинг: 0 / 0
14.07.2015, 19:03
    #39007296
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Да пусть хотяб modify сделает. Не всёж сразу.
...
Рейтинг: 0 / 0
17.07.2015, 08:19
    #39009444
Mudrec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
maytonДа. СУБД не озвучена. Я кинул ссылку на Oracle наугад. Просто надоело задавать сотню
наводящих вопросов.

Наш почемучка потыкается помыкается и возможно озвучит название СУБД.

Извините уезжал. БД SQL Server 2012
Клиента пишу на builder 6 c++
Да я действительно пошел по вашей ссылке на оракл. Потому что другой инфы не было, просил помощи у вас. Так что вопрос с пробелами остается открытым. Скажите при varchar будут отображаться пробелы справа? а то вы меня так лихо оборали, что nchar вообще используют только дураки
...
Рейтинг: 0 / 0
17.07.2015, 08:21
    #39009445
Mudrec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
maytonДа пусть хотяб modify сделает. Не всёж сразу.

Согласен, лучше медленно, но уверенно. Так как сделать modify правильно?
...
Рейтинг: 0 / 0
17.07.2015, 08:39
    #39009458
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Mudrecnchar вообще используют только дураки
Так оно и есть. У nchar один сомнительный плюс в экономии места на диске (крайне редко эта экономия реально нужна) и куча минусов из-за усложненного хранения, например если у тебя все записи фиксированной длины (N байт), то начало 100500-й будет = начало 1й + 100500*N. Но если есть хоть одно поле переменной длины то определение расположения начала записи резко усложняется. Как следствие медленнее доступ к записи, т.е. чтение/запись замедляются, и в случае порчи таблицы гораздо меньше шансов на ее восстановление.
...
Рейтинг: 0 / 0
18.07.2015, 19:22
    #39010573
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
"Когда вы говорите, Иван Васильевич ..."
...
Рейтинг: 0 / 0
20.07.2015, 08:58
    #39010941
Mudrec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
ну помогите плиз, как модифицировать в varchar и убрать лишние пробелы. Очень очень прошу
...
Рейтинг: 0 / 0
20.07.2015, 09:16
    #39010950
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
MudrecБД SQL Server 2012
штатными средствами менеджмент студии - правой кнопкой мыши - дизайн таблицы, изменить тип поля и сохранить
...
Рейтинг: 0 / 0
20.07.2015, 12:31
    #39011209
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
MudrecСкажите при varchar будут отображаться пробелы справа?

нет, не будут.

alert table xxx modify field varchar(255) ....
...
Рейтинг: 0 / 0
21.07.2015, 09:50
    #39011900
Mudrec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
Удаляю с таблицы индексные поля

потом вот таким запросом меня тип на varchar(50)

ALTER TABLE table_name
ALTER COLUMN column_name datatype



Потом опять хочу создать индексы, но при сохранении таблицы, выдает вот такое
...
Рейтинг: 0 / 0
21.07.2015, 09:52
    #39011901
Mudrec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
MasterZivMudrecСкажите при varchar будут отображаться пробелы справа?

нет, не будут.

alert table xxx modify field varchar(255) ....

Пробелы отображаются, наверно потому что nchar их уже натыкал. Как бы сейчас с базы убрать все эти пробелы?
...
Рейтинг: 0 / 0
21.07.2015, 10:01
    #39011908
egorych
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с DBGrid
MudrecПробелы отображаются, наверно потому что nchar их уже натыкал. Как бы сейчас с базы убрать все эти пробелы?UPDATE <MyEvilTable> SET <MyFuckinField> = RTRIM( <MyFuckinField> ); например )))
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с DBGrid / 25 сообщений из 38, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]