Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
Помогите пожалуйста, создать запрос на выборку записей из таблицы "Заказы" по введённому месяцу...
Например, вводим "Январь" -> выводит все заказы Января.
19 апр 06, 22:11    [2581914]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
select * from какаятотаблица
where какоетополе=1
19 апр 06, 22:15    [2581920]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
А какая функция переводит "Январь" или "Март" в 1 , 3 ???
19 апр 06, 22:22    [2581942]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
А зачем? Неужели юзер будет набирать слово по буквам? А если ошибется в одной букве, что будете делать? Дайте ему комбобокс.
19 апр 06, 22:23    [2581948]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
А как это сделать?
19 апр 06, 22:30    [2581978]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Задайте у комбобокса следующие свойства:

RowSourceType = Value List
RowSource = 1;Январь;2;Февраль;3;Март ... 12;Декабрь
ColumnCount = 2
ColumnWidth = 0;3
BoundColumn = 1
LimitToList = Yes

Тогда юзер будет выбирать слово Январь, а значение комбобокса будет 1.
19 апр 06, 22:37    [2582007]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
Хороший вариант! Спасибо.
Но хотелось бы это сделать в самом QBE запросе в поле "условие отбора" вписать выражение типа betweeen #01.01.2006# and #31.01.2006#, только с указанием месяца в параметре [Введите месяц]...
19 апр 06, 22:47    [2582026]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Будет и юзеру удобнее (меньше стучать пальцами), и программе проще (не надо обрабатывать слова с опечатками), если Вы попросите вводить месяц цифрами.
19 апр 06, 22:49    [2582035]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
Но всё-таки, какое будет выражение, пусть даже месяцы будем указывать в числах???
Очень уж интересно, 3 дня сижу и книжки никакой нет под рукой.
Заранее большое спасибо.
19 апр 06, 23:03    [2582049]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Если в числах, то смотрите мой первый ответ.
19 апр 06, 23:13    [2582074]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
select * from какаятотаблица
where какоетополе=[Ведите номер месяца]???

Если так, то как он будет сравнивать введённый номер с датой текущей просмариваемой записи???
19 апр 06, 23:27    [2582108]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Ну откуда я знаю, какие у Вас есть поля?
19 апр 06, 23:30    [2582119]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
P.S. И почему текущей? Он будет искать по всей таблице.
19 апр 06, 23:31    [2582123]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
Ну просматривать-то он будет последовательно.

У меня был такой вариант:
у поля "ДатаЗаказа" в условии отбора: between [дата] and [дата], но при таком варианте приходится вводить дату 2 раза. Да и достаточно глупо получается.
19 апр 06, 23:39    [2582144]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
AfzaL
У меня был такой вариант:
у поля "ДатаЗаказа" в условии отбора: between [дата] and [дата], но при таком варианте приходится вводить дату 2 раза. Да и достаточно глупо получается.

Если это один и тот же параметр, то он не должен запрашиваться два раза. Но проблема в другом - это ведь дата, а не месяц.

Я так понял, что у Вас нет отдельного поля для месяца. Тогда можно получить месяц из поля с датой:
where month(какоетополе)=[введите месяц]

Но предвижу следующий вопрос. Год Вам разве не важен? Январи всех годов попадут в результат запроса - это то, что Вам нужно?
20 апр 06, 00:05    [2582192]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
SELECT Товары.Наименование, Sum(Договоры.Количество) AS [Необходимое количество]
FROM Товары INNER JOIN Договоры
ON Товары.Код = Договоры.Товар
Where Month([ДатаЗаключения])=[Введите месяц]
GROUP BY Товары.Наименование, Договоры.ДатаЗаключения;

Это в режиме SQL. Выдаёт: Ошибка компиляции. в выражении запроса "Month([ДатаЗаключения])=[Введите месяц]".

А если в режиме Конструктор, то как такое условие записать в поле "ДатаЗаключения" в строке "Условие отбора"???
20 апр 06, 00:25    [2582247]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
AfzaL
Where Month([ДатаЗаключения])=[Введите месяц]
GROUP BY Товары.Наименование, Договоры.ДатаЗаключения;

Можно так:

GROUP BY Товары.Наименование, Договоры.ДатаЗаключения
Having Month([ДатаЗаключения])=[Введите месяц];

AfzaL
А если в режиме Конструктор, то как такое условие записать в поле "ДатаЗаключения" в строке "Условие отбора"???

Вот так:
[Введите месяц]

При этом в первой строке должно быть не просто название поля, а
Month([ДатаЗаключения])
20 апр 06, 00:37    [2582258]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
SELECT Товары.Наименование, Sum(Договоры.Количество) AS [Необходимое количество]
FROM Товары INNER JOIN Договоры ON Товары.Код = Договоры.Товар
GROUP BY Товары.Наименование, Month([ДатаЗаключения])
HAVING (((Month([ДатаЗаключения]))=[Введите месяц]));

Получилось вот так, но всё равно выдаёт: Ошибка компиляции. в выражении "Month([ДатаЗаключения])", что в первом данном вами варианте, что во втором...
20 апр 06, 00:55    [2582274]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
RinatK
Member

Откуда:
Сообщений: 75
А как параметр в запросе сделать комбобоксом?
21 апр 06, 10:12    [2587588]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
bubucha
Member

Откуда:
Сообщений: 5633
автор
А как параметр в запросе сделать комбобоксом?

Никак, только через форму.
21 апр 06, 10:19    [2587623]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
Владимир Саныч, большое вам спасибо!!!
Это наверно у меня что-то с Access было не впорядке :).
Вчера сделал всю базу заново с той же структурой и работает!!!

Запрос сделал как вы сказали: Month([ДатаЗаключения]) в услловии отбора [Номер месяца:]

Только у меня к вам ещё один вопрос: Как округлять числа до целых большую сторону, т.е.
8,2 -> 9
3,0 -> 3 и т.д.
Заранее спасибо!
22 апр 06, 15:06    [2592609]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
AfzaL
8,2 -> 9

-int(-8.2)
22 апр 06, 15:17    [2592620]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
AfzaL
Member

Откуда:
Сообщений: 27
Спасибо! Очень оригинально!
22 апр 06, 15:36    [2592648]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных по введенному месяцу  [new]
Ёжик`
Member

Откуда:
Сообщений: 5992
В запросах с временной выборкой очень редко использую прямой ввод параметров даты, предпочитаю функцию, которая возвращает дату, обьявленную глобально.
Запрос превращается в вид
SELECT * FROM tbl WHERE int(Дата)>=DataMin() and int(Дата)<=DataMax()
Перед выполнением запроса открываю форму (у меня их несколько - на все случаи жизни), где устанавливаю минимальную и максимальную даты.
23 апр 06, 18:51    [2593955]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить