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

Вниз

Qreports групировка   Найти похожие ветки 

 
Peter_cc   (2005-06-13 12:26) [0]

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


 
Anatoly Podgoretsky ©   (2005-06-13 12:28) [1]

Ну так и напиши


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


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

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


 
Anatoly Podgoretsky ©   (2005-06-13 12:49) [3]

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


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


> 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 13:06) [5]

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


 
Peter_cc   (2005-06-13 13:08) [6]


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


 
Peter_cc   (2005-06-13 13:10) [7]


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

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


 
Anatoly Podgoretsky ©   (2005-06-13 13:22) [8]

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


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

2Peter_cc

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


 
Peter_cc   (2005-06-13 13:47) [10]


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


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

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


 
Silver Alex ©   (2005-06-13 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

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


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

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

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


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


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


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


> 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
>
> только сам уже посмотри чего и с чем надо сравнивать по
> условию

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


 
Silver Alex ©   (2005-06-13 14:43) [16]

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

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

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


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


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


 
Silver Alex ©   (2005-06-13 15:05) [18]

2 Peter_cc   (13.06.05 14:52) [17]

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


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


> 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:30) [20]

2Peter_cc   (13.06.05 15:16) [19]

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


 
Zacho ©   (2005-06-13 15:45) [21]


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

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

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



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

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

Наверх




Память: 0.52 MB
Время: 0.037 c
6-1113467680
loxx
2005-04-14 12:34
2005.07.25
Как отключить Internet


1-1120587319
АлексейС
2005-07-05 22:15
2005.07.25
Как оперировать данными интернет сайта ?


1-1120500364
alexa
2005-07-04 22:06
2005.07.25
Копии форм


14-1120076932
nosochek
2005-06-30 00:28
2005.07.25
программа постановки аккордов


1-1120679021
Vampirchik
2005-07-06 23:43
2005.07.25
ошибка при инициализации приложения (0xc0000135)