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

Вниз

Ширина столбцов в DBGrid.   Найти похожие ветки 

 
Андрей   (2004-07-07 10:44) [0]

Простой, но жутко важный для меня вопрос. Подскажите, как заставить DBGrid устанавливать ширину поля (отображаюшего строковую запись) в соответствии с длинной самой большой записи в нём, а не по количеству знакомест, зарезервированых в таблице.


 
Sandman25 ©   (2004-07-07 10:58) [1]

Андрей   (07.07.04 10:44)

Как найти максимальную длину поля? Наверное, пересмотреть все записи и найти самую большую.


 
Андрей   (2004-07-07 11:01) [2]

Тогда как максимально заоптимизировать поиск? Ибо записей много, время перебора стремится к 50-60 сек.
В смысле через
DataSet.Next
читаем, сравниваем с самой большой, делаем выводы
ПОКА not eof


 
StarWolf   (2004-07-07 11:08) [3]

Ну если речь идет о поиске строки с макс.длиной, то я бы посоветовал завести еще одну Query и там SQL"ем выбрать запись с максимальной длиной (правда смотря какая СУБД).


 
Андрей   (2004-07-07 11:11) [4]

to StarWolf  
Видимо, это самое правильное решение. Хотя очень не хотелось связываться с ещё одним Квери, но по-видимому прийдётся. Спасибо.


 
Sandman25 ©   (2004-07-07 11:23) [5]

>Ибо записей много, время перебора стремится к 50-60 сек.

Если Вы показываете в DBGrid больше 100 записей, пересмотрите свой подход.


 
evvcom ©   (2004-07-07 11:32) [6]

DBGrid выбирает из возвращенного курсора только те записи, которые ему надо отобразить. После скроллинга он fetch-ем выбирает дополнительные. Если

> время перебора стремится к 50-60 сек

то что-то неверно в подходе. Может долго отрабатывать запрос, но опять же 50-60 сек...? Возможно, не оптимизирован сам запрос. Для меня 5-6 сек. уже долго. А пробегать по Dataset Next-ами это неверно. Если нет желания лишний Query кидать на форму, для разовой операции его можно создать динамически, использовать и тут же удалить.


 
Sandman25 ©   (2004-07-07 11:34) [7]

[6] evvcom ©   (07.07.04 11:32)

>А пробегать по Dataset Next-ами это неверно

Необязательно. Простейший пример - в датасете 1-2 записи.


 
evvcom ©   (2004-07-07 12:27) [8]


> Простейший пример - в датасете 1-2 записи.

Ну здесь-то явно не 1-2 записи. Поэтому неверный подход, имхо. А вообще нужно ли устанавливать автоматом ширину по самой длинной записи? Мне покажется столбец очень широким, я его сделаю уже, а в следующий раз он опять станет широким. Мне бы такое не понравилось.


 
Sandman25 ©   (2004-07-07 12:29) [9]

[8] evvcom ©   (07.07.04 12:27)

Что неверный подход - это понятно. Но я о том и говорю, что при верном подходе уже будет вполне возможно использовать и DataSet.Next.
Отключить обработчики "ненужных" событий типа OnCalcField и Before/AfterScroll и "отображатели", а затем пробежаться по 50 записям займет очень мало времени. Незачем лишний раз сервер нагружать, если вся инфо и так уже на клиенте есть.


 
evvcom ©   (2004-07-07 12:53) [10]


> вполне возможно использовать и DataSet.Next.

Возможно, да, а возможно и нет. Я сталкивался с запросами, которые возвращают несколько тысяч записей (ФИО, отсортированные по алфавиту, и прочие связанные с этим поля). Если здесь пробегать по всем записям Next-ом, то к тормозам сервера добавятся значительные тормоза клиента.



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

Форум: "Основная";
Текущий архив: 2004.07.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.028 c
3-1087991058
dns
2004-06-23 15:44
2004.07.18
Соединение Table


3-1088325416
SergP
2004-06-27 12:36
2004.07.18
Проблема с компонентами odac


9-1080183143
Darkmon
2004-03-25 05:52
2004.07.18
Давайте RIP нем буржуев!


3-1087737702
Катя
2004-06-20 17:21
2004.07.18
Свойства DBGrid


1-1089195017
GreySerg
2004-07-07 14:10
2004.07.18
Почему после отключения debug info exeшник не уменьшается ?





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