Проблема с DBGrid

Mudrec
Дата: 13.07.2015 16:22:31
Пока DBGrid пустой, то адекватно реагирует на растяжение формы. Была сделана функция, которая самая меняет размеры поля. После заполнения DBGrid данными поля становятся широкими из за того что в БД скл зарезервированно nchar(50) и в Grid выводятся пробелы.
Dimitry Sibiryakov
Дата: 13.07.2015 16:24:56

Mudrec
в БД скл зарезервированно nchar(50)

Дай по башке тому кретину, который это сделал.

Posted via ActualForum NNTP Server 1.5

mayton
Дата: 13.07.2015 19:52:11
Джентльмены. Спокойнее. Тут тех-форум.
Dima T
Дата: 13.07.2015 20:18:38
Dimitry Sibiryakov,

Переменная длина поля - зло, но причины его применения всякие бывают. Лично я nchar(250) применял там где обычно 10-30 букав, но иногда 250 не хватает.
Зимаргл
Дата: 13.07.2015 20:40:29
Dimitry Sibiryakov
Mudrec
в БД скл зарезервированно nchar(50)

Дай по башке тому кретину, который это сделал.

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

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

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.



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

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

Table altered.

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



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


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

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


В разных СУБД по-разному. СУБД не озвучена, так что ...
White Owl
Дата: 14.07.2015 18:00:41
MasterZiv
White Owl
пропущено...
Глупости какие.
nchar - юникодная строка с жестко заданной длиной.


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

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