Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2007, 09:13   #1
Tatyana
 
Регистрация: 06.06.2007
Сообщений: 9
По умолчанию Манипуляции с датой и временем.

Такой вопрос:
Есть табличка с 2-мя полями (пришел, ушел) типа даты в формате гггг-мм-дд чч:мм:сс:000
Надо вывести допустим с Дата1 по Дата 2 такую информацию:
День, Сколько времени проведено за этот день на месте...
(причем за день позиций м.б. несколько и не обязательно количество "пришел" = количеству "ушел")
Помогите написать запрос... Очень нужно!
Tatyana вне форума Ответить с цитированием
Старый 15.06.2007, 17:14   #2
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Tatyana Посмотреть сообщение
Такой вопрос:
Есть табличка с 2-мя полями (пришел, ушел) типа даты в формате гггг-мм-дд чч:мм:сс:000
Надо вывести допустим с Дата1 по Дата 2 такую информацию:
День, Сколько времени проведено за этот день на месте...
(причем за день позиций м.б. несколько и не обязательно количество "пришел" = количеству "ушел")
Помогите написать запрос... Очень нужно!

попробуй использовать процедуры decodeDate(Date: TDateTimer,var Year,Month,Day : Word).... она разбивает DAte на год,месяц и день.... Вместо Date используй запись с датой.... обратная фу-я Encode.... Я думаю, что отсюда нужно отталкиваться.... На выходных подумаю и напишу, если что..времени нет думать..Извини, зай
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 17.06.2007, 11:55   #3
Мохнатик
 
Регистрация: 30.11.2006
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Tatyana Посмотреть сообщение
Такой вопрос:
Есть табличка с 2-мя полями (пришел, ушел) типа даты в формате гггг-мм-дд чч:мм:сс:000
Надо вывести допустим с Дата1 по Дата 2 такую информацию:
День, Сколько времени проведено за этот день на месте...
(причем за день позиций м.б. несколько и не обязательно количество "пришел" = количеству "ушел")
Помогите написать запрос... Очень нужно!
Привет! Тебе нужно выбрать эти записи откуда? Из БД?
Мохнатик вне форума Ответить с цитированием
Старый 23.06.2007, 21:32   #4
Tatyana
 
Регистрация: 06.06.2007
Сообщений: 9
По умолчанию

Да, вытащить из БД и отправить в отчет
Tatyana вне форума Ответить с цитированием
Старый 24.06.2007, 07:54   #5
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Опиши нормально структуру по крайней мере этих двух таблиц. Со связями. Лень выдумывать абстрактный пример
Баламут вне форума Ответить с цитированием
Старый 24.06.2007, 17:07   #6
Tatyana
 
Регистрация: 06.06.2007
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Tatyana Посмотреть сообщение
Такой вопрос:
Есть табличка с 2-мя полями (пришел, ушел) типа даты в формате гггг-мм-дд чч:мм:сс:000!
ну и ID конечно, затем ID пользователя

Цитата:
Сообщение от Tatyana Посмотреть сообщение
Надо вывести допустим с Дата1 по Дата 2 такую информацию:
День, Сколько времени проведено за этот день на месте...
(причем за день позиций м.б. несколько и не обязательно количество "пришел" = количеству "ушел")
Помогите написать запрос... Очень нужно!
Дата1 и Дата2 задаются при формировании отчета, типа "Выберете период.."
Tatyana вне форума Ответить с цитированием
Старый 25.06.2007, 01:45   #7
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Я понимаю, конечно, что это не ответ на твой вопрос в прямом смысле. Но все-таки... А почему бы не использовать вычисляемые поля? Простенько и со вкусом... Боюсь что в одном SQL-запросе такое реализовать не получится и придется писать хранимую процедуру. А я даже не знаю с какой СУБД ты работаешь...
Баламут вне форума Ответить с цитированием
Старый 25.06.2007, 19:40   #8
Tatyana
 
Регистрация: 06.06.2007
Сообщений: 9
По умолчанию

БД SQL 2005, а можно на счет хранимой процедуры поподробней
Tatyana вне форума Ответить с цитированием
Старый 26.06.2007, 10:56   #9
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Tatyana Посмотреть сообщение
БД SQL 2005, а можно на счет хранимой процедуры поподробней
ну , процедура - это такая штука, которая выполняется на сервере... А в клиентскую часть возвращаются параметры которые указаны (out), в свою очередь клиент передает какие-то данные в процедуру(in)
Как я понимаю , тебе предлагают передавать в процедуру свою дату, а в самой процедуре обрабатывать ее... В процедуре есть циклы , условия и т.д... Короче, все , что нужно для обработки данных... Прикольная штука... Применяется для уменьшения трафика в сети и нагрузки на клиентскую часть... Только на сколько я знаю, нужен нормальный ODBC , чтобы поддерживал процедуры.... Просто старые версии не поддреживают....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 26.06.2007, 13:41   #10
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Tatyana Посмотреть сообщение
БД SQL 2005, а можно на счет хранимой процедуры поподробней
давай я тебе напишу пример своей процедуры ..Простенькой, но по ней можно раздуплиться, что такое процедуры... Эта процедура считает МАКсимум кол-во отгруженного товара со склада.... В качестве входных данных - имя товара, а выход максимум товара:

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(aram1);

по нажатию кнопки:
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.
Pitbull вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с датой 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