![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по датам. [D6]
asta © (2004-05-28 11:07:00)Уважаемые мастера, подскажите пожалуйста. У меня в Query есть поле "Дни рождения", нужно чтобы сортировка проиводилась сначала по месяцу, затем по дню. И еще, - текущий день, т.е. все, кто родился в этот день должны быть в начале. За ранее благодарю!
asta (2004-05-28 16:06:00) [1][19] Sandman25+1 (28.05.04 15:44)
Огромное спасибо!!!
asta (2004-05-28 16:03:00) [2][16] DenK_vrtz © (28.05.04 15:29)
Спасибо за такие "НУЖНЫЕ СОВЕТЫ", но если все знать и иметь, я бы не обращался сюда за помощью. А на счет английского, в свое время (по моему первому образованию) он (язык) был не так нужен. А сечас да, но это для меня второе высшее образование и уже многое упущено.
Sandman25+1 (2004-05-28 15:44:00) [3][18] asta © (28.05.04 15:38)
Выбираете Ваш TQuery в инспекторе, нажимаете мышкой на Params. Там должны быть 4 ... штучки. Выбираете их (все сразу или по очереди) и указываете: ParamType = ptInput, DataType = ftInteger (или ftSmallint).
В run-time:
Decode(Date, Y, M, D);
Query1.ParamByName('m1').AsInteger := M;
Query1.ParamByName('m2').AsInteger := M;
Query1.ParamByName('d1').AsInteger := D;
Query1.ParamByName('d2').AsInteger := D;
PS. Дальше без меня, уж извините. Вам очень нужно книжки почитать.
asta (2004-05-28 15:38:00) [4][15] Sandman25+1 (28.05.04 15:23)
Извините, но я не знаю где это описать, я только начинаю в Delphi...
sniknik (2004-05-28 15:36:00) [5]> мне нужно чтобы были на первом месте.
сделай сортировку по выражению "абсолютное значение(текущая дата - день рождения)", у обоих дат в выражении еще надо год обрезать.
получиш сортировку какую хотел (с неточностью с рождениями 29 февраля)
это в общем, точнее (в коде) не могу, не знаю такой базы "Да, СУБД". :(
DenK_vrtz (2004-05-28 15:29:00) [6]>asta ©
а еще купить(скачать, попросить у кого-нить) литературу. Чаще смотреть справки и читать хелпы!
А еще уроки английского языка не надо было прогуливать :)
Sandman25+1 (2004-05-28 15:23:00) [7][14] asta © (28.05.04 15:16)
Опишите параметры design-time (ptInput, ftInteger).
А в run-time значения им присвойте...
asta (2004-05-28 15:16:00) [8][13] Sandman25+1 (28.05.04 15:06)
Выдало такую ошибку:
Query1:Field 'm1'is of an unknown type.
Sandman25+1 (2004-05-28 15:06:00) [9]select 1, extract (month from dotar),
extract (day from dotar),
a.tn, fam, im, ot, dotar, b.dptname
from bid a, bdp b
where a.ceh=b.ceh and pruv=0 and
(extract (month from dotar) <> :m1
or extract (day from dotar) <> :d1)
union all
select 0, extract (month from dotar),
extract (day from dotar),
a.tn, fam, im, ot, dotar, b.dptname
from bid a, bdp b
where a.ceh=b.ceh and pruv=0 and
extract (month from dotar) = :m2
and extract (day from dotar) = :d2
order by 1, 2, 3
asta (2004-05-28 14:53:00) [10][2] Sandman25+1 (28.05.04 11:11)
У меня первоначально так:
select a.tn, fam, im, ot,dotar, b.dptname
from bid a, bdp b
where a.ceh=b.ceh and pruv=0
order by den, fam
где dotar - поле с датой рождения. Не знаю как Ваш запрос применить здесь.
asta (2004-05-28 14:40:00) [11][4] DenK_vrtz © (28.05.04 11:15)
цветом я знаю как выделить, мне нужно чтобы были на первом месте.
Fay (2004-05-28 14:40:00) [12]- СУБД?
- Да, СУБД.....
8)
asta (2004-05-28 14:34:00) [13][3]Sandman25+1 (28.05.04 11:11)
Я только вошел в сеть еще не пробовал, но спасибо.
asta (2004-05-28 14:31:00) [14][6]
Прошу прощения, - Интернет у меня отключился. Да СУБД, цветом я знаю как выделить, мне нужно чтобы были на первом месте.
Sandman25+1 (2004-05-28 11:23:00) [15][6] Соловьев © (28.05.04 11:20)
От СУБД зависит только способ получить месяц и день. Сам алгоритм (=логика) запроса от СУБД не зависит :)
Соловьев (2004-05-28 11:20:00) [16]Блин, телепаты:) И я хочу. Научите! :)))
Sandman25+1 (2004-05-28 11:19:00) [17][4] DenK_vrtz © (28.05.04 11:15)
Или locate сделать. Возможно, по кнопке.
DenK_vrtz (2004-05-28 11:15:00) [18]>т.е. все, кто родился в этот день должны быть в начале
может их лучше цветом другим выделить? :)
Sandman25+1 (2004-05-28 11:12:00) [19]Хотя лучше обойтись без union, добавив case
Sandman25+1 (2004-05-28 11:11:00) [20]
select 1, month(mydate), day(mydate), *
from mytable
where month(mydate) <> month(today)
or day(mydate) <> day(today)
union all
select 0, month(mydate), day(mydate), *
from mytable
where month(mydate) = month(today)
and day(mydate) = day(today)
order by 1, 2, 3