Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2016, 11:37   #1
cw82
Пользователь
 
Аватар для cw82
 
Регистрация: 14.10.2010
Сообщений: 52
По умолчанию Отобразить дату/ время

Честно искал в интернетах, но подходящее решение для меня не найдено. В общем заполняю Bill.mdb из текстового файла. Затем отображаю все столбцы с данными в DBGridEh, с помощью ADOQuery (Select * from 111).
Есть поле Data, в нем записаны дата и время как текст 20161006235911. Я хочу чтобы в Гриде было 2016.10.06 23:59:11 а лучше 06.10.2016 23:59:11 . Как это сделать и где? Может это где-то в Гриде можно сделать? Мне не нужно вводить в ручную дату и время и редактировать не нужно, нужно просто смотреть на это... Т.е, Editmask я думаю трогать не нужно ?
cw82 вне форума Ответить с цитированием
Старый 11.11.2016, 11:44   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Можно самому прорисовывать, форматируя как хочется, в любом же гриде есть такие возможности. Не нравится прорисовка - используй событие OnGetText поля датасета для форматирования отображаемого текста. А еще лучше поля даты-времени в таблицах держать в соответствующем формате, а не строковом. На крайний случай и в запросе можно сделать вычисляемое поле с преобразованием типа данных, аналогично такое же можно сделать и на клиенте
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 11.11.2016 в 11:48.
Аватар вне форума Ответить с цитированием
Старый 11.11.2016, 11:57   #3
cw82
Пользователь
 
Аватар для cw82
 
Регистрация: 14.10.2010
Сообщений: 52
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
используй событие OnGetText поля датасета для форматирования отображаемого текста.
Можете подробнее объяснить?
cw82 вне форума Ответить с цитированием
Старый 11.11.2016, 12:07   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Справку открывал по этому событию? Что понял?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.11.2016, 12:21   #5
cw82
Пользователь
 
Аватар для cw82
 
Регистрация: 14.10.2010
Сообщений: 52
По умолчанию

У меня справка не установлена, XE8 , если подскажете как ее можно установить, буду благодарен. А так , пока в гугле смотрю
cw82 вне форума Ответить с цитированием
Старый 11.11.2016, 13:53   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
type
  TForm1 = class(TForm)
...
  private
    procedure MyGetText(Sender: TField; var Text: String; DisplayText: Boolean);
...
  end;

...

procedure TForm1.MyGetText(Sender: TField; var Text: String; DisplayText: Boolean);
var xFormatSettings: TFormatSettings;
    s: String;
begin
  GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT,xFormatSettings);
  xFormatSettings.ShortDateFormat:='yyyymmdd';
  xFormatSettings.ShortTimeFormat:='hhnnss';
  try
    s:=String(Sender.Value);
    s:=Copy(s,1,4)+xFormatSettings.DateSeparator+Copy(s,5,2)+xFormatSettings.DateSeparator+Copy(s,7,2)+' '+
       Copy(s,9,2)+xFormatSettings.TimeSeparator+Copy(s,11,2)+xFormatSettings.TimeSeparator+Copy(s,13,2);
    Text:=FormatDateTime('dd/mm/yyyy hh:nn:ss',StrToDateTime(s,xFormatSettings));
  except
    Text:='блин';
  end;
end;

...


  MyDataSet.FieldByName('Data').OnGetText:=MyGetText;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 11.11.2016 в 13:57.
Аватар вне форума Ответить с цитированием
Старый 11.11.2016, 15:57   #7
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
В общем заполняю Bill.mdb из текстового файла. Затем отображаю все столбцы с данными в DBGridEh, с помощью ADOQuery (Select * from 111).
Есть поле Data, в нем записаны дата и время как текст 20161006235911.
Если тип поля на ваши таблице Date/Time то DBGridEh-ом можно отображать как угодно. Если тип поля НЕ Date/Time то это ошибка проектирование БД . Я не понял что вы ишите в google и что не нашли ?
Изображения
Тип файла: jpg DT_Time.jpg (113.0 Кб, 111 просмотров)

Последний раз редактировалось xxbesoxx; 11.11.2016 в 16:02.
xxbesoxx вне форума Ответить с цитированием
Старый 11.11.2016, 16:01   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

При чем здесь DisplayFormat, если:
Цитата:
Есть поле Data, в нем записаны дата и время как текст 20161006235911
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.11.2016, 16:07   #9
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Цитата:
При чем здесь DisplayFormat, если:
Тогда не причем ! Но зачем хранить в таблице дата "как текст 20161006235911" Скажи Аватар по секрету ! это не глупость ? Вы скажите я некому не скажу
xxbesoxx вне форума Ответить с цитированием
Старый 11.11.2016, 16:12   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Дык выше уже сказал, могу и повториться
Цитата:
А еще лучше поля даты-времени в таблицах держать в соответствующем формате, а не строковом.
Насчет глупости - обычно от не знания, но бывает и по необходимости. Это как база не обязательно должна быть строго нормализована, бывает, что это мешает, а бывает что нормализация это вообще что-то потустороннее, как в 1С например идеология регистров
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 11.11.2016 в 16:16.
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевернуть дату (отобразить задом на перёд). Кардаган Microsoft Office Excel 33 07.07.2015 16:48
Вставить дату и время в ячейку kzld Microsoft Office Excel 5 24.01.2011 18:02
как отобразить на диаграмме время GUSEVV Microsoft Office Access 2 26.08.2009 12:16
DDE как время отобразить Inoko Microsoft Office Excel 9 29.07.2009 16:54
Установить програмно время и дату AleX CODER Общие вопросы Delphi 2 02.01.2009 13:51