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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2012, 19:31   #1
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию запрос по дата/время

Здравствуйте. У меня есть база Access. Цепляюсь через ADO. В базе есть таблица с полем дата/время.Формат Дата/Время:"dd.mm.yyyy hh:mm:ss".
База пишется каждую минуту.
Выполняется следующий sql запрос:


DataModule1.ADOQuerySmena.SQL.Add(' Select DateValue([Дата/Время]) AS [Дата],Hour([Дата/Время]) AS [Время],Round(Avg(MVA_48_table.[Расп_кан,H]),2) AS [Р_кан,H], Round(AVG(MVA_48_table.[В-д 1,Q]),0) AS [В-д1,Q],'
+'Round(AVG(MVA_48_table.[В-д 2,Q]),0) AS [В-д2,Q], Round(AVG(MVA_40_table.[Смес,H]),2) AS [Смес,H], Round(AVG(MVA_40_table.[Смес,Q]),0) AS [Смес,Q],'
+'Round(AVG(MVA_24_table.[РОВ1,Q]),0) AS [РОВ1,Q], Round(AVG(MVA_24_table.[РОВ2,Q]),0) AS [РОВ2,Q], Round(AVG(MVA_24_table.[Ф1,Q]),0) AS [Ф1,Q], Round(AVG(MVA_32_table.[Ф1,H]),2) AS [Ф1,H], Round(AVG(MVA_24_table.[Ф2_Q]),0) AS [Ф2,Q],'
+'Round(AVG(MVA_32_table.[Ф2,H]),2) AS [Ф2,H], Round(AVG(MVA_24_table.[Ф3_Q]),0) AS [Ф3,Q], Round(AVG(MVA_32_table.[Ф3,H]),2) AS [Ф3,H], Round(AVG(MVA_24_table.[Ф4,Q]),0) AS [Ф4,Q], Round(AVG(MVA_32_table.[Ф4,H]),2) AS [Ф4,H],'
+'Round(AVG(MVA_24_table.[Ф5,Q]),0) AS [Ф5,Q],'
+'Round(AVG(MVA_32_table.[Ф5,H]),2) AS [Ф5,H], Round(AVG(MVA_32_table.[Ф6,Q]),0) AS [Ф6,Q], Round(AVG(MVA_32_table.[Ф6,H]),2) AS [Ф6,H], Round(AVG(MVA_16_table.[ГЛ,P]),1) AS [ГЛ,P], Round(AVG(MVA_16_table.[ГЛ,Q]),0) AS [ГЛ,Q],'
+'Round(AVG(MVA_16_table.[ГП,P]),1) AS [ГП,P], Round(AVG(MVA_16_table.[ГП,Q]),0) AS [ГП,Q], Round(AVG(MVA_16_table.[РЧВ1,H]),2) AS [РЧВ1,H], Round(AVG(MVA_16_table.[РЧВ2,H]),2) AS [РЧВ2,H], Round(AVG(MVA_24_table.[РЧВ3,H]),2) AS [РЧВ3,H],'
+'Round(AVG(MVA_8_table.[БНС,P]),1) AS [БНС,P],'
+'Round(AVG(MVA_8_table.[БНС,Q]),0) AS [БНС,Q], Round(AVG(MVA_8_table.[РМЗ,P]),1) AS [РМЗ,P], Round(AVG(MVA_8_table.[РМЗ,Q]),0) AS [РМЗ,Q], Round(AVG(MVA_8_table.[Коллект,P]),1) AS [Кол-т,P]'

+'FROM (((((Mva_Main_Table INNER JOIN MVA_24_table ON (Mva_Main_Table.[ID] = MVA_24_table.[Link24] and MVA_24_table.[РЧВ3,H]<>"0" ))'
+'INNER JOIN MVA_32_table ON Mva_Main_Table.[ID] = MVA_32_table.[Link32]) INNER JOIN MVA_40_table ON (Mva_Main_Table.[ID] = MVA_40_table.[Link40] and MVA_40_table.[Смес,Q]<>"0" and MVA_40_table.[Смес,H]<>"0"))'
+'INNER JOIN MVA_48_table ON (Mva_Main_Table.[ID] = MVA_48_table.[Link48] and MVA_48_table.[В-д 1,Q]<>"0" and MVA_48_table.[В-д 2,Q]<>"0")) INNER JOIN MVA_8_table ON (Mva_Main_Table.[ID] = MVA_8_table.[Link8]'
+' and MVA_8_table.[РМЗ,P]<>"0" and MVA_8_table.[РМЗ,Q]<>"0" and MVA_8_table.[Коллект,P]<>"0" and MVA_8_table.[БНС,P]<>"0")) INNER JOIN MVA_16_table ON (Mva_Main_Table.[ID] = MVA_16_table.[Link16]'
+' and MVA_16_table.[ГЛ,Q]<>"0" and MVA_16_table.[ГЛ,P]<>"0" and MVA_16_table.[ГП,Q]<>"0" and MVA_16_table.[ГП,P]<>"0" and MVA_16_table.[РЧВ1,H]<>"0" and MVA_16_table.[РЧВ2,H]<>"0")'
+'WHERE [Дата/Время]>='''+DBDateTimeEditEh1.Text+'''A ND [Дата/Время]<='''+DBDateTimeEditEh2.Text+'''GRO UP BY DateValue([Дата/Время]),Hour(Mva_Main_Table.[Дата/Время])');

Проблема в том, что когда делаешь запрос, например с 31.01.2012 20:00:00 по 01.02.2012 08:00:00 то запрос ничего не выводит. В чем моя ошибка? Заранее благодарю.
Изображения
Тип файла: jpg Снимок.JPG (59.8 Кб, 120 просмотров)

Последний раз редактировалось jawist; 02.11.2012 в 19:38.
jawist вне форума Ответить с цитированием
Старый 02.11.2012, 19:35   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

а какой из форматов верный:
dd:mm:yyyy hh:mm:ss или 31.01.2012 ?
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 02.11.2012, 19:39   #3
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию

Извиняюсь, ошибся. Формат таков: 31.01.2012 20:00:00
jawist вне форума Ответить с цитированием
Старый 02.11.2012, 19:44   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Лучше сделать параметризированный запрос и не мучаться с форматом даты-времени
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.11.2012, 19:47   #5
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию

Да с форматом все нормально. Это я ошибся при написании сообщения. Просто в течении месяца выборка работает. А при переходе с месяца на месяц нет. Проблема вот в чем.
jawist вне форума Ответить с цитированием
Старый 02.11.2012, 20:17   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Значит данных нет раз не выводит.
И перекинте вы эту простынь в сам аксес, в виде запроса, будет и проще и быстрее. и т.д.
eval вне форума Ответить с цитированием
Старый 02.11.2012, 20:19   #7
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию

В аксесе аналогичная ситуация. Не выводит ничего.Пустой запрос. Я так понимаю запрос анализирует только дату в запросе, а месяц, год он не учитывает. Поэтому в течении месяца все нормально, а при переходе с месяца на месяц, с года на год запрос не работает. Я думаю в этом направлении нужно копать.

Последний раз редактировалось jawist; 02.11.2012 в 20:22.
jawist вне форума Ответить с цитированием
Старый 02.11.2012, 20:30   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Запросу пофик, он ваще не занимается анализом.
Что дали то и съел, дали нормально будет нормально дали ерунду - получили ерунду, и никакой мистики.
eval вне форума Ответить с цитированием
Старый 02.11.2012, 20:32   #9
jawist
 
Регистрация: 09.12.2011
Сообщений: 9
По умолчанию

Тогда как быть? В чем я ошибаюсь?
jawist вне форума Ответить с цитированием
Старый 02.11.2012, 20:37   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте в самом ACCESS усложнить WHERE, выдернув, год, месяц , число и время из даты. Есть же наверно такие функции. Что-нибудь в таком духе
Код:
(Год=2012 AND Месяц=1 AND День=31 AND Время>=20:00:00) OR
(Год=2012 AND Месяц=2 AND День=1 AND Время<=08:00:00
для окончательной убежденности присутствия/отсутствия таких записей
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
дата/время Freek123 C# (си шарп) 2 27.10.2011 09:38
Время и дата Rebelition HTML и CSS 4 17.08.2011 23:05
Дата и время NEoMASTERR Помощь студентам 4 22.12.2010 16:16
Дата и время Spaun Помощь студентам 1 14.06.2010 13:01