![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 06.06.2007
Сообщений: 9
|
![]()
Такой вопрос:
Есть табличка с 2-мя полями (пришел, ушел) типа даты в формате гггг-мм-дд чч:мм:сс:000 Надо вывести допустим с Дата1 по Дата 2 такую информацию: День, Сколько времени проведено за этот день на месте... (причем за день позиций м.б. несколько и не обязательно количество "пришел" = количеству "ушел") Помогите написать запрос... Очень нужно! |
![]() |
![]() |
![]() |
#2 | |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
![]() Цитата:
попробуй использовать процедуры decodeDate(Date: TDateTimer,var Year,Month,Day : Word).... она разбивает DAte на год,месяц и день.... Вместо Date используй запись с датой.... обратная фу-я Encode.... Я думаю, что отсюда нужно отталкиваться.... На выходных подумаю и напишу, если что..времени нет думать..Извини, зай
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
|
![]() |
![]() |
![]() |
#3 | |
Регистрация: 30.11.2006
Сообщений: 3
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Регистрация: 06.06.2007
Сообщений: 9
|
![]()
Да, вытащить из БД и отправить в отчет
|
![]() |
![]() |
![]() |
#5 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
![]()
Опиши нормально структуру по крайней мере этих двух таблиц. Со связями. Лень выдумывать абстрактный пример
|
![]() |
![]() |
![]() |
#6 | |
Регистрация: 06.06.2007
Сообщений: 9
|
![]() Цитата:
Дата1 и Дата2 задаются при формировании отчета, типа "Выберете период.." |
|
![]() |
![]() |
![]() |
#7 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
![]()
Я понимаю, конечно, что это не ответ на твой вопрос в прямом смысле. Но все-таки... А почему бы не использовать вычисляемые поля? Простенько и со вкусом... Боюсь что в одном SQL-запросе такое реализовать не получится и придется писать хранимую процедуру. А я даже не знаю с какой СУБД ты работаешь...
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 06.06.2007
Сообщений: 9
|
![]()
БД SQL 2005, а можно на счет хранимой процедуры поподробней
|
![]() |
![]() |
![]() |
#9 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
![]()
ну , процедура - это такая штука, которая выполняется на сервере... А в клиентскую часть возвращаются параметры которые указаны (out), в свою очередь клиент передает какие-то данные в процедуру(in)
Как я понимаю , тебе предлагают передавать в процедуру свою дату, а в самой процедуре обрабатывать ее... В процедуре есть циклы , условия и т.д... Короче, все , что нужно для обработки данных... Прикольная штука... Применяется для уменьшения трафика в сети и нагрузки на клиентскую часть... Только на сколько я знаю, нужен нормальный ODBC , чтобы поддерживал процедуры.... Просто старые версии не поддреживают....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
|
![]() |
![]() |
![]() |
#10 |
детский тренер
Форумчанин
Регистрация: 08.06.2007
Сообщений: 532
|
![]()
давай я тебе напишу пример своей процедуры ..Простенькой, но по ней можно раздуплиться, что такое процедуры... Эта процедура считает МАКсимум кол-во отгруженного товара со склада.... В качестве входных данных - имя товара, а выход максимум товара:
create procedure find_max_kol(in_tovar varchar(20)) returns(max_kolvo integer) as begin Select Max(kolvo) from rashod where tovar = :in_tovar into :max_kolvo; suspend; // передача данных end; в Query1.sql прописываешь: select * from find_max_kol( ![]() по нажатию кнопки: begin query1.close; qury1.parambyname('param1').value:= table.fieldbyname('Tovar').value; query1.open; end; В твоей ситуации нужно передавать данные Время1(ушел) и Время2(пришел), а в процедуре расчитывать Время3(проведенное) и возвращаешь ее. Например: create procedure find_time(in_time1 time, in_time2 time) returns(time_rab time) as begin time_rab = :in_time1 - in_time2; suspend; // передача данных end; Дбавляешь TstoredProce и Ttable.... и потом по событию: storedProce1.unPrepare; storedProce1.PramByName('in_time2') .value := table1.fieldByname('Дата_входа').va lue; storedProce1.PramByName('in_time1') .value := table1.fieldByname('Дата_выхода').v alue; storedProce1.prepare; storedProce1.execproc; lable1.caption := timeTostr(storedProce1.paramByName( 'time_rab').value);
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Последний раз редактировалось Pitbull; 26.06.2007 в 14:02. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с датой | xDjarx | БД в Delphi | 38 | 02.05.2009 14:21 |
Работа со временем. | ekzi | Общие вопросы C/C++ | 1 | 22.07.2008 15:29 |
Работа с датой | Dunpeal | Общие вопросы Delphi | 5 | 15.05.2008 12:05 |
Работа со временем | joker | Общие вопросы Delphi | 4 | 20.04.2008 15:01 |
массив сохранение информации и манипуляции | oblom | Общие вопросы C/C++ | 19 | 04.02.2008 02:28 |