Форум: "Базы";
Текущий архив: 2002.02.11;
Скачать: [xml.tar.bz2];
ВнизСортировка по дате Найти похожие ветки
← →
Ghost! (2002-01-10 16:35) [0]Здравствуйте, господа!
Вопрос таков: в DBGrid"е есть колонка с датами. При чём даты состоят только из дня и месяца (**.**) и имеют тип string. Как сделать так, чтоб перед каждым закрытием программы, данные сортировались по этим датам (в порядке увеличения даты)? Используется Table, DBGrid и DataSourse. Если можно, с кусочками кода. Благодарю за внимание.
← →
roottim (2002-01-10 16:42) [1]какой то бред....
что значит перед закрытеием сортировались.... зачем это вообще надо...
в базе они всеравно в разброс хранятся... все что выводится нужно сортировать SQL
← →
Ghost! (2002-01-10 16:50) [2]Извините за мутность вопроса. Я имел ввиду, чтоб данные сортиовались перед закрытием программы + в таком виде сохранялись в базу (уже рассортированные).
← →
dymka (2002-01-10 16:50) [3]Первое - не думай что записи в базе данных хранятся в отсортированном виде (на самом деле они хранятся в порядке их добавления). Сортировка это чисто визуальное представление данных и не должна зависеть от способа хранения! Поэтому если нужно тебе выводить данные в отсортированном виде, то построй по этому полю индекс и укажи его в таблице TTable.IndexName.
← →
Ghost! (2002-01-10 18:01) [4]Если честно, то на БД я только недавно подсел. Поэтому не могли бы Вы подробнее (возможно, с примером) описать как построить по полю индекс?
← →
Ghost! (2002-01-10 20:29) [5]Так чё, некому просветить тёмного человека?
← →
dymka (2002-01-11 07:47) [6]Открываешь Database Desktop - там открываешь свою таблицу и лезешь в смену структуры - там гдето справа будут кнопки создания индексов, создаешь: задаешь имя индекса, поле по которому будет построено, доп информацию всякую.
Сохраняешь новую структуру. После этого в своем приложении когда установишь соединение с таблицей устанавливаешь свойство Table.IndexName равное названию твоего индекса. И все...
← →
Ghost! (2002-01-14 20:25) [7]Спасибо, dymka, но к сожалению эфект от этого небольшой. Колонка имеет тип String, в котором записанны даты, состоящии из дня и месяца, года нет (поэтому тип не Date). И при индексации получается что-то вроде:
05.08
07.03
09.12
А мне надо, чтоб данные сортировались с учётом месяца. Надеюсь, Вы понимаете меня? Ещё раз спасибо.
← →
Yu (2002-01-15 10:44) [8]Я бы предложил сделать поле типа Date, пользователь заполняет день и месяц, а год заполняется програмно и всегда один и тот же (например, 2000). Тогда все будет сортироваться как надо. Сам не пробовал, но по идее должно получиться...
← →
dymka (2002-01-15 10:49) [9]Сделай наоборот - Сначала месяц а потом год :)
← →
dymka (2002-01-15 10:49) [10]Сделай наоборот - Сначала месяц а потом день :)
← →
Ghost! (2002-01-16 09:15) [11]Спасибо за очень дельные советы. Совет dymka я пожалуй оставлю, как запасной вариант. Дело в том, что ни добавление года, ни перемена местами дня и месяца мне не подходят, так как первое - не совсем эстетично, а второе - не все в мире знают про английский стиль и возможно будут путаться. :( Но всё равно спасибо.
← →
roottim (2002-01-16 09:23) [12]вообще если хочеш сортировать нормально... то используй либо тип DATE либо разделяй(поля) и властвуй :)
← →
fnatali (2002-01-16 09:34) [13]Ghost! (16.01.02 09:15)
Тебе же предлагают формат ХРАНЕНИЯ данных и, соответственно, индекс по нему будет строиться. А ОТОБРАЖАТЬ данные ты можешь в другом виде - хоть месяц впереди, хоть день, хоть ещё чего-нибудь
← →
Turalyon (2002-01-16 11:41) [14]>Ghost!
Согласен с fnatali © делай формат поля Date а при выводе отлавливай метод onDrawColumnCell и рисуй там хоть чертиков.
Подробнее об этом почитай в статье:
http://www.delphikingdom.com/helloworld/dbgridcolor.htm
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.02.11;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c