Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как суммировть в запросе время?
 
 автор: bel   (22.10.2007 в 08:18)   личное сообщение
 
 

Как суммировть в запросе время?

  Ответить  
 
 автор: ГлазастыйМышь   (22.10.2007 в 08:46)   личное сообщение
 
 

телепаты в отпуске , т.е. конкретней ставь задачу.
Ну чтоб не получить ответ типа: очень просто или руками

  Ответить  
 
 автор: bel   (22.10.2007 в 08:54)   личное сообщение
 
 

Делаю запрос такой запрос:
SELECT [Информационная записка].ФИО, [Информационная записка].Зап1или2, dhCTimeStr(Sum(dhCMinutes([КолЧас]))) AS КолЧас5
FROM [Информационная записка]
GROUP BY [Информационная записка].ФИО, [Информационная записка].Зап1или2
HAVING ((([Информационная записка].Зап1или2)="1"));

И модуль:
Declare Function GetProfileString Lib "kernel32.dll" Alias "GetProfileStringA" _
(ByVal lpAppName As String, ByVal lpKeyName As String, ByVal lpDefault As String, _
ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Function dhCMinutes(dtmTime As Date) As Long
dhCMinutes = TimeValue(dtmTime) * 24 * 60
End Function

Function dhCTimeStr(lngMinutes As Long) As String
dhCTimeStr = Format(lngMinutes \ 60, "0") & _
GetTimeDelimiter() & Format(lngMinutes Mod 60, "00")
End Function

Private Function GetTimeDelimiter() As String
Const conMaxSize = 10
Dim strBuffer As String
Dim intLen As Integer

strBuffer = Space(conMaxSize)
intLen = GetProfileString("intl", "sTime", "", strBuffer, conMaxSize)
GetTimeDelimiter = Left(strBuffer, intLen)
End Function


И почему-то не работает

  Ответить  
 
 автор: ГлазастыйМышь   (22.10.2007 в 09:03)   личное сообщение
 
 

а зачем такие сложности?
чуть ниже дал ответ на что-то подобное, может подойдет
http://hiprog.com/forum/read.php?id_forum=1&id_theme=2540&page=1

  Ответить  
 
 автор: bel   (22.10.2007 в 09:16)   личное сообщение
 
 

Спасибо, все получилось. Я именно так и сделала

  Ответить  
 
 автор: bel   (26.10.2007 в 09:19)   личное сообщение
 
 

а как время суммировать не в формате 0ч.00м. 00с., а в таком формате 00:00?

  Ответить  
 
 автор: bel   (26.10.2007 в 10:54)   личное сообщение
 
 

Вот такую строчку как переписать, чтоб там в итоге появлялось время в формет 00:00

Variant1: Int(Sum([КолЧас])*24) & "ч. " & Format(Sum([КолЧас])-Int(Sum([КолЧас]));"nn"" м. ""ss"" с.""")

  Ответить  
 
 автор: ГлазастыйМышь   (26.10.2007 в 18:42)   личное сообщение
 
 


Variant1: Int(Sum([КолЧас])*24) & "ч. " & Format(Sum([КолЧас])-Int(Sum([КолЧас]));"nn:ss")

  Ответить  
 
 автор: bel   (29.10.2007 в 10:49)   личное сообщение
 
 

как сделать чтоб было без часов? я ж сказала, в формате 00:00 - краткий формат времени - часы и минуты

  Ответить  
 
 автор: ГлазастыйМышь   (29.10.2007 в 13:36)   личное сообщение
 
 

а если вариант что сумма времени будет суток, как выводить?

ЗЫ. См. хелп по функции Format

  Ответить  
 
 автор: bel   (29.10.2007 в 14:17)   личное сообщение
 
 

мне нужно именно количество часов и минут....хелп смотрела, там не написано как сделать такой формат

  Ответить  
 
 автор: ГлазастыйМышь   (29.10.2007 в 14:31)   личное сообщение
 
 


Variant1: Int(Sum([КолЧас])*24) & ":" & Format(Sum([КолЧас])-Int(Sum([КолЧас]));"nn")

  Ответить  
 
 автор: bel   (31.10.2007 в 09:01)   личное сообщение
34 Кб.
 
 

спасибо, получилось... но в итоговом запросе все-равно не группирует по фамилиям.... помогите пожалуйста! я пишу так:
SELECT qryUnion.ФИО, qryUnion.КЧЛ AS Variant, qryUnion.КЧР AS Variant1, qryUnion.КЧП AS КолЧасО
FROM (select ФИО, [Variant] as [КЧЛ], [Variant1] as КЧР, 0 as [КЧП]
From Объединенный
UNION
Select [ФИО], 0 as [КЧЛ], 0 as [КЧР], КолЧасО as КЧП
From Запрос3) AS qryUnion
GROUP BY qryUnion.ФИО, qryUnion.КЧЛ, qryUnion.КЧР, qryUnion.КЧП;

  Ответить  
 
 автор: ГлазастыйМышь   (31.10.2007 в 10:46)   личное сообщение
 
 

а что за поля qryUnion.КЧЛ, qryUnion.КЧР, qryUnion.КЧП. Если по ним суммирование, то в GROUP BY они не нужны, а в SELECT делать Sum ?
Вот примерчик

SELECT qa2.q2, Format(Sum([ds]),"hh:ss") AS Выражение1
FROM (SELECT qqq.q2, qqq.ds
FROM qqq
WHERE (((qqq.q1)="1"))
union
SELECT qqq.q2, qqq.ds
FROM qqq
WHERE (((qqq.q1)="2"))) AS qa2
GROUP BY qa2.q2;

  Ответить  
 
 автор: bel   (01.11.2007 в 08:34)   личное сообщение
 
 

это не подходит... подскажите пожалуйста как исправить мой запрос

  Ответить  
 
 автор: bel   (01.11.2007 в 08:34)   личное сообщение
 
 

это не подходит... подскажите пожалуйста как исправить мой запрос

  Ответить  
 
 автор: bel   (01.11.2007 в 08:34)   личное сообщение
 
 

это не подходит... подскажите пожалуйста как исправить мой запрос

  Ответить  
 
 автор: ГлазастыйМышь   (01.11.2007 в 09:03)   личное сообщение
 
 

Для того чтобы исправить нужно знать что и как суммировать и по чему делать группировку. Так что полное описание таблиц, полей и подзапросов. И какой ожидаемый результат (да хоть в ворде накидайте). Иначе разговор бессмыслен, т.к. угадывать что же именно нужно нет никакого интереса

  Ответить  
 
 автор: bel   (06.11.2007 в 10:26)   личное сообщение
 
 

Есть таблица "Информационная записка", в ней столбцы ФИО, Зап1или2 и КолЧас. Я делаю Запрос1, где выбираю ФИО, Зап1или2=1, КолЧас (этот столбец сразу суммирую по каждой фамилии).
Далее делаю Запрос2, где выбираю ФИО, Зап1или2=2, КолЧас (этот столбец сразу суммирую по каждой фамилии).
Есть таблица "Отработка/переработка", в ней столбцы ФИО и КолЧасО. Делаю Запрос3, где ФИО и КолЧасО
Далее объединяю Запрос1 и Запрос2 в Запрос "Объединенный"
Далее объединяем Запрос "Объединенный" и Запрос3

Мне подсказали, чтьо лучше объединить 2 запроса - Запрос1 и Запрос2 в такой:

SELECT
[Информационная записка].ФИО, Sum(IIf([Информационная записка]![Зап1или2]=1,[Информационная записка]![КолЧас],0)) AS КолЧасЗап1, Sum(IIf([Информационная записка]![Зап1или2]=2,[Информационная записка]![КолЧас],0)) AS КолЧасЗап2,
Sum(Отработка/переработка.КолЧасО) AS КолЧасовО
FROM Отработка/переработка AS ОП INNER JOIN [Информационная записка] AS ИЗ
ON ОП.ФИО = ИЗ.ФИО
GROUP BY ИЗ.ФИО
но тут ошибка выходит "Ошибка синтаксиса в предложении FROM"

  Ответить  
 
 автор: ГлазастыйМышь   (06.11.2007 в 10:46)   личное сообщение
 
 

тогда уж если делаете синонимы названиям таблиц, то их и используйте. И еще в плане рекомендаций: старайтесь использовать английские названия таблиц и полей (если с английским туго, то можно латиницей)
должно получится что-то вроде

SELECT 
ИЗ.ФИО, Sum(IIf(ИЗ.[Зап1или2]=1,ИЗ.[КолЧас],0)) AS КолЧасЗап1, 
Sum(IIf(ИЗ.[Зап1или2]=2, ИЗ.[КолЧас],0)) AS КолЧасЗап2, 
Sum(ОП.КолЧасО) AS КолЧасовО
FROM 
[Отработка/переработка] AS ОП INNER JOIN [Информационная записка] AS ИЗ 
ON ОП.ФИО = ИЗ.ФИО
GROUP BY ИЗ.ФИО

В принципе, я так думаю, должна быть еще выборка по датам, а то здесь получается за весь период

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList