Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать ледующую фильтрацию. [D5, IB6.x]


Страницы:   1 2 3

vopros ©   (2002-03-29 10:59:00) 

Надо показать тех работников у которых сегодня день рождение.


asafr   (2002-03-29 14:27:00) [21]

Эх! Был бы не IB, а MSSQL, то легко
select * from Table11
where DatePart(Day,Date_)=DatePart(day,getdate())
And DatePart(Month,Date_)=DatePart(month,getdate())

Посмотри Help IB, неужели там нет функций для работы с датами?


vopros   (2002-03-29 14:24:00) [22]

>Val © (29.03.02 14:17)
Причем тут выделения? Ты вообще с SQL знаком?
Я виже перед собой таблицу:
Иванов Петя 29.03.1914
Сидоров Дрон 25.02.1976
Пишу в SQL-builder
SELECT *
FROM TABLE1
WHERE DATE_BORN LIKE "29%"
Все нормально.
Пишу
SELECT *
FROM TABLE1
WHERE DATE_BORN LIKE "29.%"
Ничего не нормально.

>Wonder © (29.03.02 14:16)
Что посоветуешь?


Val   (2002-03-29 14:17:00) [23]

Вы разве не видите, что ваш пример как раз и говорит о том, что вы неверно выделяете нужные вам значения из даты, поскольку ничего не возвращается.


Wonder   (2002-03-29 14:16:00) [24]

В timestamp нет никаких точек...


vopros   (2002-03-29 14:12:00) [25]

Val © (29.03.02 14:03)
Проблема не в выделении.
Прблема в том что есть таблица Table1...в ней поля типа TIMESTAMP
Делаю запрос:
SELECT *
FROM TABLE1
WHERE DATE_BORN LIKE "23%"
рЕЗУЛЬТАТ-ПОКАЗЫВАЕТ ЗАПИСИ ВЕРНО ВСЕХ У КОГО 23 ЧИСЛА ДЕНЬ РОЖДЕНИЯ.
Делаю:
SELECT *
FROM TABLE1
WHERE DATE_BORN LIKE "23.%"
Ничего не показывает.
Как рещить проблему?


Val   (2002-03-29 14:03:00) [26]

при использовании SQL это совсем просто-в 6 IB есть функции выделения месяца и т.п. из даты, помнится.


vopros   (2002-03-29 13:55:00) [27]

>Val © (29.03.02 13:52)
Хоть что. Хоть фильтр хоть SQL.
Пока ничего не работает.Буду благодарен если подскажете.


Val   (2002-03-29 13:52:00) [28]

>vopros © (29.03.02 13:39)
вы все-таки что собрались использовать -фйильтр или SQL-запрос?


vopros   (2002-03-29 13:39:00) [29]

Вы что издеваетесь?
VAleksey (29.03.02 13:33)
с [DateEdit1.Date] по [DateEdit2.Date]).
не выдаст если DateEdit1.Date = DateEdit2.Date
Если не секрет что он выдаст?


VAleksey   (2002-03-29 13:33:00) [30]

с [DateEdit1.Date] по [DateEdit2.Date]).
не выдаст если DateEdit1.Date = DateEdit2.Date


vopros   (2002-03-29 12:46:00) [31]

Люди Вы задачу поняли?
gek (29.03.02 12:15)Опять же выдаст всех у кого дни рождения
с [DateEdit1.Date] по [DateEdit2.Date]).
>Val © (29.03.02 12:22)
Вы читаете мои уточнения? Что сравнивать я заню как сравнивать. Я это и говорил что день и месяц (сегодня) я вытащил..как дальше обработать.
Хоть через SQl фильтр. Помогите. плиз.





Val   (2002-03-29 12:22:00) [32]

>vopros © (29.03.02 12:05)
Естественно тупо. поскольку год вам, уважаемый, не нужен совершенно(если юбилеи определять не собрались :)), поскольку день рождения определяется по дню и месяцу
, следовательно, вам их и нужно сравнивать, выбирая из каждой записи и сравнивая с днем и месяцем текущей даты...


gek   (2002-03-29 12:15:00) [33]

Tbl_t.Indexname:="indx_date";
Tbl_t.SetRange([DateEdit1.Date],[DateEdit2.Date]);

Единственное, что обязан быть индекс


vopros   (2002-03-29 12:08:00) [34]

Кстати делаю Like "29%"-показывает всех людей у которых 29 дни рождения....а как точку ставлю "29.%" ни хрена не показывает.


vopros   (2002-03-29 12:05:00) [35]

>Val
Decodedate и использую...выделил на какое соответсвие проверять...все года что ли в фильтре через OR прогонять?ТУПО.
>Fareader © (29.03.02 12:00)
Что в этом коде он даст всех работников...но проверю на всякий случай...
А по поводу SQL почему Like "%" показвает все записи делаю..
"29.03.%" не хрена нет хотя точно есть.


Fareader   (2002-03-29 12:00:00) [36]

А так

Accept:=(FieldByname("data").asDate>=strtodate("29.03.1900"))and(FieldByname("data").asDate<=date)

Или у вас кто постарше есть :)


Val   (2002-03-29 11:59:00) [37]

используйте decodedate для выделения дня и месяца и в фильтре проверяйте на соответствие


vopros   (2002-03-29 11:52:00) [38]

Alexandr © (29.03.02 11:41)
И с какой датой сравнивать?
Сегодня 29.03.2002 а дни рождения
29.03.1950....и так далее. Есть "29.03." нужен символ типа * который заменяет все значения.

А на SQL
Select *
from table
where date_born Like "29.03.%"
Тоже не фига не показывает.Вчем проблема?


IPisk   (2002-03-29 11:42:00) [39]

Используй OnFilterRecord
Сравнивай поле даты рождения с Date и Accept:=true
else Accept:=false;

и еще Filtered:=true; для этой таблицы


Alexandr   (2002-03-29 11:41:00) [40]

в OnfilterRecord
Accept:=FieldByname("data").asDate=Date


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо