Форум: "Базы";
Текущий архив: 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