![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать ледующую фильтрацию. [D5, IB6.x]
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