Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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.


 
vopros   (2002-03-29 15:21) [41]

>Anatoly Podgoretsky © (29.03.02 15:04)
В принципе проблема решена.
Когда говорил что: "Через SQL я знаю." Такого типа задачи решались легко а вот с датой в Intеrbase заморочки вышли.

>Так все таки TTable или SQL
Не устал? Зачем задавать лишние вопросы...?Как знаешь так и ответь.
Такое ощущение лишь бы ляпнуть что...Предидущие ответы читать Не пробывали?



 
Anatoly Podgoretsky   (2002-03-29 15:32) [42]

vopros © (29.03.02 15:21)
А я так и ответил, вот большое спасибо за разъяснение.
Но все равно в недоумение Table или SQL, так как несколькими события ты противоречишь написанному ранее.
А ответов тебе надовали столько, что зватит решений на долгие годы.


 
vopros   (2002-03-29 15:35) [43]

>Anatoly Podgoretsky © (29.03.02 15:32)
Да я уже пытался докричать что я все понял!:)))



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

Форум: "Базы";
Текущий архив: 2002.04.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.006 c
1-69872
Andre V.
2002-04-08 10:24
2002.04.22
Создание своих VCL


1-69819
Nikit
2002-04-08 12:58
2002.04.22
save/load to/from file


1-69851
heruvim4ik
2002-04-08 20:52
2002.04.22
Разноцветный текст вили TRichEdit ещё гденть.


1-69762
AFROLOV
2002-04-08 13:21
2002.04.22
Как использовать в Delphiклассы и перегруженные для них операторы


3-69730
NickVal
2002-04-01 16:28
2002.04.22
Paradox : Динамическое изменение параметра индекса





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский