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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Организация запроса по нескольким полям и строкам
 
 автор: serzch   (21.03.2010 в 17:20)   личное сообщение
49 Кб.
 
 

Помогите доработать запрос

существует таблица [t] в которой поля "дата", "время", "код кнопки"
создан запрос [t Запрос] в котором добавилось вычисляемое поле "мин" и "название"
поле "мин" (время в минутах)

требуется добавить в поле "прочее"
надпись "начало смены" напротив надписи "начало", как показано на рисунке,

согласно следующего условия

- поле "мин" должно соответствовать интервалу от 10 до 30мин
- в этой же строке в поле "название" обязательно должна быть "кнопка №1"
- так же в поле "название" на следующей строке должно быть "начало"

только в этом случае в новом столбце "прочее" напротив надписи "начало"
должно высветиться "начало смены"

  Ответить  
 
 автор: snipe   (22.03.2010 в 05:10)   личное сообщение
 
 

как-то так

SELECT t.№, t.Дата, t.Время, Format(IIf(nz(DMin("[№]","[t]","[t].[№]>" & [№]),0)=0,"",DLookUp("[время]","[t]","t.№=" & DMin("[№]","[t]","[t].[№]>" & [№]))-[время]),"Short Time") AS Мин, t.[Код Кнопки], t.Название, IIf([название]="начало" And DLookUp("[Название]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))="Кнопка№1" And ([время]-DLookUp("[время]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))>=#00:10# And [время]-DLookUp("[время]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))<=#00:30#),"Начало работы","") AS Прочее
FROM t;

  Ответить  
 
 автор: serzch   (22.03.2010 в 18:51)   личное сообщение
 
 

Добрый день разбираюсь с Вашим ответом
выделенная часть запроса работает как часы

SELECT t.№, t.Дата, t.Время, Format(IIf(nz(DMin("[№]","[t]","[t].[№]>" & [№]),0)=0,"",
DLookUp("[время]","[t]","t.№="
& DMin("[№]","[t]","[t].[№]>" & [№]))-[время]),"Short Time")
AS Мин, t.[Код Кнопки],
Nz(DLookUp("[название кнопки]","кнопки","[к кнопки]='" & [код кнопки] & "'"),"Кнопка не зарегестрирована")
AS название,


IIf([название]="начало" And DLookUp("[Название]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))="Кнопка№1"
And ([время]-DLookUp("[время]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))>=#00:10#
And [время]-DLookUp("[время]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))<=#00:30#),"Начало работы","")
AS Прочее
FROM t;

А вот эта часть ни в какую
пишет в поле "прочее" #ошибка при нажатии мышкой пишет сообщение 5-ть раз

Ошибка синтаксиса (пропущен оператор) в выражении запроса 't.№='

  Ответить  
 
 автор: snipe   (22.03.2010 в 22:27)   личное сообщение
 
 

А почему бы ему так не писать
вы пытаетесь Акс сразу и исправлять и считать в одном запросе заставить
вот у него крышу и рвет

в первой части расчитать поле название (и в тоже время это поле таблицы) а потом опираясь на это поле (чего таблицы или запроса) расчитать поле прочее

  Ответить  
 
 автор: serzch   (22.03.2010 в 23:03)   личное сообщение
 
 

поле "название" создается только в этом запросе, в таблице его нет, поэтому оно принадлежит только запросу

  Ответить  
 
 автор: serzch   (22.03.2010 в 23:17)   личное сообщение
 
 

а можно как то вот этот вариант подредактировать? выделенное работает, остальное никак

SELECT t.№, t.Дата, t.Время,
DateDiff("n",CDate(t.[дата] & " " & t.[время]),
(SELECT TOP 1 CDate(t1.[дата] & " " & t1.[время])
FROM [t]t1
WHERE t1.[№]>t.[№]
ORDER BY t1.[№]
)) AS мин, t.[Код кнопки], Nz(DLookUp("[название кнопки]","кнопки","[к кнопки]='" & [код кнопки] & "'"),"Кнопка не зарегестрирована") AS название
FROM t
ORDER BY t.№;


SELECT [№],[Время],[мин],[название],
FROM [t1 Запрос] as x1 LEFT JOIN [t1 Запрос] as x2 ON x1.[№]=x2.[№]-1

IIf(x1.[Время] Between #12/30/1899 7:0:0# And #12/30/1899 8:30:0# And x1.[мин] Between 10 And 60 And x2.[название] In ("начало"),"НАЧАЛО СМЕНЫ","") AS прочее;

но это все должно быть в одном запросе

  Ответить  
 
 автор: snipe   (23.03.2010 в 03:14)   личное сообщение
 
 

SELECT t.№, t.Дата, t.Время, Format(IIf(nz(DMin("[№]","[t]","[t].[№]>" & [№]),0)=0,"",
DLookUp("[время]","[t]","t.№="
& DMin("[№]","[t]","[t].[№]>" & [№]))-[время]),"Short Time")
AS Мин, t.[Код Кнопки],
Nz(DLookUp("[название кнопки]","кнопки","[к кнопки]='" & [код кнопки] & "'"),"Кнопка не зарегестрирована")
AS название, IIf([Код Кнопки]="006BD590" And DLookUp("[Код Кнопки]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))="00E8D48E"
And (([время]-DLookUp("[время]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))>=#00:10#
And [время]-DLookUp("[время]","[t]","t.№=" & DMax("[№]","[t]","[t].[№]<" & [№]))<=#00:30#) And ([Время] Between #12/30/1899 7:0:0# And #12/30/1899 8:30:0#)),"Начало работы","")
AS Прочее
FROM t;

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