Форум: "Базы";
Текущий архив: 2005.07.25;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.012 c