Главная страница
    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.52 MB
Время: 0.023 c
1-1092905782
snake1977
2004-08-19 12:56
2004.09.05
QuickReport


3-1091035657
Ceval
2004-07-28 21:27
2004.09.05
проблема с удалением записей в dbf


8-1087536320
WondeRu
2004-06-18 09:25
2004.09.05
auxDIBImageLoadA для TBitmap? (glaux.dll)


3-1092299304
Diman
2004-08-12 12:28
2004.09.05
Как RTF-файл открыть в DBGrid?


3-1092292069
happyandry
2004-08-12 10:27
2004.09.05
Как изменить цвет выделенной строки в DBGrid ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский