Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.04.22;
Скачать: CL | DM;

Вниз

Как сделать ледующую фильтрацию.   Найти похожие ветки 

 
vopros ©   (2002-03-29 10:59) [0]

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


 
Alexandr ©   (2002-03-29 11:01) [1]

ответ:
используй SQL


 
vopros ©   (2002-03-29 11:17) [2]

Через SQL я знаю. Надо через Ttable. Мне в чужую прогу только фльтрацию вставит. А изменять ее существенно не хочется.


 
Anatoly Podgoretsky ©   (2002-03-29 11:39) [3]

OnFilter


 
Alexandr ©   (2002-03-29 11:41) [4]

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


 
IPisk ©   (2002-03-29 11:42) [5]

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

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


 
vopros ©   (2002-03-29 11:52) [6]

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

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


 
Val ©   (2002-03-29 11:59) [7]

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


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

А так

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

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



 
vopros ©   (2002-03-29 12:05) [9]

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


 
vopros ©   (2002-03-29 12:08) [10]

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


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

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

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



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

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


 
vopros ©   (2002-03-29 12:46) [13]

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






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

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


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

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


 
Val ©   (2002-03-29 13:52) [16]

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


 
vopros ©   (2002-03-29 13:55) [17]

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


 
Val ©   (2002-03-29 14:03) [18]

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


 
vopros ©   (2002-03-29 14:12) [19]

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.%"
Ничего не показывает.
Как рещить проблему?


 
Wonder ©   (2002-03-29 14:16) [20]

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


 
Val ©   (2002-03-29 14:17) [21]

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


 
vopros ©   (2002-03-29 14:24) [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)
Что посоветуешь?


 
asafr ©   (2002-03-29 14:27) [23]

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

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


 
Lusha ©   (2002-03-29 14:27) [24]

>Vopros
Символ "/" вместо точки


 
Val ©   (2002-03-29 14:31) [25]

>vopros © (29.03.02 14:24)
Причем тут выделения? Ты вообще с SQL знаком?
:)) чуточку..
Уважаемый, вы видели как IB хранит дату? То что вы видите в таблице-это лишь ее отображение в таком формате.


 
vopros ©   (2002-03-29 14:36) [26]

>Lusha © (29.03.02 14:27)
Тоже такая идея была.Пробовал не помогает. Щас буду в helpe
рыться.


 
roottim   (2002-03-29 14:36) [27]

а чем "вопросу" непонравилось предложение по OnfilterRecord, предложенное ранее...

var
Year, Month, Day :Word;
Year1, Month1, Day1 :Word;
begin
DecodeDate(Date, Year1, Month1, Day1);
DecodeDate(ds.FieldByName("birthday").asDateTime, Year1, Month1, Day1);
if (Month1 = Month) and (Day1 = Day) then Accept:=True
else Accept:=False;
end;


 
Val ©   (2002-03-29 14:40) [28]

>roottim (29.03.02 14:36)
вероятно, отсутствием кода


 
Lusha ©   (2002-03-29 14:47) [29]

>vopros
Должно помочь...
Попробуйте сначала выполнить запрос вида
SELECT CAST(DATE_BORN AS VARCHAR(24)) FROM TABLE1

Сразу поймете что и почему. И в документацию лезть не надо. Незачем... :)

Удачи



 
vopros ©   (2002-03-29 14:50) [30]

>roottim (29.03.02 14:36)
Спасибо получилось.
Ты имел в виду...это предложение?Оно тебе кажеться актуальным?
>Alexandr © (29.03.02 11:41)
>в OnfilterRecord
>Accept:=FieldByname("data").asDate=Date

>Val © (29.03.02 14:40)
>roottim (29.03.02 14:36)
>вероятно, отсутствием кода
Ты в форумах не заблудился?
Прочитай все свои ответы...если они хоть где-то что-то как-то конкретизируют...Кроме базара пустого ничего всебе не несут.



 
vopros ©   (2002-03-29 14:51) [31]

Lusha © (29.03.02 14:47)
И это я тоже пробовал но дата начинает показываться в таком формате:
20-NOV-1976...и я не стал с этим заморачивться...


 
vopros ©   (2002-03-29 14:53) [32]

И вероятно поэтому Like и не работал...но ведь можно же как-то?


 
Lusha ©   (2002-03-29 15:00) [33]

Я бы сказал, именно поэтому LIKE и не работал... :)


 
iva ©   (2002-03-29 15:03) [34]

select * from karta_ where cast(datr as varchar(10)) like "28-FEB%"


 
Val ©   (2002-03-29 15:03) [35]

>vopros © (29.03.02 14:50)
Честно, сегодня утром влом спорить...пусть ты прав :)


 
Lusha ©   (2002-03-29 15:04) [36]

Конечно можно, если в IB есть функции или директивы форматирования. А вообще вариант с обработчиком на OnFilter мне кажется более симпатичным... :)


 
Anatoly Podgoretsky ©   (2002-03-29 15:04) [37]

vopros © (29.03.02 11:17)
"Через SQL я знаю."

Можно не поверить.
Так все таки TTable или SQL


 
iva ©   (2002-03-29 15:04) [38]

select * from karta_ where cast(datr as varchar(10)) like "28-FEB%"


 
vopros ©   (2002-03-29 15:06) [39]

Всем спасибо: Помогли.
>Val © (29.03.02 15:03):))
Повесилились.


 
USAtyj ©   (2002-03-29 15:06) [40]

По поводу вида 20-NOV-1976.
Смотри настройки конкретной сессии - наверняка должно быть что-то вроде формата даты. Вот для сессии и устанавливаешь формат: DD.MM.YYYY и тогда 20-NOV-1976 будет представляться в виде 20.11.1976.



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

Текущий архив: 2002.04.22;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.019 c
1-69907
inko
2002-04-09 15:37
2002.04.22
Как реализовать проверку расширения файлов?


1-69929
Veselov
2002-04-09 21:33
2002.04.22
Adobe Acrobat или как открыть с его поиощью файл...


3-69758
nicolaus
2002-04-02 10:27
2002.04.22
DBGrid Scroll ??? Как управлять скролом самостоятельно.


3-69734
michael_B
2002-03-30 21:20
2002.04.22
какие *.dll мне нужно перенести на машину заказчика, где вдруг


4-70071
cypher
2002-02-17 22:04
2002.04.22
HICON -> TIcon