Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
2 / 2 / 1
Регистрация: 04.08.2012
Сообщений: 20

Выборка записей по текущему месяцу

19.08.2012, 22:35. Показов 2678. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! У меня есть база аксес с одной таблицей в которой есть 7 полей с датами! Мне необходимо сделать sql запрос на выборку записей по текущему месяцу. Проблема в том что при происходит выборка записей по всем годам, а необходим только текущий месяц и год. Вот сам запрос. Заранее спасибо!
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
        datam:=inttostr(myMonth);
        datay:=inttostr(myYEAR);
        generalform.Label3.Caption:=datam+datay;
        datamodule6.ADOQuery1.Close;
        datamodule6.ADOQuery1.SQL.Clear;
        datamodule6.ADOQuery1.SQL.Add('SELECT *');
        datamodule6.ADOQuery1.SQL.Add('FROM abonent');
        datamodule6.ADOQuery1.SQL.Add('WHERE  (MONTH(PoverkaTS)<= :d0) or (MONTH(poverkaPR_1)<= :d1) or (MONTH(PoverkaPR_2)<= :d2) or (MONTH(PoverkaPR_3)<= :d3) or (MONTH(PoverkaPR_4)<= :d4) or (MONTH(PoverkaPT_1)<= :d5) or (MONTH(PoverkaPT_2)<= :d6)');
        //datamodule6.ADOQuery1.SQL.Add('(YEAR(poverkats)<=:d7) or (YEAR(poverkaPR_1)<= :d8) or (YEAR(PoverkaPR_2)<= :d9) or (YEAR(PoverkaPR_3)<= :d10) or (YEAR(PoverkaPR_4)<= :d11) or (YEAR(PoverkaPT_1)<= :d12) or (YEAR(PoverkaPT_2)<= :d13)');
        datamodule6.ADOQuery1.Parameters.ParamByName('d0').Value:=datam;
        datamodule6.ADOQuery1.Parameters.ParamByName('d1').Value:=datam;
        datamodule6.ADOQuery1.Parameters.ParamByName('d2').Value:=datam;
        datamodule6.ADOQuery1.Parameters.ParamByName('d3').Value:=datam;
        datamodule6.ADOQuery1.Parameters.ParamByName('d4').Value:=datam;
        datamodule6.ADOQuery1.Parameters.ParamByName('d5').Value:=datam;
        datamodule6.ADOQuery1.Parameters.ParamByName('d6').Value:=datam;
       // datamodule6.ADOQuery1.SQL.Add('UNION');
        //datamodule6.ADOQuery1.SQL.Add('SELECT *');
        //datamodule6.ADOQuery1.SQL.Add('FROM abonent');
        //datamodule6.ADOQuery1.SQL.Add('where (YEAR(poverkats)<=:d7) or (YEAR(poverkaPR_1)<= :d8) or (YEAR(PoverkaPR_2)<= :d9) or (YEAR(PoverkaPR_3)<= :d10) or (YEAR(PoverkaPR_4)<= :d11) or (YEAR(PoverkaPT_1)<= :d12) or (YEAR(PoverkaPT_2)<= :d13)');
        {datamodule6.ADOQuery1.Parameters.ParamByName('d7').Value:=datay;
        datamodule6.ADOQuery1.Parameters.ParamByName('d8').Value:=datay;
        datamodule6.ADOQuery1.Parameters.ParamByName('d9').Value:=datay;
        datamodule6.ADOQuery1.Parameters.ParamByName('d10').Value:=datay;
        datamodule6.ADOQuery1.Parameters.ParamByName('d11').Value:=datay;
        datamodule6.ADOQuery1.Parameters.ParamByName('d12').Value:=datay;
        datamodule6.ADOQuery1.Parameters.ParamByName('d13').Value:=datay;
        }datamodule6.ADOQuery1.SQL.Add('ORDER BY id ASC');
        datamodule6.ADOQuery1.Open;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.08.2012, 22:35
Ответы с готовыми решениями:

Ввод данных по текущему месяцу
Как в exel сделать, текущий месяц февраль, в ячейку вводятся данные с одного листа, наступает март, с другого.

VBA Excel поиск среди дат по текущему месяцу
Добрый день, уважаемые форумчане! Подкиньте пожалуйста идею как реализовать поиск по текущему месяцу среди значений в столбце с датами....

Linq to Entities Получить все записи из базы данных по текущему месяцу
Мне нужно получить все записи из базы данных по текущему месяцу. Но что-то не очень получается. static void Main(string args) ...

5
 Аватар для albor
504 / 106 / 16
Регистрация: 01.12.2011
Сообщений: 399
19.08.2012, 23:23
Цитата Сообщение от Flakon84 Посмотреть сообщение
Здравствуйте! У меня есть база аксес с одной таблицей в которой есть 7 полей с датами! Мне необходимо сделать sql запрос на выборку записей по текущему месяцу. Проблема в том что при происходит выборка записей по всем годам, а необходим только текущий месяц и год.
Думаю, нужно собрать запрос примерно так. Главное скобки правильно посчитать.
(Зачем там у Вас было <= не понял. Параметр лучше подставлять целого типа).

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT * FROM abonent
WHERE  
(
    (MONTH(PoverkaTS)  = :d0) 
OR (MONTH(poverkaPR_1)= :d1) 
OR MONTH(PoverkaPR_2) = :d2) 
OR (MONTH(PoverkaPR_3)= :d3)
OR (MONTH(PoverkaPR_4)= :d4) 
OR (MONTH(PoverkaPT_1)= :d5) 
OR (MONTH(PoverkaPT_2)= :d6)
)
AND (YEAR(poverkats)   = :d7) 
AND (YEAR(poverkaPR_1)= :d8) 
AND (YEAR(PoverkaPR_2)= :d9) 
AND (YEAR(PoverkaPR_3)= :d10) 
AND (YEAR(PoverkaPR_4)= :d11) 
AND (YEAR(PoverkaPT_1)= :d12) 
AND (YEAR(PoverkaPT_2)= :d13)
Delphi
1
2
3
4
5
6
7
8
9
Parameters.ParamByName('d0').Value:=myMonth;
Parameters.ParamByName('d1').Value:=myMonth;
...
Parameters.ParamByName('d6').Value:=myMonth;
 
Parameters.ParamByName('d7').Value:=MyYear;
Parameters.ParamByName('d8').Value:=MyYear;
...
Parameters.ParamByName('d13').Value:=MyYear;
1
2 / 2 / 1
Регистрация: 04.08.2012
Сообщений: 20
20.08.2012, 01:10  [ТС]
Спасибо за ответ! по Вашему способу все записи отфильтровываются!
(Зачем там у Вас было <= не понял) Мне нужны все записи с полями даты меньше либо равно текущему месяцу.
0
 Аватар для Аватар
5393 / 1465 / 513
Регистрация: 31.05.2012
Сообщений: 5,153
20.08.2012, 08:41
Месяца по OR, а года почему-то по AND по всем полям. Если уж делать, то
T-SQL
1
2
3
WHERE (MONTH(PoverkaTS)<=:d0 AND YEAR(poverkats)=:d7) OR
      (MONTH(poverkaPR_1)<=:d1 AND YEAR(poverkaPR_1)=:d8) OR
      ...
1
2 / 2 / 1
Регистрация: 04.08.2012
Сообщений: 20
20.08.2012, 10:52  [ТС]
Аватар, Спасибо все заработало!
0
2 / 2 / 1
Регистрация: 04.08.2012
Сообщений: 20
08.02.2013, 00:05  [ТС]
Доброго времени суток! При запросе в базе access по текущему месяцу не правильно происходит выборка, остаются даты к примеру 02.11.2012 или 30.12.2013 , как будто 2>11. Может у кого есть мысли?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
procedure TGeneralform.proverkamonth(Sender: TObject);
begin
 
        Generalform.Label3.Caption:=inttostr(month); // выводит 2
        Generalform.Label4.Caption:=inttostr(Year);  // выводит 2013
        //Generalform.Label5.Caption:=(PoverkaTS);
        datamodule6.ADOQuery1.Close;
        datamodule6.ADOQuery1.SQL.Clear;
        datamodule6.ADOQuery1.SQL.Add('SELECT *');
        datamodule6.ADOQuery1.SQL.Add('FROM abonent');
        datamodule6.ADOQuery1.SQL.Add('WHERE (MONTH(PoverkaTS)<= :d0 and YEAR(PoverkaTS)<= :d7)');
        datamodule6.ADOQuery1.SQL.Add('or (MONTH(PoverkaPR_1)<= :d1 and YEAR(PoverkaPR_1)<= :d8)');
        datamodule6.ADOQuery1.SQL.Add('or (MONTH(PoverkaPR_2)<= :d2 and YEAR(PoverkaPR_2)<= :d9)');
        datamodule6.ADOQuery1.SQL.Add('or (MONTH(PoverkaPR_3)<= :d3 and YEAR(PoverkaPR_3)<= :d10)');
        datamodule6.ADOQuery1.SQL.Add('or (MONTH(PoverkaPR_4)<= :d4 and YEAR(PoverkaPR_4)<= :d11)');
        datamodule6.ADOQuery1.SQL.Add('or (MONTH(PoverkaPT_1)<= :d5 and YEAR(PoverkaPT_1)<= :d12)');
        datamodule6.ADOQuery1.SQL.Add('or (MONTH(PoverkaPT_2)<= :d6 and YEAR(PoverkaPT_2)<= :d13)');
        datamodule6.ADOQuery1.Parameters.ParamByName('d0').value:=MONTH;
        datamodule6.ADOQuery1.Parameters.ParamByName('d1').Value:=MONTH;
        datamodule6.ADOQuery1.Parameters.ParamByName('d2').Value:=MONTH;
        datamodule6.ADOQuery1.Parameters.ParamByName('d3').Value:=MONTH;
        datamodule6.ADOQuery1.Parameters.ParamByName('d4').Value:=MONTH;
        datamodule6.ADOQuery1.Parameters.ParamByName('d5').Value:=MONTH;
        datamodule6.ADOQuery1.Parameters.ParamByName('d6').Value:=MONTH;
        datamodule6.ADOQuery1.Parameters.ParamByName('d7').Value:=YEAR;
        datamodule6.ADOQuery1.Parameters.ParamByName('d8').Value:=YEAR;
        datamodule6.ADOQuery1.Parameters.ParamByName('d9').Value:=YEAR;
        datamodule6.ADOQuery1.Parameters.ParamByName('d10').Value:=YEAR;
        datamodule6.ADOQuery1.Parameters.ParamByName('d11').Value:=YEAR;
        datamodule6.ADOQuery1.Parameters.ParamByName('d12').Value:=YEAR;
        datamodule6.ADOQuery1.Parameters.ParamByName('d13').Value:=YEAR;
        datamodule6.ADOQuery1.SQL.Add('ORDER BY id ASC');
        datamodule6.ADOQuery1.Open;
        end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2013, 00:05
Помогаю со студенческими работами здесь

Выборка дат по текущему году
Есть столбец с датами. 07.08.2011 02.02.2010 ... Нужно найти количество тех, которые соотвествуют 2010 году. То есть чего то...

Выборка по месяцу
Есть таблица с общими данными о клиентах: ФИО, Дата рождения, Адрес и др... Хочу сделать форму, в которой будет 12 кнопок с месяцами и по...

MS SQL CE 3.5 выборка по месяцу
Делаю менеджер напоминаний. и столкнулся с такой проблемой: есть у меня таблица А Name -имя друга Dat - день Рождения как мне...

Выборка по месяцу и году из даты
Приветствую! Не могу нагуглить ничего внятного. С sql и ораклом знаком пару дней. Так все работает: SELECT * FROM ИЗДАНИЯ WHERE...

Выборка по месяцу указному в TextBox Access
Уважаемые специалисты Access подскажите пожалуйста как мне правильно реализовать, при выборе месяца в текс боксе и нажатие на кнопку отчёт...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru