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

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

Переменная длина записи СУБД на сервере - большее зло, чем криворукое поделие на клиенте.
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39006385
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мудрец читай сильное колдунство
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39007138
Mudrec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за критику, она очень помогает, стимулирует. Я так понял, чтоб избежать долепливания пробелов справа, нужно конвертнуть поля 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
Проблема с DBGrid
    #39007212
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MudrecСпасибо за критику, она очень помогает, стимулирует. Я так понял, чтоб избежать долепливания пробелов справа, нужно конвертнуть поля nchar в varchar.Глупости какие.
nchar - юникодная строка с жестко заданной длиной.
varchar - строка в стандартной кодировке базы, с длиной строки не более чем заданная.
И то и другое описывает какие строки ты можешь хранить в базе данных. Это никак не лимитирует то как ты будешь показывать это поле на клиенте.
DBGrid - это клиент. Он по умолчанию просто показывает то что прочитано из базы. Если ты хочешь чтобы поле у тебя было как-то по особому отрисованно на экране, управляй своим DBgrid.

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

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

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

MasterZivСУБД не озвучена, так что ...Ну и что, что не озвучена. Ты не знаешь СУБД в которой есть типы nchar и varchar2?
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39007258
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Проблема с DBGrid
    #39007259
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlMasterZivпропущено...


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


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

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

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

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

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

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

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

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

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

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

ALTER TABLE table_name
ALTER COLUMN column_name datatype



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

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

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

Пробелы отображаются, наверно потому что nchar их уже натыкал. Как бы сейчас с базы убрать все эти пробелы?
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39011908
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MudrecПробелы отображаются, наверно потому что nchar их уже натыкал. Как бы сейчас с базы убрать все эти пробелы?UPDATE <MyEvilTable> SET <MyFuckinField> = RTRIM( <MyFuckinField> ); например )))
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39011924
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MudrecMasterZivпропущено...


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

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

Пробелы отображаются, наверно потому что nchar их уже натыкал. Как бы сейчас с базы убрать все эти пробелы?

Нет, не поэтому.
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39011926
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MudrecУдаляю с таблицы индексные поля

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

ALTER TABLE table_name
ALTER COLUMN column_name datatype



Потом опять хочу создать индексы, но при сохранении таблицы, выдает вот такое

Это таймаут запроса, создавай индексы в нормальной консольке, без сконфигурённого таймаута.
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39011955
Mudrec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
egorych,

УРАААААА все получилось и пробелы убрал и индексы поставил. Огромное всем спасибо, кто помогает, вы вносите огромный вклад в развитие человечества!!!!!
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39012086
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mudrecвы вносите огромный вклад в развитие человечества!!!!!дети у нас хорошо получаются, эт-да )))
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014023
Mudrec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну выручайте снова))))) хотя думаю буду постоянно к вам обращаться.

В DBGrid мне выводит список людей, я написал функцию, которая просматривает максимальную длину строки, для того чтобы по не сделать ширину столбца.

моя функция работает только по последней строке.

Как в adoquery установить нулевую запись, т.е. вернуться в самую верхнюю левую ячейку????
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014144
Mudrec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
//возвращает максимальную длину строки в столбцах
int __fastcall TQuickSearch::MaxLength(AnsiString field)
{
int max=0;
AnsiString f="";


for(int m=1;m<ADOQExec->RecordCount;m++,ADOQExec->Next())
{
f=ADOQExec->FieldByName(field)->Text;
//удаляю пробелы
f=f.TrimRight();
if(max<f.Length())
{

max=f.Length();
}
}
ShowMessage(f);
return max;
}
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014145
Mudrec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот на практике вот так его подрезает почему то, имя подрезает
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014192
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mudrec, а ты как длину строки в пиксели переводишь?

строка "||||||" 6 символов
строка "ЩЩЩЩ" 4 символа
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014253
Mudrec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m_Sla,

Вот как то так

//подгонка столбцов
int x=8;

DBGrid1->Columns->Items[0]->Width=MaxLength("surname")*x;
DBGrid1->Columns->Items[1]->Width=MaxLength("name")*x;
DBGrid1->Columns->Items[2]->Width=MaxLength("o_name")*x;
DBGrid1->Columns->Items[3]->Width=MaxLength("dateBirth")*x;
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014261
Mudrec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
функция работает, но работает только по той строке в которой находится. т.е. ширину ячейки делает нормально по последней строке Grida. А мне бы вернуться на начальную в самый верх
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014461
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mudrec, ADOQExec->First();
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014463
m_Sla
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mudrec,
имхо это не лучший вариант решения проблемы
спроси в разделе Делфи, может там по DBGrid подскажут
...
Рейтинг: 0 / 0
Проблема с DBGrid
    #39014964
Mudrec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m_SlaMudrec, ADOQExec->First();


Спасибо. Работает. А это сейчас самое главное.
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с DBGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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