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

Вниз

Очет   Найти похожие ветки 

 
Toshanius   (2004-08-18 18:24) [0]

Нужно сделать не очень сложный отчет, в котором данные берутся не из таблицы, а скажем из массива. Не подскажите, что и как лучше всего использовать. Заранее благодарен.


 
clickmaker ©   (2004-08-18 19:10) [1]

Excel или Word, TExcelApplication и TWordApplication соотвессно. Описываешь шаблон - и вперед и с песней.
А вообще-то, чтоб не париться, можно данные из массива слить во временный датасет в памяти (RxMemoryData из rxlib подойдет) и юзать стандартные отчеты, коих туева хуча


 
jack128 ©   (2004-08-18 19:20) [2]

2 clickmaster
Для того что использовать стандартные генераторы отчетов, можно и не сливать данные во временный датасет ;-)

2 Toshanius  
Для Quick Report см событие OnNeedData..Если решишь использовать Rave, на www.podgoretsky.com вроде была дока на русском..


 
clickmaker ©   (2004-08-18 19:43) [3]


> [2] jack128 ©   (18.08.04 19:20)
> 2 clickmaster
> Для того что использовать стандартные генераторы отчетов,
> можно и не сливать данные во временный датасет ;-)

Да? Енто как? Я имел в виду отчеты типа QuickReport


 
clickmaker ©   (2004-08-18 19:46) [4]


> [2] jack128 ©   (18.08.04 19:20)

А, сорри, прохлопал OnNeedData.
Ну да, вариант, но можно и в датасет слить, так вроде наглядней


 
Anatoly Podgoretsky ©   (2004-08-18 20:05) [5]

clickmaker ©   (18.08.04 19:46) [4]
Зачем :-)


 
clickmaker ©   (2004-08-18 20:14) [6]


> [5] Anatoly Podgoretsky ©   (18.08.04 20:05)
> clickmaker ©   (18.08.04 19:46) [4]
> Зачем :-)

habit is a second nature, как говорят англичане :)


 
YurikGL ©   (2004-08-18 22:01) [7]

Пробовал в свое время пользовать RAVE дык даже не смог нормально границы таблицы сделать. А о том, что мне колонтитул нужен был вообще молчу. Из этого сделал вывод, что, как правило, для формирования серьезных документов, а не чернового списка записей нужно пользовать Ворд/Ексель. Оно гораздо универсальнее и мощьнее.


 
Zacho ©   (2004-08-18 22:13) [8]

YurikGL ©   (18.08.04 22:01) [7]
Согласен, что "универсальнее и мощнее" (кстати, могу ещё напомнить о Formula One), но мне пока что вполне хватало FastReport (в том числе для более-менее сложных отчетов типа "cross-report", "master-detail-subdetail-subsubdetail" и т.п.). Просто, быстро, удобно и красиво :)
Кстати, FR тоже можно и без БД использовать.


 
Anatoly Podgoretsky ©   (2004-08-18 22:16) [9]

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


 
TUser ©   (2004-08-18 22:16) [10]


> для формирования серьезных документов, а не чернового списка
> записей нужно пользовать Ворд/Ексель

Жаль, что QXP/PM нельзя так юзать


 
Zacho ©   (2004-08-18 22:24) [11]

TUser ©   (18.08.04 22:16) [10]
А нафига для отчетов юзать верстальные программы ???
Генераторы отчетов - самое то, специально для этого и делались. А системы верстки - делались малость для другого. Зачем отчет, например, о торговых наценках магазина за месяц делать в PМ ? Чтобы "круто" выглядел ? Чтобы в газете напечатать ? :-)


 
YurikGL ©   (2004-08-18 22:32) [12]


> Zacho ©   (18.08.04 22:24) [11]

В моем случае речь шла о ГОСТированной технической документации с рамками и т.п.


 
Zacho ©   (2004-08-18 22:41) [13]

YurikGL ©   (18.08.04 22:32) [12]
Ну для этого действительно стоит испльзовать что-то более другое, чем генераторы отчетов. Что - не знаю :) не было у меня таких задач. Навскидку могу предложить какой-нибудьCAD :)


 
QuasiLamo ©   (2004-08-19 06:24) [14]

я сделал так. заранее заготовил html страницу , в которой вместо заголока и таблицы были выражения  типа ###title### и ###table###
 st := TStringList.Create;
 struct := TStringList.Create;
//формирование html-страницы
 struct.LoadFromFile("reportstruct.htm"); // грузим скелет страницы с подстановочными символами
//формирование html-кода таблицы
//шапка
 st.Add("<table border=1 cellspacing=0 cellpadding=0 style=""border-collapse:collapse;border:none"">");
 st.Add("<tr>");
 for nIdx := 0 to <количество столбцов> do
 begin
   st.Add("<td width=500 valign=top style=""width:95.75pt;border:solid windowtext 1.0pt;"">");
   st.Add("" + <шапка таблицы>+ "");
   st.Add("</td>");
 end;
 st.Add("</tr>");
//конец шапки
//данные
<цикл по количеству данных(строк)>
     begin
       st.Add("<tr>");
       for nIdx := 0 to adataset.FieldCount - 1 do
       begin
         if (nidx = 0) and (adataset.Fields[nIdx].FieldName = "Дата") then
         begin
           st.Add("<td width=500 valign=top style=""width:95.75pt;border:solid windowtext 1.0pt;"">");
           st.Add(datetostr(adataset.Fields[nIdx].AsDateTime));
           st.Add("</td>");
         end else begin
           st.Add("<td width=500 valign=top style=""width:95.75pt;border:solid windowtext 1.0pt;"">");
           st.Add(adataset.Fields[nIdx].AsString);
           st.Add("</td>");
         end;
       end;
       st.Add("</tr>");
     end;
<конец цикла>
 st.Add("</table>");
//конец данные

//заменяем подстановочные выражения на нужные строки
//заголовок
 struct.Text := StringReplace(struct.Text, "###atitle###", atitle, [rfIgnoreCase, rfReplaceAll]);
//сформированная таблица
 struct.Text := StringReplace(struct.Text, "###atable###", st.Text, [rfIgnoreCase, rfReplaceAll]);
//сохраняем
 struct.SaveToFile("temp.html");
// для печати
// winexec("rundll32.exe C:\WINDOWS\System32\mshtml.dll,PrintHTML "C:\sklad\temp.html"",sw_normal);
//для предварительного просмотра c возможностью печати
 winexec(""C:\Program Files\Internet Explorer\IEXPLORE.EXE" C:\sklad\temp.html", sw_normal);
//высвобождаем память
 struct.Free;
 st.Free;
end;


 
QuasiLamo ©   (2004-08-19 06:27) [15]


>for nIdx := 0 to <количество столбцов> do
> begin
>    st.Add("<td width=500 valign=top
> style=""width:95.75pt;border:solid windowtext
>1.0pt;"">");
>   st.Add("" + <шапка таблицы>+ "");
>   st.Add("</td>");
>  end;

блин теги жирности сожрало. Должно быть так
st.Add("<_b_>" + <шапка таблицы>+ "</_b_>");
(без подчеркиваний)


 
QuasiLamo ©   (2004-08-19 06:30) [16]

блин, поторопился

><цикл по количеству данных(строк)>
>     begin
>       st.Add("<tr>");
>       for nIdx := 0 to adataset.FieldCount - 1 do
>       begin
>          if (nidx = 0) and
>(adataset.Fields[nIdx].FieldName = "Дата") then
>         begin
>            st.Add("<td width=500 valign=top
> style=""width:95.75pt;border:solid windowtext
>1.0pt;"">");
>            
>st.Add(datetostr(adataset.Fields[nIdx].AsDateTime));
>           st.Add("</td>");
>         end else begin
>            st.Add("<td width=500 valign=top
> style=""width:95.75pt;border:solid windowtext
>1.0pt;"">");
>           st.Add(adataset.Fields[nIdx].AsString);
>           st.Add("</td>");
>         end;
>       end;
>       st.Add("</tr>");
>     end;
> <конец цикла>

<цикл по количеству данных(строк)>
    begin
      st.Add("<tr>");
      for nIdx := 0 to <количество столбцов> do
      begin
          st.Add("<td width=500 valign=top style=""width:95.75pt;border:solid windowtext 1.0pt;"">");
          st.Add(<данные>);
          st.Add("</td>");
      end;
      st.Add("</tr>");
    end;
<конец цикла>

><цикл по количеству данных(строк)>
>     begin
>       st.Add("<tr>");
>       for nIdx := 0 to adataset.FieldCount - 1 do
>       begin
>          if (nidx = 0) and
>(adataset.Fields[nIdx].FieldName = "Дата") then
>         begin
>            st.Add("<td width=500 valign=top
> style=""width:95.75pt;border:solid windowtext
>1.0pt;"">");
>            
>st.Add(datetostr(adataset.Fields[nIdx].AsDateTime));
>           st.Add("</td>");
>         end else begin
>            st.Add("<td width=500 valign=top
> style=""width:95.75pt;border:solid windowtext
>1.0pt;"">");
>           st.Add(adataset.Fields[nIdx].AsString);
>           st.Add("</td>");
>         end;
>       end;
>       st.Add("</tr>");
>     end;
> <конец цикла>


 
Toshanius   (2004-08-19 20:42) [17]

Использовал событие OnNeedData. Загнал все данные в отчет. Все работает нормально, вот только нет в жизни счатья. Как - то все коряво...
Ни что так не упорядочивает данные как таблица. Какой возможен вариант, чтобы данные были в табличном виде.
>clickmaker ©   (18.08.04 19:10) [1]

>А вообще-то, чтоб не париться, можно данные из массива слить во >временный датасет в памяти (RxMemoryData из rxlib подойдет) и >юзать стандартные отчеты, коих туева хуча.
Если можно поподробнее, как это сделать?


 
jack128 ©   (2004-08-19 21:04) [18]


> Как - то все коряво...

Не обижайся, но это уж как ТЫ написал, так оно и выглядит.

> Ни что так не упорядочивает данные как таблица
На алголисте полтора дсятка видов сортировки - на любой вкус.


> Если можно поподробнее, как это сделать?
для начала скачать RxLib. Но для D7, а то и для D6(точно не помню) официальной версии не было. Можно посмотреть в сторону JVCL - RX вошла в эту библиотеку..


 
KSergey ©   (2004-08-19 21:13) [19]

> [10] TUser ©   (18.08.04 22:16)
> Жаль, что QXP нельзя так юзать

Кто сказал?
Буквально так - нет.
Но формировать что хочешь (в рамках позволенного данной прогой) - сколько угодно.


 
Toshanius   (2004-08-19 21:22) [20]

>Не обижайся, но это уж как ТЫ написал, так оно и выглядит.
А на что обижаться? Истину глаголишь!
>На алголисте полтора дсятка видов сортировки - на любой вкус.
С сортировками у меня все впорядке, я просто не аккуратно высказался.
Имелось ввиду, что в таблице все данные наглядней. (Упорядочивает всмысле визуально, все красиво и четко.) Это впоследствии очень нужно пользователю приложения.

>для начала скачать RxLib. Но для D7, а то и для D6(точно не >помню) официальной версии не было. Можно посмотреть в сторону >JVCL - RX вошла в эту библиотеку..
У меня уже установлен RxLib для D7.
Что дальше?


 
jack128 ©   (2004-08-19 21:48) [21]


> Что дальше?
э-э-э.. Я обычно делаю так:
1) Открываю демку, для просмотра возможностей компонента
2)Просматриваю список Published свойств/событий, часто уже по названию помятно, зачем нужно каждое конкретное свойство.
3)Жму F1(если хелп к компоненту уже инсталирорван в IDE) или запускаю хелп вручную и читаю...
4) По неясным из хелпа моментам провожу эксперементы или ищу оналошичную ситуацию в демке.
5) Решаю с помощью компонента мою задачу.


> Имелось ввиду, что в таблице все данные наглядней. (Упорядочивает
> всмысле визуально, все красиво и четко.)
вот хоть убей не пойму, как слив данных в датасет способствует красивости отчета.. Может, конечно, в семерке в Qrep добавили, что то особенное для dataset - отчетов, но в пятерке разницы АБСОЛЮТНО никакой.



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

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

Наверх




Память: 0.53 MB
Время: 0.035 c
1-1093157062
Maks Realov
2004-08-22 10:44
2004.09.05
Быстрое выделение памяти и быстрая её очистка


3-1091679619
RDen
2004-08-05 08:20
2004.09.05
не выполняется запрос по полю с названием DATE


14-1092707414
Думкин
2004-08-17 05:50
2004.09.05
С днем рождения! 17 августа


3-1092292238
REA
2004-08-12 10:30
2004.09.05
Буквы большие и маленькие


1-1092773385
RaPToR_1
2004-08-18 00:09
2004.09.05
cmd