Array
(
)

Dúvida --gt; Montar SQL e Relatório

Lucianobarreto
   - 24 jan 2006

Bom dia galera, é o seguinte:
Preciso montar um relatório mais ou menos no seguinte layout
#Código

-----------------------------------------------------------------------
Professor - Dia - Horário
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Aluno------|UltChq----| UltPgto--|Presenças
Bla bla bla|----------|06/01/2006|XXXXXXXXXX
Ble ble ble|03/02/2006|----------|X X X X X X X
Bli bli bli|----------|20/12/2005|X X X
Blo blo blo|20/03/2006|----------|XXXXXXXXXXX
-----------------------------------------------------------------------


Tabelas
Alunos --> Codigo, Nome, ...
Professores --> Codigo, Nome, ...
Turmas --> Codigo, Dia, Horario, ...
TurmasAlunos --> CodTurma, CodAluno
Pagamentos --> Codigo, CodAluno, DtPagamento, ...
Cheques --> Codigo, CodAluno, DtaCredito, ...

A ideia do relátorio é a seguinte, a principio uma chamada normal de escola(academia) mesmo, com os itens básicos ali listados. Uma parte do esrosco é que o cliente quer que na coluna ULTCHQ esteja a data do ultimo cheque que aquele aluno deu (DtaCredito(Maior Data)), e na coluna ULTPAGTO esteja a data do ultimo pagamento(DtPagamento(Maior Data)) efetuado pelo aluno(se o aluno trabalha com cheque aparece na coluna do cheque, se o aluno trabalha com pagamento, aparece em pagto ou, se for o caso, nos dois, sempre mostrando o ultimo, ou melhor, com maior data).

Entao as duvidas são, como montar esse SQL, e, menos importante mas, como montar isso no fortes report? Usando um relatorio simples mesmo???

Galera, estou precisando mto, se alguem puder ajudar eu vou agradecer mto...

Abraços


Motta
   - 24 jan 2006

Qual BD ? Suportar Functions ?
Com Funcions ficaria mais simples criar o rel (não sei se seria rápido)
Outra solução (para db´s sem functions) seria uma tabela temporária e uma rotina para monta-la.

Espero ter ajudo, qualquer coisa fale.


Lucianobarreto
   - 24 jan 2006


Citação:
Qual BD ? Suportar Functions ?
Com Funcions ficaria mais simples criar o rel (não sei se seria rápido)
Outra solução (para db´s sem functions) seria uma tabela temporária e uma rotina para monta-la.

Espero ter ajudo, qualquer coisa fale.


Estou usando, FB 1.5 e Ibx...
Sobre criar uma tabela temporaria, eu estaria criando ela, inserindo os dados necessarios(primeiro aluno --> add nome, seleciona maior data - add data, ..., segundo aluno, ´mesmo procedimento´, ...)
seria mais ou menos isso?
Vlw


Motta
   - 24 jan 2006

Sim , mas FB suporta Function e esta creio pode ser usada como uma coluna , seria algo assim (não sei a sintaxe exata)

create or replace function UltCheque (pcodcli number) returns date
begin
select data from cheques where .....;--busca ultimo cheque
Returns dtultcheque;
end;

mais ou menos isto, veja como criar Functions no FB.

Assim o select fica mais simples

select codcli,nome,UltCheque (codcli) ultcheque
from clientes ....


Este mesmo conceito poderia usar para a ultdata de pagamento e a string de presença (não ficou claro)

Uso muito isto para simplificar (e tornar possíveis) relatórios no Oracle.


Lucianobarreto
   - 24 jan 2006


Citação:
Sim , mas FB suporta Function e esta creio pode ser usada como uma coluna , seria algo assim (não sei a sintaxe exata)

create or replace function UltCheque (pcodcli number) returns date
begin
select data from cheques where .....;--busca ultimo cheque
Returns dtultcheque;
end;

mais ou menos isto, veja como criar Functions no FB.

Assim o select fica mais simples

select codcli,nome,UltCheque (codcli) ultcheque
from clientes ....


Este mesmo conceito poderia usar para a ultdata de pagamento e a string de presença (não ficou claro)

Uso muito isto para simplificar (e tornar possíveis) relatórios no Oracle.


Blz, entendi e vou testar aqui.. nao tenho experiencia com functions se eu entender e fizer funcionar legal, caso contrario gostei da ideia de uma tabela temporaria...

vlw