Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.02;
Скачать: CL | DM;

Вниз

Возможно ли сделать таким образом - берется дата из поля   Найти похожие ветки 

 
Владий ©   (2003-09-11 12:30) [0]

Date/Time (краткий формат даты), затем значение года (например, 2003) записывается в одно поле, а значение месяца - в другое (причем, желательно, чтоб месяц присался буквами).

Голова моя не смогла справить с нагрузкой и закипела...
Думалось так:

======
procedure Tmain.cxDBDateEdit4PropertiesChange(Sender: TObject);
begin
ADOTable6.Edit;
ADOTable6.FieldByName(SGetY.DataField).AsString:= WordToStr(YearOf(SGotDate.DataBinding.StoredValue));
ADOTable6.Post;
end;
======
но не работает (причем, не ругаетя, а в поле пришет "У|" и все...

Поможите, люди добрыя... Чего делать-то?..


 
Johnmen ©   (2003-09-11 12:41) [1]

Постановка задачи бессмысленна, по-моему...


 
Владий ©   (2003-09-11 12:45) [2]

Не понял фразы по поводу безсмысленности...


 
Reindeer Moss Eater ©   (2003-09-11 12:48) [3]

MyMonth:=FormatDateTime("mmmm",MyDate);
MyYear :=FormatDateTime("YYYY",MyDate);


 
stud ©   (2003-09-11 12:49) [4]

насчет месяц буквами не знаю. смотря где будеш данные готовить. если в приложении- можеш сделать все что хочеш.
если с помощью sql, в ib есть extract(month from date) может в аксесе что-нибудь подобное есть


 
Johnmen ©   (2003-09-11 12:52) [5]

>Владий © (11.09.03 12:45) [2]
>Не понял фразы по поводу безсмысленности...

Каков СМЫСЛ данного действия ?


 
Владий ©   (2003-09-11 13:02) [6]

2 Johnmen: Ну нужно мне для сортировки наглядной вывести...

2 stud: данные готовить - в приложени... Поминаю, что можно - не могу понять как...

2 Все: Я чайник если не полный, то почти - объяснения понимаю только на полных примерах, а не подсказках... =/


 
Anatoly Podgoretsky ©   (2003-09-11 13:03) [7]

У|


 
Johnmen ©   (2003-09-11 13:10) [8]

>Владий ©
>Ну нужно мне для сортировки наглядной вывести...

...:)
Чем не устраивает просто сортировка по датному полю ???


 
sniknik ©   (2003-09-11 13:11) [9]

Johnmen © (11.09.03 12:52) [5]
>>Владий © (11.09.03 12:45) [2]
>>Не понял фразы по поводу безсмысленности...

>Каков СМЫСЛ данного действия ?

можеш тут корни поискать
http://delphimaster.net/view/3-1062588432/


 
MsGuns ©   (2003-09-11 13:21) [10]

Сортировка по названию месяца ?
Август
Апрель
...
Январь

Это что, так надо ?

Если надо в гриде для любимой (молодой, красивой, ласковой) бухгалтерши к дате прикрутить название месяца типа

10.09.03 10 Сентября 2003 г. (Пили пиво с Марусей)
11.09.03 11 Сентября 2003 г. (Годовщина Бен Ладена)

то можно просто в грид встромить лишнюю колонку, которую присобачить к невыводимому полю НД, а в обработчике события On GetText этого поля выеживаться с датой скоко душе (и Марусе) влезет. Зачем для этого эскюэлить и мучить форум - не понятно абсолютно.


 
Владий ©   (2003-09-11 13:30) [11]

Используется ДевЭкспресс. Для наглядности вывода нужно сделать возможность группировки по году и по месяцу (именно поэтому и нужно его выводить "словесно")...

Если бы сам не мучился - и окружающих бы не трепыхал =)


 
MsGuns ©   (2003-09-11 13:44) [12]

Зачем для помесячной (поквартальной и т.д.) группировки надо месяц прописью ???? Убей - не пойму.


 
Владий ©   (2003-09-11 13:51) [13]

В ДевЭкспрессе группировка делается путем выдергивания поля в полосу группировки. Соответсвенно при вормировании отчета в экселе эти данные и пишутся - а вручную менять 1,2 на январь, февраль - не особо хочется...


 
stud ©   (2003-09-11 13:55) [14]

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


 
sniknik ©   (2003-09-11 14:05) [15]

MsGuns © (11.09.03 13:21) [10]
> Сортировка по названию месяца ?
изврат ничуть не хуже других, и без выделенных полей

SELECT * FROM Table ORDER BY
iif(Month(DT) = 9, "Сентябрь",
iif(Month(DT) = 10, "Октябрь",
"Неизвестный какойто месяц"))

DT - поле типа DataTime
если все месяца прописать сортировка будет что нало.


 
Владий ©   (2003-09-11 15:58) [16]

с выводом - понятно, но как вычленить месяц? убрав год и число?
Мне это не понятно...


 
stud ©   (2003-09-11 16:07) [17]

ну если совсем никак - decodedate()


 
Sandman25 ©   (2003-09-11 16:25) [18]

или extract (month from datefield)


 
Владий ©   (2003-09-11 17:01) [19]

Кое с чем разобрался... Сделал так:


SELECT Got.*, Month([Got]![GDate]) AS [Month], Year([Got]![GDate]) AS [Year], Banks.*, Contracts.*
FROM (Banks INNER JOIN Contracts ON Banks.Bank = Contracts.Bank) INNER JOIN Got ON Contracts.NunDog = Got.Contr;


Но вот как [Month] выводить словами?...


 
Sandman25 ©   (2003-09-11 17:16) [20]

У TField есть свойства OnGetText и OnSetText. Обрабатывайте их.


 
DT   (2003-09-11 17:56) [21]

В Access"e можно и как-нибудь так извратиться:
IIf([Mnth]=1,"Jan",IIf([Mnth]=2,"Feb","Другие месяцы")) as StrMonth


 
MsGuns ©   (2003-09-11 18:55) [22]

>Sandman25 © (11.09.03 17:16) [20]
>У TField есть свойства OnGetText и OnSetText. Обрабатывайте их.

Да он, судя по всему, читает только последние посты, не перечитывая то, что было выше. Поэтому ветка становится похожа на сказку про попа и собаку.


 
Владий ©   (2003-09-12 11:18) [23]

Читать-то читаю, только не все понимаю... Например, цто какую-то процедуру нуно на OnSetText прописать - понятно, но как - это выше моего понимания...
Далее - стрктура типа
ORDER BY
iif(Month(DT) = 9, "Сентябрь"),
iif(Month(DT) = 10, "Октябрь");
Ругани не вызывает, но и результата не дает...


 
Sandman25 ©   (2003-09-12 11:36) [24]

>Например, цто какую-то процедуру нуно на OnSetText прописать - понятно, но как - это выше моего понимания...

Смотрите на значение месяца (Sender указывает на поле). Если месяц равен 1, то заменяете Text на "Январь", если 2, то на "Февраль". А лучше вообще массив завести и по индексу сразу название из него брать.


 
Sandman25 ©   (2003-09-12 11:37) [25]

Это я про OnGetText писал. OnSetText - наоборот. Из "Январь" надо будет сделать 1.


 
MsGuns ©   (2003-09-12 11:48) [26]

>Владий © (12.09.03 11:18) [23]
>Читать-то читаю, только не все понимаю... Например, цто какую-то процедуру нуно на OnSetText прописать - понятно, но как - это выше моего понимания...

На компоненте TADOTable дважды кликаешь - открывается редактор филдов (т.е.полей НД - Набора Данных). Ищешь там поле с месяцем, вместо значения которого - цифры надо вывести название месяца. Клацаешь крысом на ентом филде - в окне Object Inspector (левее и ниже окна с формой) открываются 2 закладки : Properties и Events - мышем жмем на вторую. В списке снизу ищем событию OnGetText и на ней дважды "мышкаем". В коде, куда нас кинет Делфа, пишем код в манере:

procedure ADOTable1GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Sender.AsInteger=1 then Text := "Январь";
if Sender.AsInteger=2 then Text := "Февраль";
......
if Sender.AsInteger=12 then Text := "Декабрь";
end;


 
sniknik ©   (2003-09-12 12:51) [27]

> Владий © (12.09.03 11:18) [23]
Далее - стрктура типа
ORDER BY
iif(Month(DT) = 9, "Сентябрь"),
iif(Month(DT) = 10, "Октябрь");
Ругани не вызывает, но и результата не дает...

как это не дает результата? это сортировка по названию. и об этом я писал. (и 2 месяца это мало надо все писать чтобы смысл был, а то по двум сортировка а остальные как попало, ну не бред ли?)
если хочеш чтобы это возвращало вместо цифр надо это в тело запроса вставлять.

MsGuns © (12.09.03 11:48) [26]
case Sender.AsInteger of
.....
лутше бы смотрелся.


 
MsGuns ©   (2003-09-12 13:20) [28]

>sniknik © (12.09.03 12:51) [27]
>case Sender.AsInteger of
.....
лутше бы смотрелся.

Не догадался включить в конструкцию "AsInteger" - тогда компилятор бу знать, что переменная в Case перечислимая ;))


 
sniknik ©   (2003-09-12 14:15) [29]

б%*№ь, только заметил (ответ читал)

> Владий © (12.09.03 11:18) [23]
> ORDER BY
> iif(Month(DT) = 9, "Сентябрь"),
> iif(Month(DT) = 10, "Октябрь");

я не так писал!!!!
сравни
SELECT * FROM Table ORDER BY
iif(Month(DT) = 9, "Сентябрь",
iif(Month(DT) = 10, "Октябрь",
"Неизвестный какойто месяц"))
у меня вложение у тебя набор причем бессмысленный, одно из условий наверняка будет NULL со всеми вытекающими...

p.s. да теперь понятно почему ветка про дни рождения былf такая длинная и кончилась ничем, делать такие правки, и после просто "нет так не работает" без показа кода, а код то уже не тот что давали он уже ваш с вашими глюками.



Страницы: 1 вся ветка

Текущий архив: 2003.10.02;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.015 c
3-3785
Samgin
2003-09-11 12:54
2003.10.02
Record already locked by this session


1-3969
killer
2003-09-20 01:35
2003.10.02
Как в Delphi взять побитовую коньюнкцию?


1-3943
Mild
2003-09-18 13:53
2003.10.02
список классов


14-4097
ctranik
2003-09-14 17:16
2003.10.02
просьба


14-4057
Ihor Osov'yak
2003-09-15 15:06
2003.10.02
Неукротимый варнинг.. Кто-то тормозит..