powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Замена даты на слово
24 сообщений из 24, страница 1 из 1
Замена даты на слово
    #39976344
Marina_ph
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер, всем. Делаю базу данных на Акцесс и Delphi, есть поле "дата окончания действия справки", как можно заменить данную дату на слово "бессрочно" если пользователь к примеру введет дату 31/12/2999 ?
Нашла похожее решение для базы на акцесс, но мне это наверное не подойдет.
https://www.sql.ru/forum/750528/datu-zamenit-slovom
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976365
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marina_ph,
я бы дополнительное поле создал. признак бессрочно
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976385
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marina_ph,
А почему, собственно, не пойдет?
Или IIF/CASE в запросе или соотв. формула непосредственно в генераторе отчетов.
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976396
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marina_phкак можно заменить данную дату на слово "бессрочно"

RTFM TField.OnGetText.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976433
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marina_ph,

В поле null занести. Нет даты окончания => бессрочно
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976590
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
+ тоже за null. Дата окончания не указана - значит, её нет. По логике все ОК. Ну а отображение в клиенте через OnGetText.
Еще преимущество - при выборках и фильтрах не потребуется таскать некое "магическое значение", как в случае с 31.12.2999. Ну и можно тешить себя тем, что программа устойчива к переходу на 3000-й год )))
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976754
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fr0sT-Brutal, null обозначает, что даты нет, а не то, что она бессрочно
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976755
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrbnull обозначает, что даты нет, а не то, что она бессрочно

А "даты окончания нет" означает "бессрочно"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976766
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marina_ph,

возможно данную конструкцию с MSSQL можно перевести на Access
Код: sql
1.
CASE ISNULL(DATE_END, 0) WHEN 0 THEN 'БЕССРОЧНО' ELSE CONVERT(CHAR(10), DATE_END, 101) END  AS myFormatDateEnd
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976770
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenkoданную конструкцию с MSSQL можно перевести

Эти странные люди там реально так пишут вместо простого
Код: sql
1.
case when date_end is null then 'бессрочно' else date_end end


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976781
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Gerasimenkoданную конструкцию с MSSQL можно перевести

Эти странные люди там реально так пишут вместо простого
Код: sql
1.
case when date_end is null then 'бессрочно' else date_end end



ну, во первых твой код выдаст ошибку, а во вторых это дело привычки, т.к. null является частным случаем
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976786
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gerasimenkoво первых твой код выдаст ошибку

С чего бы ему выдавать ошибку?
Код: sql
1.
2.
3.
4.
5.
6.
SQL> select case when current_date is null then 'бессрочно' else current_date end
CON> from rdb$database;

CASE
==========
2020-07-06


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976788
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Gerasimenkoво первых твой код выдаст ошибку

С чего бы ему выдавать ошибку?
Код: sql
1.
2.
3.
4.
5.
6.
SQL> select case when current_date is null then 'бессрочно' else current_date end
CON> from rdb$database;

CASE
==========
2020-07-06



Msg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976790
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GerasimenkoMsg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

Ух ты... Назачем оно "from" вместо "to"? Дивный мелкомягкий мир...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976793
Gerasimenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

GerasimenkoMsg 241, Level 16, State 1, Line 1
Conversion failed when converting date and/or time from character string.

Ух ты... Назачем оно "from" вместо "to"? Дивный мелкомягкий мир...

Да... ты бы еще удивился, как я , когда в одной из новых версий CAST и CONVERT начали выдавать не правильные выборки, которые раньше были правильными. Оказалось, что нужно теперь TRY_CAST и TRY_CONVERT использовать во многих случаях (если поле может принимать значение NULL)
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976797
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Странно, что DS не проехался по любимой теме "нехрен заставлять сервер делать работу клиента по представлению данных" ))
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976891
Marina_ph2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за ответы и советы)) но я если честно тупенькая и не понимаю как мне это лучше оформить. Базу данных делаю по учебнику Фленова Библия Делфи, но руководитель курсовой работы решила поиздеваться и добавила некоторые плюшки, типо таких как срок годности и так далее, поэтому и не понимаю как это сделать. Просто это должно быть в случае чего и в отчет выводится и сортировку по этому полю.
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976899
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
Fr0sT-Brutal, null обозначает, что даты нет, а не то, что она бессрочно
Нет. NULL в первую очередь обозначает, что дата неизвестна (а не "её нет", это очень разные вещи).
Ну, а во вторую - то, что задумал архитектор БД.
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976900
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock
Нет. NULL в первую очередь обозначает, что дата неизвестна (а не "её нет", это очень разные вещи).
Ну, а во вторую - то, что задумал архитектор БД.


"Бесконечно" можно представить в БД как:
1) ввести флаг "бесконечно"
2) ввести крайнюю (максимальную дату) типа 31.12.9999 (дополнительные телодвижения для ее заведения, непонятки в разных СУБД с поддержкой этой максимальной даты - мелочи конечно, да и эта крайняя дата никак не говорит, что это бесконечно - скорее весьма отдаленное будущее :) )
3) оговорить в условиях задачи (заложить в архитектуру), что NULL (т.е. дата окончания не указана/неизвестна) - есть эквивалент "длится до тех пор пока дата окончания не указана - (т.е. фактически бесконечно).

Судя со своей колокольни - для меня более предпочтителен 3й вариант.
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976905
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster
YuRock
Нет. NULL в первую очередь обозначает, что дата неизвестна (а не "её нет", это очень разные вещи).
Ну, а во вторую - то, что задумал архитектор БД.


"Бесконечно" можно представить в БД как:
1) ввести флаг "бесконечно"
2) ввести крайнюю (максимальную дату) типа 31.12.9999 (дополнительные телодвижения для ее заведения, непонятки в разных СУБД с поддержкой этой максимальной даты - мелочи конечно, да и эта крайняя дата никак не говорит, что это бесконечно - скорее весьма отдаленное будущее :) )
3) оговорить в условиях задачи (заложить в архитектуру), что NULL (т.е. дата окончания не указана/неизвестна) - есть эквивалент "длится до тех пор пока дата окончания не указана - (т.е. фактически бесконечно).

Судя со своей колокольни - для меня более предпочтителен 3й вариант.

Имхо, самое логичное решение в данном случае. Тем более что оно прекрасно укладывается в общую концепцию. Когда, к примеру, ноль для некоторых свойств (типа Min/MaxValue) означает что пределы не заданы, а значит их нет.
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976986
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock
Нет. NULL в первую очередь обозначает, что дата неизвестна (а не "её нет", это очень разные вещи).
Ну, а во вторую - то, что задумал архитектор БД.

А если принять по умолчанию, что отсутствие даты окончания - это есть бессрочно, то понятия становятся тождественными.
...
Рейтинг: 0 / 0
Замена даты на слово
    #39976996
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cptngrb
Marina_ph,
я бы дополнительное поле создал. признак бессрочно

+100500!
MagicNumbers - даже если это null - это зло!
...
Рейтинг: 0 / 0
Замена даты на слово
    #39977008
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster
2) ввести крайнюю (максимальную дату) типа 31.12.9999 (дополнительные телодвижения для ее заведения, непонятки в разных СУБД с поддержкой этой максимальной даты
На моей текущей работе принят именно такой вариант.
Очень удобно, условие отбора записей для всех исторических (кроме тех, что хранятся срезами на дату) таблиц очень простое:
Код: sql
1.
WHERE start_date <= current_date AND current_date <= end_date

Поля start_date и end_date называются одинаково во всех таблицах, поэтому условие удобно копипастить.
Ну и читабельность запросов облегчает, не нужно всяких COALESCE-ов и т.п.
...
Рейтинг: 0 / 0
Замена даты на слово
    #39977070
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

Да все от задачи зависит, не вопрос...

P.S. Бедные японцы со своими "эрами хризантем" и "эпохами лепестков" )
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Замена даты на слово
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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