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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.09.2009, 08:48   #1
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию Даты

Привет всем. В форме связанной с финансовой отчетностью необходимо чтобы данныевыдавались по месяцам. Как это можно сделать? Раньше использовала стандартные датапикеры. Но заказчик сказал, что нужно просто из выпадающего списка выбирать месяц и год. Как такое можно сделать?
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума
Старый 30.09.2009, 09:47   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

С месяцами так: заполняем ComboBox названиями месяцев и собственно всё. У ComboBox имеется свойство ItemIndex - номер выделенного элемента. Индексация только начинается с нуля, т.е. январь будет под номером 0, а февраль - под номером 1. Так что просто считываете этот самый индекс прибавляете единичку и получаете номер нужного месяца.
С годами примерно так же. Заполняем в цикле допустим от 2000 до 2009 года (Если хочется до текущего года, то что-то вроде YearOf(Today) нужно использовать). Дальше всё так же, как и с месяцами, только к индексу уже не единичку нужно будет прибавлять, а 2000.
Чтобы из отдельных составляющих собрать дату, нужно использовать функцию EncodeDate. Я так понимаю нужен будет диапазон дат: первое число месяца и последнее. Число дней в месяцах разное, потому можно использовать функцию DaysInAMonth. Так же можно просто брать первое число следующего месяца (тут с декабрём только нужно будет разбираться, т.к. будет переход на следующий год)
Код:
var
  year, month: word;
  fromDate, toDate: TDateTime;
begin
  month := MonthComboBox.ItemIndex + 1;
  year := YearComboBox.ItemIndex + 2000;
  fromDate := EncodeDate(year, month, 1); // первое число нужного месяца
  toDate := EncodeDate(year, month, DaysInAMonth(year, month)); // последнее число месяца
  ...
end;
Вот в общем как-то так это всё и будет выглядеть
ЗЫ. Писал здесь, потому мог где-то в коде ошибиться, но принцип в любом случае, думаю, понятен.
pu4koff вне форума
Старый 30.09.2009, 10:18   #3
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

спасибо, большое
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума
Старый 01.10.2009, 17:16   #4
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

var
year, month: word;
fromDate, toDate: TDateTime;
begin

month := ComboBox1.ItemIndex + 1;
year := SpinEdit1.value;
fromDate := EncodeDate(year, month, 1); // первое число нужного месяца
toDate := EncodeDate(year, month,DaysInAMonth(year, month)); // последнее число месяца
DataModule3.IBDataSet9.ParamByName( 'd1').Value:=fromDate;
DataModule3.IBDataSet9.ParamByName( 'd2').Value:=toDate;
DataModule3.IBDataSet9.open;

Выдает ошибку что какой-то аргумент не подходит.
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума
Старый 01.10.2009, 18:14   #5
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

все вопрос решен
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума
Старый 02.10.2009, 07:45   #6
Власов А.С.
Пользователь
 
Регистрация: 04.08.2009
Сообщений: 48
По умолчанию

Sparky так в чем ошибка то была и можно весь ваш код
Власов А.С. вне форума
Старый 02.10.2009, 09:48   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вопрос решен. Закрыто.
I'm learning to live...
Stilet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объеденение даты Alexi Компоненты Delphi 3 27.04.2009 15:32
ограничение даты Alexi Компоненты Delphi 4 21.04.2009 13:09
Формат даты Iskin Microsoft Office Excel 5 16.04.2009 14:49
Даты не даты Nasya Microsoft Office Excel 3 22.08.2007 20:18
вычитание даты zetrix Microsoft Office Excel 3 10.11.2006 06:30