powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / работа с MonthCalendar
26 сообщений из 26, показаны все 2 страниц
работа с MonthCalendar
    #39466881
Хиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, уважаемые гуру ))
Наткнулась на проблему при работе с датами. Много читала, пробовала, но решение так и не найдено.
Итак, суть моей беды: имеется база access в которой есть таблица с расписанием встреч (в ней соответственно есть столбец с датой встречи типа Дата/Время).
На форме есть MonthCalendar и ДБГрид, который отображает подробности встреч.
Задача: пользователь выбирает дату в MonthCalendar и в ДБГрид отображаются только встречи на указанную дату. По умолчанию при активации формы должны отобразится встречи на только текущую дату.

Камень об который запнулась:
Для того чтобы изначально отображались встречи на сегодня вытащила дату из MonthCalendar
MonthCalendar1.Date:=Now;
но она представляет собой не дату 06.06.2017 а число 42892,715099
и как дальше с этим числом сравнивать даты в моей таблице???

Пыталась пойти путем преобразования этого числа и даты из базы в строки.... но тут натолкнулась на несовпадение типов TSting и String

Подскажите как искать записи по датам с использованием MonthCalendar.
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39466891
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хиль42892,715099
TDateTime(42892,715099) и будет дата с временем.
В делфи дата - число с плавающей точкой.
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39466899
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем в запросе нужно использовать параметры и выборку между trunc(SomeDate) и trunc(SomeDate+1).
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39466968
Фотография peter64
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обнули время в календаре.Когда бросаеш на форму в время фиксируется текущим.
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39467495
Хиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ошибка "несоответствие типов string и integer"

datamodule1.QTemp.SQL.Add('Select a.Idzak from Zakaz a where a.dateZ='+FormatDateTime('mm/dd/yyyy',MonthCalendar1.Date))+'');
я уже и с переменными пробовала... ничего путного.

Пыталась просто посмотреть какие значение выдает календарь
s:=trunc(MonthCalendar1.Date); - число 2.65464*e-307
s:=Datetimetostr(trunc(MonthCalendar1.Date)); результат ' '
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39467498
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХильОшибка "несоответствие типов string и integer"

datamodule1.QTemp.SQL.Add('Select a.Idzak from Zakaz a where a.dateZ='+FormatDateTime('mm/dd/yyyy',MonthCalendar1.Date))+'');
я уже и с переменными пробовала... ничего путного.

Пыталась просто посмотреть какие значение выдает календарь
s:=trunc(MonthCalendar1.Date); - число 2.65464*e-307
s:=Datetimetostr(trunc(MonthCalendar1.Date)); результат ' '

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var
 d:TDateTime;
rs:_RecordSet;
begin
 d:=Trunc(MonthCalendar1.Date);
 ADOCommand.CommandText:='Select... where a.dateZ = :dateZ';
 ADOCommand.Parameters.ParamValues['dateZ']:=d;
 rs:=ADOCommand.Execute
  ...
end;
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39467510
Хиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gerasimenko, спасибо за ответ.

Код: pascal
1.
2.
3.
4.
5.
d:=trunc(MonthCalendar1.Date);
datamodule1.QTemp.Close;
   datamodule1.QTemp.SQL.Clear;
    datamodule1.QTemp.SQL.Add('Select a.Idzak from Zakaz a where a.dateZ=dateZ');
            datamodule1.QTemp.Parameters.ParamValues['dateZ']:=d;



ошибка: Qtemt параметр dateZ не найден
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39467513
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХильQtemt параметр dateZ не найден
Где двоеточие перед параметров в запросе?
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39467525
Хиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просмотрела... Заработало) спасибо большое !!!. А-то третий день на этой ерунде залипала.
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39467635
Valdemarius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: pascal
1.
2.
3.
4.
5.
6.
7.
// с RzCalendar так работаю:
=StartOfTheDay(StrToDateTime(FormatDateTime('dd.mm.yyyy hh:mm', Form1.RzCalendar1.Date)));
=EndOfTheDay(StrToDateTime(FormatDateTime('dd.mm.yyyy hh:mm', Form1.RzCalendar1.Date)));

// с RzDateTimeEdit
=StartOfTheDay(StrToDateTime(FormatDateTime('dd.mm.yyyy hh:mm', Form1.RzDateTimeEdit1.Date)));
=EndOfTheDay(StrToDateTime(FormatDateTime('dd.mm.yyyy hh:mm', Form1.RzDateTimeEdit2.Date)));
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468608
Хиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще в тему работы с датами.
Еще есть желание на форме сделать напоминалку о днях рождения сотрудников. С разбега воткнулась в проблему разделения даты на число, месяц и год. Умом то понимаю что нужно сначала число текущей даты сравнить с теми что в базе, а потом месяц. А как это реализовать не поняла. Смотрела исходник в одной программе, но там что-то накрутили так много...
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468654
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хиль,

extract day/month from birthday?
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468689
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХильИ еще в тему работы с датами.
Еще есть желание на форме сделать напоминалку о днях рождения сотрудников. С разбега воткнулась в проблему разделения даты на число, месяц и год. Умом то понимаю что нужно сначала число текущей даты сравнить с теми что в базе, а потом месяц. А как это реализовать не поняла. Смотрела исходник в одной программе, но там что-то накрутили так много...
DecodeDate, EncodeDate для Delphi?
в СУБД свои есть.
Только зачем, не понятненько....
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468728
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хиль,

Я бы в базе, рядом с непосредственно датой рождения, записывал бы еще число - номер дня в году. При этом считать, что все года високосные. Т.е. 1 марта всегда будет 61 днем.

Тогда такое же число вычисляется для текущей даты и сравнивается с тем, что в базе
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468792
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Хиль,

Я бы в базе, рядом с непосредственно датой рождения, записывал бы еще число - номер дня в году. При этом считать, что все года високосные. Т.е. 1 марта всегда будет 61 днем.

Тогда такое же число вычисляется для текущей даты и сравнивается с тем, что в базе
Зачем?
SysUtils.IncYear - для Delphi,
в СУБД свои функции есть
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468799
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerasimenkoЗачем?Для индексации.
GerasimenkoSysUtils.IncYear - для Delphi,И к какой дате ты предлагаешь увеличивать год? Если делать по тупому, то тогда уже DecodeDate + функции СУБД и сравнивать день и месяц. А IncYear (к слову DateUtils ) я сам не понимаю как можно использовать в этой задаче
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468801
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_GerasimenkoЗачем?Для индексации.
GerasimenkoSysUtils.IncYear - для Delphi,И к какой дате ты предлагаешь увеличивать год? Если делать по тупому, то тогда уже DecodeDate + функции СУБД и сравнивать день и месяц. А IncYear (к слову DateUtils ) я сам не понимаю как можно использовать в этой задачеОт даты рождения. Разница между годом рождения и нужным годом.
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468974
Хиль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребят, а что написать то в итоге? Если писать какой день в году, то наверно не будет точно отображаться др. Наверняка косячить будет. Да и кто этим заниматься будет... Задача предполагает запись большого количества людей, если каждому еще считать дни, так это секретарь три месяца будет с этим сидеть.
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39468987
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хиль,

день в году выставляется одним апдейтом за секунды в базе.
База-то вообще какая?
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39469002
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хильребят, а что написать то в итоге? Если писать какой день в году, то наверно не будет точно отображаться др. Наверняка косячить будет. Да и кто этим заниматься будет... Задача предполагает запись большого количества людей, если каждому еще считать дни, так это секретарь три месяца будет с этим сидеть.
Код: sql
1.
2.
3.
4.
5.
SET DATEFORMAT YMD
DECLARE @dHB DATETIME
SET @dHB = '2017-05-16' --DATEFROMPARTS(2017,05,16)
SELECT * FROM myNameTable
 WHERE MONTH(birthday) = MONTH(@dHB) AND DAY(birthday) = DAY(@dHB)

для MSSQL
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39469006
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerasimenkoХильребят, а что написать то в итоге? Если писать какой день в году, то наверно не будет точно отображаться др. Наверняка косячить будет. Да и кто этим заниматься будет... Задача предполагает запись большого количества людей, если каждому еще считать дни, так это секретарь три месяца будет с этим сидеть.
Код: sql
1.
2.
3.
4.
5.
SET DATEFORMAT YMD
DECLARE @dHB DATETIME
SET @dHB = '2017-05-16' --DATEFROMPARTS(2017,05,16)
SELECT * FROM myNameTable
 WHERE MONTH(birthday) = MONTH(@dHB) AND DAY(birthday) = DAY(@dHB)

для MSSQLдля 29 апреля допилить
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39469021
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerasimenkoGerasimenkoпропущено...

Код: sql
1.
2.
3.
4.
5.
SET DATEFORMAT YMD
DECLARE @dHB DATETIME
SET @dHB = '2017-05-16' --DATEFROMPARTS(2017,05,16)
SELECT * FROM myNameTable
 WHERE MONTH(birthday) = MONTH(@dHB) AND DAY(birthday) = DAY(@dHB)

для MSSQLдля 29 апреля допилитьФЕВРАЛЕМ КОНЕЧНО... СОВСЕМ ЗАРАБОТАЛСЯ :)
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39469034
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE @dHB DATETIME
SET @dHB = '20160229' --DATEFROMPARTS(2017,02,29)

SELECT * FROM myNameTable
 WHERE (
        MONTH(birthday) = MONTH(@dHB) AND 
        DAY(birthday) = DAY(@dHB) 
       ) 
       OR
       (
         DAY(@dHB)=29 and MONTH(@dHB) = 2 AND
         DAY(birthday) = 1 AND MONTH(birthday) = 3 AND
         DAY(DATEADD(Month, 1, birthday-1) - DAY(DATEADD(Month, 1, birthday-1))) = 28 
       )

КАК ТО ТАК
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39469041
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenko
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE @dHB DATETIME
SET @dHB = '20160229' --DATEFROMPARTS(2017,02,29)

SELECT * FROM myNameTable
 WHERE (
        MONTH(birthday) = MONTH(@dHB) AND 
        DAY(birthday) = DAY(@dHB) 
       ) 
       OR
       (
         DAY(@dHB)=29 and MONTH(@dHB) = 2 AND
         DAY(birthday) = 1 AND MONTH(birthday) = 3 AND
         DAY(DATEADD(Month, 1, birthday-1) - DAY(DATEADD(Month, 1, birthday-1))) = 28 
       )

КАК ТО ТАК
наоборот надо
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DECLARE @dHB DATETIME
SET @DateSearch = '20160301' 

SELECT * FROM myNameTable
 WHERE (
        MONTH(birthday) = MONTH(@DateSearch) AND 
        DAY(birthday) = DAY(@DateSearch) 
       ) 
       OR
       (
         DAY(birthday)=29 and MONTH(birthday) = 2 AND
         DAY(@DateSearch) = 1 AND MONTH(@DateSearch) = 3 AND
         DAY(DATEADD(Month, 1, @DateSearch-1) - DAY(DATEADD(Month, 1, @DateSearch-1))) = 28 
       )

у меня вроде работает...
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39469053
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хильребят, а что написать то в итоге?
если каждому еще считать дни , так это секретарь три месяца будет с этим сидеть.
Код: pascal
1.
2.
3.
4.
5.
6.
7.
 bi := StrToInt(FormatDateTime('MDD',Birth));     // при внесении в базу

 y := not IsLeapYear(Now);                        //
 t0 := StrToInt(FormatDateTime('MDD',Now + 0));   // раз в день

 if y then if bi = 229 then Dec(bi);              //
 if bi = t0 then Drink();                         // для каждого
...
Рейтинг: 0 / 0
работа с MonthCalendar
    #39469054
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХильЕсли писать какой день в году, то наверно не будет точно отображаться др._Vasilisk_ рядом с непосредственно датой рождения, записывал бы еще число
ХильДа и кто этим заниматься будетВы не поверите - программист

ХильЗадача предполагает запись большого количества людей,Тем более, это единственно адекватное решение

Хильтак это секретарь три месяца будет с этим сидеть.Этот секретарь называется триггер
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / работа с MonthCalendar
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]