Components for Delphi and C++ Builder.

Перейти в английский форум
Перейти на EhLib.com
Текущее время: 24 апр 2024, 06:47

Часовой пояс: UTC




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 08 апр 2021, 08:45 
Не в сети

Зарегистрирован: 24 янв 2012, 06:17
Сообщений: 11
Мне нужно обеспечить выбор только месяца и года, причем дата - всегда последний день месяца.
В компоненте TDBDateTimeEditEh у меня установлен EditFormat = MM/YY
Если дата, например, была 31.03.21 (видим 03.21), то при смене месяца на февраля получаем ошибку, поскольку программа пытается сформировать несуществующую дату 31.02.21

В DBGridEH такой проблемы нет - там дата меняется всегда корректно на последний день месяца.
Но нужен именно TDBDateTimeEditEh.

Можно ли это поправить или по крайней мере, подскажите, где я могу выловить и откорректировать дату до появления ошибки!


Вложения:
Picture0001.png
Picture0001.png [ 3.95 KiB | Просмотров: 1304 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 09 апр 2021, 15:53 
Не в сети

Зарегистрирован: 21 дек 2011, 18:48
Сообщений: 1549
Добрый день.

Ошибка происходит когда компонент подключен к полю ДатаСета.
Исправим в следующей сборке.

Для оперативного исправления необходимо корректировать функцию

Код:
function DBCtrlsEh.DateTimeStampToVarValue(DateTimeStamp: TDateTimeStampEh;
....
  if DoEncodeDateTime(dts, ADateTime) then
  begin
    if not VarIsNull(DateTimeVal) then
      DecodeDateTime(DateTimeVal, Y, M, D, H, N, S, MS);
    if dtmp.Year.Present and (dts.Year > 0) then
      Y := dts.Year;
    if dtmp.Month.Present and (dts.Month > 0) then
      M := dts.Month;
    if dtmp.Day.Present and (dts.Day > 0) then
      D := dts.Day;
    if dtmp.Hour.Present and (dts.Hour >= 0) then
      H := dts.Hour;
    if dtmp.Min.Present and (dts.Minute >= 0) then
      N := dts.Minute;
    if dtmp.Sec.Present and (dts.Second >= 0) then
      S := dts.Second;
    // //New Code
    if AutoCorrect then
    begin
      CorrectDate(Y, M, D); //Create CorrectDate for Word type
      CorrectTime(H, N, S);
    end;
    // \\New Code
    DateTimeVal := EncodeDateTimeEh(Y, M, D, H, N, S, MS);
    Result := True;
  end else
...

_________________
Best regards
EhLib support Team


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC


Кто сейчас на форуме

Сейчас этот форум просматривают: tarakan1983 и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB