Модераторы: Akina

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Запрос с датами 
:(
    Опции темы
Loser
Дата 17.10.2007, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.10.2007

Репутация: нет
Всего: нет



Здраствуйте.
Помогите пожалуйста написать запрос выводящий даные о покупках за послдний месяц, неделю...
С MS Access раньше не работал, а вот сейчас нужно написать приложение с его использованием.
Нужно ли использовать подзапросы?
PM MAIL   Вверх
Akina
Дата 17.10.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



1) Подзапросы не нужны
2) С датами можно работать как с числами - в частности вычитать. Кроме того, есть целый набор функций работы с датами - DateAdd, DateDiff
3) Никого не интересует, работали Вы раньше с Аксессом или нет. Делайте. Читайте справку, книги, е-курсы... и делайте. Мы поможем устранить огрехи и заставить код работать как надо. Но никто не будет делать ЗА ВАС


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Loser
Дата 17.10.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.10.2007

Репутация: нет
Всего: нет



Покажите хотябы пример работы функции DateDiff...
Без подзапроса вообще не пойму как это сделать.
PM MAIL   Вверх
Akina
Дата 17.10.2007, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Loser @  17.10.2007,  22:16 Найти цитируемый пост)
Покажите хотябы пример работы функции DateDiff...

А чем Вас не удовлетворил пример, приведенный во встроенной справке MS Access?  по-моему, все вполне доходчиво и понятно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kapbepucm
Дата 18.10.2007, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: нет
Всего: 12



В критерии отбора напиши для поля даты >=|начальная дата интересующего периода| And <=|конечная дата интересующего периода|


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 18.10.2007, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(kapbepucm @  18.10.2007,  08:48 Найти цитируемый пост)
В критерии отбора напиши для поля даты >=|начальная дата интересующего периода| And <=|конечная дата интересующего периода|

Вообще-то существует специальное between ... and ...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 18.10.2007, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Если говорить о нормальном приложении, то этот запрос я бы делал так (варианты): 
1. Запрос формировать программно, на основании запроса пользователя. Результат записывал бы в отдельную таблицу.

2. Запрос выбирает все данные. При открытии отчета/формы накладывается фильтр по датам.
PM MAIL WWW ICQ Skype GTalk   Вверх
Loser
Дата 18.10.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.10.2007

Репутация: нет
Всего: нет



Akina, как я понимаю функции ужно указывать в блоке select?

Вот например запрос выбирающий заказы сегодняшние: 
select ... from ... where orders and date=(select distinc now() from orders)

Или  я что то не понимаю?
PM MAIL   Вверх
Akina
Дата 18.10.2007, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Loser @  18.10.2007,  11:44 Найти цитируемый пост)
Или  я что то не понимаю?

Вы просто не знаете, похоже, даже основ T-SQL, поэтому пишете синтаксически неверные конструкции. Потратьте пару часов на изучение, и бОльшая часть вопросов отпадет сама собой.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Loser
Дата 21.10.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 17.10.2007

Репутация: нет
Всего: нет



Сделал при помощи DateAdd.
Можете закрыть
PM MAIL   Вверх
etc
Дата 23.10.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


FCZ
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.2.2005
Где: Красногорск

Репутация: нет
Всего: 3



У меня вот тоже маленькая проблема с датами. Делаю Запрос на выборку

Код

SELECT * FROM остатки WHERE остатки.НАДАТУ = DateValue([23.10.2007]);

И выдает сообщение типа: Недопустимое имя ". Проверьте что оно не содержит не допустимые символы и т.п.
Как только эту дату не пытался коверкать, никак не выходит. Как можно решить это?
PM WWW ICQ   Вверх
Akina
Дата 23.10.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



А с каких это пор литералы стали брать в квадратные скобки??? есссно движок фигеет, пытаясь найти в таблице [остатки] поле по имени [23.10.2007].

Правильно так:
Код

SELECT * FROM [остатки] WHERE [остатки].[НАДАТУ] = DateValue("23.10.2007");




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 23.10.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Формат даты в предложении SQL (MS Access) #mm/dd/yyyy hh:mm:ss#. Дату в строковом формате движок будет преобразовывать к типу дата. Есть так же спец. фукнции для преобразования к типу дата CDate().
PM MAIL WWW ICQ Skype GTalk   Вверх
etc
Дата 23.10.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


FCZ
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.2.2005
Где: Красногорск

Репутация: нет
Всего: 3



Akina, В таком варианте он тоже фигеет.
bopoha, А как можно работать с датой вида 23.10.2007 ? Или как её можно преоброзовать в нужный формат?
PM WWW ICQ   Вверх
Akina
Дата 23.10.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(etc @  23.10.2007,  20:54 Найти цитируемый пост)
В таком варианте он тоже фигеет.

У меня работает - см. аттач. Таблица, запрос в конструкторе и SQL, результат работы запроса.
Может, дело-то не в запросе?

Присоединённый файл ( Кол-во скачиваний: 23 )
Присоединённый файл  1.GIF 23,10 Kb


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 24.10.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Есть маленький нюанс в предложении WHERE запроса SQL MS Access не делает авто преобразований даты вида "dd.mm.yyyy" при сравнении (помойму, исключение Between ... and ...). В предложении SELECT таких проблем нет.

Например, это не прокатит:
Код

WHERE поле_типа_дата = "dd.mm.yyyy"


Нужно так:
Код

WHERE поле_типа_дата = Format("dd.mm.yyyy", "#mm/dd/yyyy#")
или
WHERE поле_типа_дата = CDate("dd.mm.yyyy")


В функцию, которую вы определили сами, можно передавать все что угодно. Для функций, вызываемых из запроса SQL, рекомендую Variant (т.к. в поле может встретится Null). Внутри функции можно обработать разные варинты и преобразования типов.

PM MAIL WWW ICQ Skype GTalk   Вверх
etc
Дата 25.10.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


FCZ
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 23.2.2005
Где: Красногорск

Репутация: нет
Всего: 3



Akina, Спасибо. Сделал новый запрос с таким видом и все вышло нормально. Может до этого знак какой пропустил.
PM WWW ICQ   Вверх
Karam_S
Дата 11.2.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.2.2008
Где: г. Новокузнецк

Репутация: нет
Всего: нет



Помогите начинающему user-у.
В Access имеется таблица с данными в формате даты.
Создал пользовательский запрос, с условием отображения данных соответствующих <#17.02.2008#. Работает нормально и отображает 12 записей.
Вопрос: можно ли это условие указать в другом формате, а именно, чтобы указывалась ссылка на поле даты в другой таблице?
Мне нужно, чтобы в запросе отобразились записи, сделанные до определённой даты.
Например, я попробовал так: 
<[Данные о сессии]![Начало сессии] 
или 
<DateValue([Данные о сессии]![Начало сессии])
Но в результате появилось окно с запросом на параметры, а если нажмешь ОК, то результат в запросе пустой.


PM MAIL ICQ   Вверх
bopoha
Дата 11.2.2008, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Вот так вот просто на таблицу ссылаться нельзя.. Нужно выбрать из нее данные подзапросом.... 
Например, так:
Код

.... WHERE поле_дата1 = (SELECT First(поле_дата2) FROM таблица)

PM MAIL WWW ICQ Skype GTalk   Вверх
Karam_S
Дата 12.2.2008, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.2.2008
Где: г. Новокузнецк

Репутация: нет
Всего: нет



По-маленьку стал вникать в SQL.
Одно из моих условий получилось вот так
Код

... (Проверка.Проверена)<All (SELECT [Данные о сессии]![Начало сессии] FROM [Данные о сессии]))

Спасибо за отклик и подсказку.  smile 
PM MAIL ICQ   Вверх
Zorak
Дата 7.3.2008, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Вот я например перечитал всё, что здесь написано, и не понял как сделать (моя лаба, но никак не получится) : нужно определить сегоднящнюю дату, к ней додать 30 дней и получить новую дату, дальше вивести все дати, которие больше етой новой дати....новую дату я определил с помощю Date (), но вот вопрос, ЧТО мне делать с етой датой smile и как к ней додать 30 ?
P.S. SQL НЕ использовать...


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Akina
Дата 7.3.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Код

Date() + 30



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Kerio
Дата 8.3.2008, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 7.3.2008

Репутация: нет
Всего: нет



Цитата(Zorak @ 7.3.2008,  21:05)
Вот я например перечитал всё, что здесь написано, и не понял как сделать (моя лаба, но никак не получится) : нужно определить сегоднящнюю дату, к ней додать 30 дней и получить новую дату, дальше вивести все дати, которие больше етой новой дати....новую дату я определил с помощю Date (), но вот вопрос, ЧТО мне делать с етой датой smile и как к ней додать 30 ?
P.S. SQL НЕ использовать...

Очень интересно как это можно сделать выборку без SQL. Влюбом случае запрос формируется, будь то ты его набиваешь ручками, или же верстаешь в конструкторе.
Вот смотри сюда, если тебе нужен такой результат, то пользуйся, если нет, то видно я просто не понял твоей проблемы, постарайся поточнее описать.
datequery.jpg
На всякий случай приведу и код:
Код

SELECT dates.key, dates.date FROM dates WHERE (((dates.date)>Date()+30));

PS: когда делал "сегодня" было 07.03.2008 smile


Это сообщение отредактировал(а) Kerio - 8.3.2008, 00:11
PM MAIL   Вверх
Zorak
Дата 9.3.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



Цитата(Kerio @ 8.3.2008,  00:05)
Цитата(Zorak @ 7.3.2008,  21:05)
Вот я например перечитал всё, что здесь написано, и не понял как сделать (моя лаба, но никак не получится) : нужно определить сегоднящнюю дату, к ней додать 30 дней и получить новую дату, дальше вивести все дати, которие больше етой новой дати....новую дату я определил с помощю Date (), но вот вопрос, ЧТО мне делать с етой датой smile и как к ней додать 30 ?
P.S. SQL НЕ использовать...

Очень интересно как это можно сделать выборку без SQL. Влюбом случае запрос формируется, будь то ты его набиваешь ручками, или же верстаешь в конструкторе.
Вот смотри сюда, если тебе нужен такой результат, то пользуйся, если нет, то видно я просто не понял твоей проблемы, постарайся поточнее описать.
datequery.jpg
На всякий случай приведу и код:
Код

SELECT dates.key, dates.date FROM dates WHERE (((dates.date)>Date()+30));

PS: когда делал "сегодня" было 07.03.2008 smile

Ето почти то =), но ето всё моя вина....я не правильно обяснил свою проблему....у мну есть одна таблица и два столбца...так вот, мне нужно прописать в условии, чтоб оно брало дату из одного столбца и приравняло к дате с другого столбца И!! если оно больше на 30 дней, то виводило ету дату....
user posted image
мне нужно, чтоб брало дату с "ДатаВзяття" и приравняло с "ДатаПовернення" И!!! если оно больше на 30 дней то виводило его на екран...

Это сообщение отредактировал(а) Zorak - 9.3.2008, 16:25


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Akina
Дата 10.3.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Код

If (Data2 - Data > 30) Then Procedure1() Else Procedure2()

Код

IIF(Data2 - Data > 30; Value1; Value2)
Хотя правильнее использовать DateDiff() - в обоих случаях


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zorak
Дата 13.3.2008, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



да, всё получилось, спасибо...а знает ли кто какой короткий хороший справочник по всем етим функциям и не только на запросы ??? а то у меня вновь новые проблеми, которие хочю попитаться решить сам...а справочника нормального никак найти не могу....(


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Akina
Дата 24.3.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454




M
Akina
1) Один топик - один вопрос.
2) Язык общения на форуме - русский технический.

Тема закрыта.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Страницы: (2) [Все] 1 2 
Закрытая темаСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0863 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.