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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 18:41   #1
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию Автоматическое "плюсование" к дате

Добрый вечер Господа!
Прошу совета, ибо мои догадки примитивными способами (+,-,*,/) не помогают.
В моей DBGrid располагаются ячейки с датой (Одна ячейка активация, другая закрытие). Цель очень проста при вводе даты в активацию автоматом вносится дата в закрытие только +30 дней, тобишь месяц.
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 23.10.2012, 18:51   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну 30 дней не всегда месяц. 1 февраля и 1 марта - сколько дней между ними? Для увеличения на месяц есть IncMonth. А вторую дату можно сделать вычисляемой и в DataSet.OnCalcField заполнять, можно в DataSet.BeforePost или в Field.OnSetText первой даты присваивать.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.10.2012, 19:01   #3
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Благодарю за быстрый ответ!
Не суть насчёт месяца, сам аргумент 30 дней необходимо. Не понял кой что, куда вставляются команды, в события вероятней всего? Я про IncMonth.
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 23.10.2012, 19:04   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну а куда? Естественно в то событие, которое будет этим заниматься. Для IncMonth дней не нужно, там задается к-во месяцев и дата
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.10.2012, 19:09   #5
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Как правильно написать, что ячейка введена и нажато ок, чтобы выполнить функцию "если"?

Цитата:
if ClientDataSet1.FieldByName('ДатаАкт ивации')=True then
IncMonth(ClientDataSet1.FieldByName ('Датазакрытия')+30)
p.s. Мой вариант не верно, не компилируется
No smoking!

Последний раз редактировалось BukTop2009; 23.10.2012 в 20:04.
BukTop2009 вне форума Ответить с цитированием
Старый 23.10.2012, 20:33   #6
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Я прям напортачил чувствую
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 23.10.2012, 21:08   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да уж, напортачили - это не то слово!

1-х, прочитайте про функцию IncMonth. Она имеет ДВА параметра - первый параметр дата, второй параметр, на СКОЛЬКО МЕСЯЦЕВ увеличивать дату. У Вас же опять откуда-то взялось число 30, да и второго параметра нет совсем.
это раз.

2-х. IncMonth - это функция - она ВОЗВРАЩАЕТ значение.
Теперь Вам вопрос - что Вы хотите с полученным значением (датой на месяц вперёд) сделать?!
Её можно, например, записать в таблицу данных. Можно отобразить в поле (см. "вычисляемые поля" в датасете). Что Вы с ней хотите сделать?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.10.2012, 21:36   #8
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Насчёт первого, там по умолчанию 1 идёт, то что мне нужно, а вот то что я 30 написал, вот тут только потом подумал прежде чем написать.

А далее как и писал, мне в соседнюю ячейку туже дату только +30 дней надо. Пичём автоматов, ввёл в 1 ячейку Ентер нажал и там автоматом отразилась +30 дней. (Тип значения FtDate)
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 23.10.2012, 22:56   #9
BukTop2009
Пользователь
 
Регистрация: 16.06.2011
Сообщений: 55
По умолчанию

Кто нибудь сталкивался с такой задачей? В гугле тоже молчанка просто.
No smoking!
BukTop2009 вне форума Ответить с цитированием
Старый 23.10.2012, 23:24   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

перечитывайте пост #2 до полного просветления...


если просветление до завтра не наступит, напишу маленький пример
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
программа на c++ "определение гороскопа по дате рождения" Dima9876543210 Помощь студентам 0 07.12.2011 00:11
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
Извлечь последнюю (самую "свежую" по дате) запись из таблицы. IGREK C/C++ Базы данных 5 25.03.2011 12:07
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04