Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Возможно ли сделать таким образом - берется дата из поля [D6, Access]


Страницы:   1 2

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

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

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

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

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


sniknik   (2003-09-12 14:15:00) [1]

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

> Владий © (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 такая длинная и кончилась ничем, делать такиеправки, и после просто "нет так не работает" без показа кода, а код то уже не тот что давали он уже вашс вашими глюками.


MsGuns   (2003-09-12 13:20:00) [2]

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

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


sniknik   (2003-09-12 12:51:00) [3]

> Владий © (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 11:48:00) [4]

>Владий © (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;


Sandman25   (2003-09-12 11:37:00) [5]

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


Sandman25   (2003-09-12 11:36:00) [6]

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

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


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

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


MsGuns   (2003-09-11 18:55:00) [8]

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

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


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

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


Sandman25   (2003-09-11 17:16:00) [10]

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


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

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


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 16:25:00) [12]

или extract (month from datefield)


stud   (2003-09-11 16:07:00) [13]

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


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

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


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

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

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

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


stud   (2003-09-11 13:55:00) [16]

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


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

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


MsGuns   (2003-09-11 13:44:00) [18]

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


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

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

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


MsGuns   (2003-09-11 13:21:00) [20]

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

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

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

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

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо