powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / отчет из cross-tab
5 сообщений из 5, страница 1 из 1
отчет из cross-tab
    #37086528
Makrosa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как можно программно создать отчет (меняющимся числом столбцов) на основе таблицы созданного с помощью "vfpxtab.prg"
...
Рейтинг: 0 / 0
отчет из cross-tab
    #37086571
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сама идея порочна. Как правило, подобные отчеты долго не живут, поскольку с ними совершенно невозможно работать. Ожидаешь увидеть информацию в одном столбце, а она оказывается в другом. Однако, если хочется помучиться, то есть варианты.

1. CREATE REPORT - Quick Report Команда

2. Создать отчет с максимально возможным числом полей и в процессе вывода просто скрывать лишние.

3. Создать столько отчетов, сколько может быть столбцов. При выводе выбирать нужный.

4. Создать куб OLAP. В среде Excel это называется Pivote Table. На одном листе Excel выводится список "как есть", а на его основе на другом листе Excel создается Pivote Table, который сам "развернет" данные "как надо".

Однако если пользователи хотят "простыню", то это означает, что работать с данными они не умеют "по определению". А значит, от OLAP-куба скорее всего откажутся.
...
Рейтинг: 0 / 0
отчет из cross-tab
    #37086624
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Makrosaкак можно программно создать отчет (меняющимся числом столбцов) на основе таблицы созданного с помощью "vfpxtab.prg"

отчет в ворд_доке в формате НТМ
...
Рейтинг: 0 / 0
отчет из cross-tab
    #37086626
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКА,

пишу для таблицы(сами переделайте для запроса)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
SET ALTE TO c:\M110130.DOC
SET ALTE ON
use tab1
text
<html>
<meta http-equiv=Content-Type content="text/html"; charset="windows-1251">
<style>
p{font-family:arial;font-size:9pt;}
th{font-family:arial;font-size:7pt;}
td{font-family:arial;font-size:8pt;}
td.f1{font-family:arial;font-size:1pt;}
h1{font-family:arial;font-size:14pt;}
h2{font-family:arial;font-size:12pt;}
h3{font-family:arial;font-size:10pt;}
b{color:red;}
i{color:blue;}
</style>
<body>
endtext
?"<h1>","отчет.........","</h1>"
?"<h3>","на ..........",date,"</h3>"
?"<table width=100% border=1 cellspacing=0 cellpaddind=0>"
?"<thead>"
?"<tr>"
j1= 0 
j1k=fcount()
do while j1<j1k
j1=j1+ 1 
??"<th>",field(j1)
enddo
?"</thead>"
do while .not.eof()
?"<tr>"

scat to x1
??"<td align=left>",x1( 1 )
??"<td align=center>",x1( 2 )

j1= 2 
j1k=fcount()
do while j1<j1k
j1=j1+ 1 
??"<td align=right>",x1(j1)
enddo
skip
enddo
?"</table>"
text 
<pre>
текстовые примечания
к
     н         н
                    8        
                                9999 
     гггггггггггггггггггггггггггггг
</pre>
endtext

?"</html>"
set alte to 
set alte off

дополнительно можно
-прописать альбомную
-подписи в виде таблицы без границ, чтобы не равнять столбики
-утверждаю и согласовано в виде таблицы без границ
-итоги более высокого уровня
-дополнительные вычисления
-объединенные ячейки


...
Рейтинг: 0 / 0
отчет из cross-tab
    #37086769
Makrosa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо всем за советы. я выбрал вариант ВладимирМ2. Создать отчет с максимально возможным числом полей и в процессе вывода просто скрывать лишние.
даже отказался от модуля "vfpxtab.prg". сделал cross-tab по своему. для заголовков полей использовал массив имен.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE CURSOR myCross (nm_gr c( 35 ),col1 y,col2 y,col3 y,col4 y,col5 y,col6 y,col7 y,col8 y,col9 y,col10 y,total y)
SELECT nm_rl,key_m FROM tmpst1 GROUP BY key_m,nm_rl ORDER BY key_m,nm_rl INTO ARRAY tmparre1
* число записей в столбцах
PUBLIC clm_nms( 10 ) as String
FOR iarre1= 1  TO  10 
	clm_nms(iarre1)=''
ENDFOR
FOR itb1= 1  TO ALEN(tmparre1, 1 )
	clm_nms(itb1)=tmparre1(itb1, 1 )
	crnmvl5='col'+ALLTRIM(STR(itb1))
	INSERT INTO myCross (nm_gr,&crnmvl5,total);
		SELECT nm_gr,tanxa &crnmvl5,tanxa total FROM tmpst1;
		WHERE key_m=tmparre1(itb1, 2 )
ENDFOR

SELECT nm_gr,SUM(col1) col1,SUM(col2) col2,SUM(col3) col3,SUM(col4) col4,SUM(col5) col5,SUM(col6) col6,;
	SUM(col7) col7,SUM(col8) col8,SUM(col9) col9,SUM(col10) col10,SUM(total) total FROM myCross;
	GROUP BY nm_gr;
	ORDER BY nm_gr;
	INTO TABLE myCross1
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / отчет из cross-tab
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]