Casa
Top.Mail.Ru Yandeks.Metrika
Fórum: "Bases";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

Para baixo

O problema com a compilação de um pedido e sua saída para o QReport Encontre agências semelhantes


Andrey Pogorelov   (2001-12-02 10:49) [0]

Existem tabelas 3
Registro de Animais Table1
id
em
categoria
--------------
id vid categoria
1, 1, 2
2, 1, 2
3, 2, 1
--------------
Espécies Animais Table2
id
nome
--------------
1, Cães
2, Gatos
--------------
Table3 - Categorias de Animais
id
nome
--------------
1, Casa
2, sem abrigo
--------------
É necessário calcular o número de animais na base de dados, o número de espécies domésticas e sem-abrigo e os resultados colocados no QReport
aqueles ficam na forma
Tipo desabrigado sem-teto
Cães 0 2
Gatos 1 0
Total: 3
Ajuda é muito necessária, com antecedência Muito obrigado.



asafr   (2001-12-03 15:14) [1]

Tome TQuery, chame-o, por exemplo, qr_Work. Você escreve um pedido: SELECT VID, CATHEGORY, COUNT (*) AS SUM_ FROM TABLE1 GRUPO POR VID, CATHEGÓRIO - você declara isto qr_Work uma fonte para QReport. Solicitar resultado:
VID CATHEGORY SUM_
1 2 2
2 1 1

Em QReport in DetailBand você faz isso:
----------------------------------------
<- DetailHeader
VID Cathegory Sum_
----------------------------------------
<- Banda de detalhes
[QRLabel1] [QRLabel2] [QRDBText1]
----------------------------------------
QRDBText1 - liga ao campo Sum_

Em Eventos QRLabel1 você escreve: procedimento TForm1.QRLabel1Print (remetente: TObject; var Valor: String); começar if qr_Work.FirldByName ("vid"). AsInteger = 1, em seguida, QRLabel1.Caption: = "Cães" mais QRLabel1.Caption: = "Gatos" fim;

Consequentemente procedimento TForm1.QRLabel2Print (remetente: TObject; var Valor: String); começar se qr_Work.FirldByName ("categoria"). AsInteger = 1 então QRLabel2.Caption: = "Home" else QRLabel2.Caption: = "Sem-teto" fim;


Bem, TOTAL: - pode ser encontrado de várias maneiras. Use QRExpr ou no QRDBText1Print, adicione os valores Sum_ de cada linha. Antes de imprimir, não esqueça de fazer Sum _: = 0 - porque os valores de cada impressão serão adicionados um ao outro.




Dick Gonsales   (2001-12-04 03:14) [2]

Pedido
/ * Aqui, dependendo de como você quer que pareça * /
/ * Variante 1 * /
SELECT T3.name, T2.name, count (T1. *)
FROM T3, T2, T1
WHERE T3.id = T1.categoria e T2.id = T1.vid
GROUP BY T3.name, T2.name
UNIÃO
SELECT T3.name, "Total", count (T1. *)
/ * espaço para que a ordem * funcione corretamente * /
DE T3, T1
WHERE T3.id = T1.categoria
GROUP BY T3.name
ORDER BY T3.name
/ * Category1 View1 qty * /
/ * Category1 View2 qty * /
/ * QX total de Category1 * /
/ * Category2 View1 qty * /
/ * Category1 View2 qty * /
/ * QX total de Category1 * /

/ * Variante 2 * /
SELECT T2.name, T3.name, count (T1. *)
FROM T3, T2, T1
WHERE T3.id = T1.categoria e T2.id = T1.vid
GROUP BY T2.name, T3.name
UNIÃO
SELECT T2.name, "Total", count (T1. *)
DE T2, T1
WHERE T2.id = T1.vid
GROUP BY T2.name
ORDER BY T2.name
/ * View1 Category1 qty * /
/ * View1 Category2 qty * /
/ * View1 Qtd Total * /
/ * View2 Category1 qty * /
/ * View2 Category2 qty * /
/ * View2 Qtd Total * /



Você desliga o pedido no Relatório e pinta os campos,
mas, em princípio, você pode usar
Mestre Delphic para gerar o relatório
usando o SELECT descrito acima e ele fará tudo por você.

A opção que sugeriu o asafr pode ser usada
se você tem poucas categorias e tipos e eles não vão mudar,
porque eles são codificados no código. Não importa aqui.



Страницы: 1 filial inteira

Fórum: "Bases";
Arquivo atual: 2002.01.08;
Download: [xml.tar.bz2];

em cima









Memória: 0.57 MB
Hora: 0.043 c
1-22177
Corte
2001-12-21 09:38
2002.01.08
Por que não quebra


14-22335
Сергей1
2001-11-05 21:44
2002.01.08
entrada de caracteres


1-22087
Serg5
2001-12-19 15:14
2002.01.08
Pessoas, uma pergunta muito fácil! Link para o procedimento, em uma palavra.


1-22023
Delphig
2001-12-13 03:13
2002.01.08
Comigo? fora do tópico. Qual OS Delphi funciona melhor para?


1-22084
Mikhalyov Dmitry
2001-12-19 14:53
2002.01.08
Bloqueio de evento





afrikaans albanês Arabic armênio azerbaijano basco belarusian Bulgarian catalão Chinês simplificado) Chinês tradicional) croata checo dinamarquês Dutch Inglês estoniano filipino Finnish French
Galego georgiano German grego crioulo haitiano hebraico hindi húngaro islandês Indonesian irlandês Italian Japanese Korean letão lituano macedónio Malay maltês Norwegian
persa polonês Portuguese romeno Russa sérvio Slovak esloveno espanhol swahili sueco tailandês turco ucraniano urdu vietnamita galês ídiche bengali bósnio
cebuano esperanto gujarati hausa hmong igbo javanês kannada khmer lao latino maori marata mongol Nepali punjabi somali tâmil telugu yoruba
zulu
Английский francês Alemão Italiano Португальский russo Espanhol