![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Qreports групировка [D7, dBase, FoxPro]
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:=’Ля ля’)где эту строчку писать????