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

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

Qreports групировка [D7, dBase, FoxPro]


Страницы:   1 2

Peter_cc ©   (2005-06-13 12:26:00) 

Здравствуйте мастера. Использую qreports для построения отчетов. хочу сделать группировку по полю дата. Перетаскиваю на отчет QRGroup и в Expression пишу copy(data,1,10). Все нормально он груперует но вот вопрос как мне сделать так что бы на QRGroup писался заголовок но не 01.01.2001 а допустим если подгруппа называется 01.01.2001 то он пишет ВТОРНИК т.е. я бы сам мог подписывать заголовок группировки .что то типа того (if мой заголовок 01.01.2001 then form1.qrlabel.caption:=’Ля ля’) Надеюсь вы меня поняли и поможете мне….:)


Zacho   (2005-06-13 15:45:00) [1]


> addfield в датасете....т.к. сетевая у меня база (почему
> то мне кажется что я полный бред горожу)

И правда, бред :) Без разницы, сетевая база или локальная. Это делается в клиентском приложении, в компонентах, потомках TDataSet (TTable, TQuery и т.п.)

P.S. Тебе явно необходим какой-нибудь учебник по основам работы с БД в Дельфи.


Silver Alex   (2005-06-13 15:30:00) [2]

2Peter_cc   (13.06.05 15:16) [19]

ну даже не знаю как тебе помочь, наверное кроме тебя самого это никто не сдалает.Разберись почему нельзя добавить, быть такого не может. Ну а если даже и нельзя :) , тогда можешь те же поля прописать  правая клавиша->new field, только Field Type=data.


Peter_cc   (2005-06-13 15:16:00) [3]


> Silver Alex ©   (13.06.05 15:05) [18]
> 2 Peter_cc   (13.06.05 14:52) [17]
>
> мда-а, двойной клик по датасету, правая клавиша->new field
> .описуешь его и не забудь поставить Field Type=calculated.
> Это и будет у тебя вычисляемое поле.Но надо еще добавить
> все поля из запроса -> add field.У датасета пишешь на событие
> TDataSet.OncalcFields.Внимательно там посмотри как.

у меня трабл...ладно пасибо но это способ не для меня...у меня нельзя сделать addfield в датасете....т.к. сетевая у меня база (почему то мне кажется что я полный бред горожу)


Silver Alex   (2005-06-13 15:05:00) [4]

2 Peter_cc   (13.06.05 14:52) [17]

мда-а, двойной клик по датасету, правая клавиша->new field .описуешь его и не забудь поставить Field Type=calculated.
Это и будет у тебя вычисляемое поле.Но надо еще добавить все поля из запроса -> add field.У датасета пишешь на событие TDataSet.OncalcFields.Внимательно там посмотри как.


Peter_cc   (2005-06-13 14:52:00) [5]


> Silver Alex ©   (13.06.05 14:43) [16]
только добавь поле и назначь его едиту
сейчас задам вопрос и боюсь общатся со мной больше никто не будет...:)
а где добовляется вычисляемое поле???? насколько я понял не в самой таблице ведь да???? в запросе?


Silver Alex   (2005-06-13 14:43:00) [6]

2  если еще и поле добавть многое надо переделать....:(

я тебя умаляю :)

все равно ведь не работает у тебя так как надо.Ты попробуй, там все просто.Все как было так и оставь, только добавь поле и назначь его едиту


Peter_cc   (2005-06-13 14:33:00) [7]


> Silver Alex ©   (13.06.05 13:59) [12]
> 2 Peter_cc   (13.06.05 13:47) [10]
>
> это даст то, что ты не будешь парить себе мозги куда же
> вставить строчку  if qrdbtext.caption=01.01.2001 then qrdbtext.caption:=('Ура')
>
> создал вычисляемое поле MainCalc, если ты знаешь что это
> такое.
> на TDataSet.OncalcFields  пишешь
>
> procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
> begin
>   if dataset.FieldByname('data').asDateTime='01.01.2001'
> then   dataset.FieldByname('data').Asstring:='Ура';
> end;
>
> а уже  qrdbtext  указаваешь не datafield=data, а соответственно
>  datafield=MainCalc
>
> только сам уже посмотри чего и с чем надо сравнивать по
> условию

примерно я понял что ты хочешь сказать только вот мне немного трудно будет добавить поле...слишком запутанно у меня тут все и если еще и поле добавть многое надо переделать....:(


Peter_cc   (2005-06-13 14:31:00) [8]


> Anatoly Podgoretsky ©   (13.06.05 13:58) [11]
> qrdbtext не позволит тебе использовать свои значения, он
> их берет только из набора данных. Надо использовать другой
> компонент, не db aware
ладно а если я буду использовать QREXPR и в Expression укажу copy(data,1,10) то на выходе у меня тоже будет получатся 01.01.2001 могу ли я его переделать????(может в expression надо написать условие только как я незнаю)


Silver Alex   (2005-06-13 14:02:00) [9]

поля попутал, вот так конечно

if dataset.FieldByname('data').asDateTime='01.01.2001' then   dataset.FieldByname(' MainCalc').Asstring:='Ура';


Silver Alex   (2005-06-13 13:59:00) [10]

2 Peter_cc   (13.06.05 13:47) [10]

это даст то, что ты не будешь парить себе мозги куда же вставить строчку  if qrdbtext.caption=01.01.2001 then qrdbtext.caption:=('Ура')

создал вычисляемое поле MainCalc, если ты знаешь что это такое.
на TDataSet.OncalcFields  пишешь

procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
begin
  if dataset.FieldByname('data').asDateTime='01.01.2001' then   dataset.FieldByname('data').Asstring:='Ура';
end;

а уже  qrdbtext  указаваешь не datafield=data, а соответственно  datafield=MainCalc

только сам уже посмотри чего и с чем надо сравнивать по условию


Anatoly Podgoretsky   (2005-06-13 13:58:00) [11]

qrdbtext не позволит тебе использовать свои значения, он их берет только из набора данных. Надо использовать другой компонент, не db aware


Peter_cc   (2005-06-13 13:47:00) [12]


> Silver Alex ©   (13.06.05 13:40) [9]
> 2Peter_cc
>
> можно создать вычисляемое поле,  и на отчете отображать
> его
и что мне это даст????? ладно забудем групировку...вот я вывожу записи при помощи qrdbtext у которого я в свойствах указываю datafield=data оно мне выводит все правильно так как есть в базе ...а могу ли я в зависимости то что в базе выводить подругому т.е. опять же if qrdbtext.caption=01.01.2001 then qrdbtext.caption:=('Ура') и куда имменно мне надо вставить эту строчку????? спасибо


Silver Alex   (2005-06-13 13:40:00) [13]

2Peter_cc

можно создать вычисляемое поле,  и на отчете отображать его


Anatoly Podgoretsky   (2005-06-13 13:22:00) [14]

Ну так твой код на первый взгляд правильный. А на второй взгляд на смотреть на твой отчет.


Peter_cc   (2005-06-13 13:10:00) [15]


> Anatoly Podgoretsky ©   (13.06.05 13:06) [5]

а может у вас есть примерчик я был бы очень признателен....:)


Peter_cc   (2005-06-13 13:08:00) [16]


> Anatoly Podgoretsky ©   (13.06.05 13:06) [5]
> Может не там пишешь?
так вот я и незнаю где надо пишу перед itog.QuickRep1.Preview;


Anatoly Podgoretsky   (2005-06-13 13:06:00) [17]

Может не там пишешь?


Peter_cc   (2005-06-13 12:59:00) [18]


> Anatoly Podgoretsky ©   (13.06.05 12:49) [3]
> Улавливать не надо, оно само уловится, когда надо будет
> печатать тогда сразу и присваивай свое значение.

не получается вот смотрите перетаскиваю на qrgroup qrdbtext8 в свойствах указываю datafield  поле data и qrlabal20 потом перед itog.QuickRep1.Preview;
пишу строчку
if itog.QRDBText8.Caption='01.01.2001' then itog.QRLabel20.Caption:='111';
QRLabel20 ничего не присваивается.....


Anatoly Podgoretsky   (2005-06-13 12:49:00) [19]

Улавливать не надо, оно само уловится, когда надо будет печатать тогда сразу и присваивай свое значение.


Peter_cc   (2005-06-13 12:40:00) [20]


> Anatoly Podgoretsky ©   (13.06.05 12:28) [1]
> Ну так и напиши

ну проблема в том что как мне уловить изменения названия групировки т.е. (if мой заголовок 01.01.2001 then form1.qrlabel.caption:=’Ля ля’)где эту строчку писать????


Страницы:   1 2

Наверх

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