Другие языки программирования и технологии

Delphi! База данных, помогите с логикой, работа с TDateTime? (clientdataset)

в общем дана таблица, в ней как-бы телепрограмма, т.е. 1 столбец это время, 2-й название телеперадачи, 3-й телеканал ну и т.д., ИД и др. данные. так вот, как сделать выборку данных, чтобы выбрались только те телепередачи, которые идут в данный момент, ясное дело что надо сравнить текущее время, но вот с чем именно???
МК
Максим Коос
20 920
Начать надо с начала.
1) раз датасет и дельфи то :
устанавливаем в переменную t текущее время. Пробегаем по всему датасету и выбираем те записи, для которых дата-время начала передачи меньше t а дата-время окончания передачи - больше t
2) если данные лежат на SQL серевере - задача упрощается.

Select * from ТЕЛЕПЕРЕДАЧИ where ДАТАВРЕМЯНАЧАЛА < GetTime() and ДАТАВРЕМЯКОНЦА>GetTime()

загоняете сию нехитрую конструкцию в вид, а из приложения теперь обращаетесь не к первоначальной таблице, а к этому виду.
Данияр Сакаев
Данияр Сакаев
8 642
Лучший ответ
Максим Коос данные в таблице разрозненные, т.е. типа

ТК ФУТБОЛ 20:20 Англия - Германия
ОРТ 15:20 Новости
НТВ 22:00 Спорт
....
и т.д., то что вы написали здесь так не прокатит, фактически у передачи нету ни начала ни конца.
да пожалуй.. . проще добавить еще одно поле, которое будет заполняться при добавлении новой записи:
- в событии afterpost (при этом нужно будет добавить условие, что событие вызвано впервые - чтобы не было зацикливания) записи должны сортироваться по составному индексу (время-канал)
- при этом изменяться должно поле предыдущей записи.... т. е. берется время новой введенной передачи, и сохраняется в поле "Окончание" предыдущей записи канала.. . Правда придется добавлять дополнительные условия, если это первая или последняя запись.. .
Потом текущее время будет сравниваться с этим новым полем и полем начала.. .
Как-то так.. . Проще ничего не придумывается...
Максим Коос не думал что все так сложно будет.
ну по логике должно быть два времени... время начала передачи и время окончания... вот и сравнивай текущее время. где оно в интервале >Время начала И < время окончания
Максим Коос это и дураку понятно, как это сделать в контексте таблицы, все данные разрозненные.