GARANTIR DESCONTO

Fórum Ata de Resultados #354825

05/03/2008

0

Nobres Colegas,

Venho mais uma vez pedir a ajuda dos nobres colegas para poder resolver uma dúvida que me ocorre:

Tenho um sistema em paradox para administração escolar rodando, estou precisando gerar a ata de resultados finais para o mesmo, porém, estou com um problema que ainda não consegui resolver.

Tenho uma tabela onde ficam registradas todas as informações de notas e matérias do alunos.

Ex.:

Nome Matéria Nota
---------------------------------
Maria da silva Portugues 10
Maria da Silva Matemática 08
Maria da Silva Inglês 09
Maria da Silva Física 08

e assim por diante com todos os alunos da turma. Se existirem 10 matérias o nome do aluno se repete as mesmas 10 vezes.

Como faria para gerar uma segunda tabela ou outra maneira de poder gerar ata de resultados finais com o tipo de tabela que possuo?

Nesta sistema estou utilizando Delphi 7, Paradox e FortesReport, mas a dica poderia ser também em QR se caso fosse mais prático.

Desde já agradeço a ajuda.

Abraços.

Ralp Alves Bezerra


Ralp

Ralp

Responder

Posts

05/03/2008

Ralp

up


Responder

Gostei + 0

05/03/2008

Ferreia2

Ralp explica melhor o que é gerar uma ´Ata de Resultado´?
o que vc precisa que seja impresso?


Responder

Gostei + 0

05/03/2008

Ralp

Em minha tabela tenho os dados dispostos desta maneira (com o máximo de 10 disciplinas por aluno):

Nome Materia Nota
--------------- ----------- -----
Maria da silva Portugues 10
Maria da Silva Matemática 08
Maria da Silva Inglês 09
Maria da Silva Física 08

Porém, para gerar a ata de resultados finais da escola preciso que os dados fiquem desta forma

Maria da silva Portugues 10 | Matemática 08 | Inglês 09 | Física 08 e assim por diante.

Se puderem me ajudar lhe ficarei muito grato.

Ralp Alves


Responder

Gostei + 0

05/03/2008

Ferreia2

Eu nunca fiz isso, mas a solução para mim seria criar uma tabela temporária e gravar os dados conforme vc quer, acabou a impressão exclui a tabela


Responder

Gostei + 0

05/03/2008

Ralp

Eis questão, como faria para criar esta tabela temporária?

Abraços.

Ralp Alves


Responder

Gostei + 0

05/03/2008

Ferreia2

Seguinte:
Na Coloca um componente ClientDataSet da Paleta DataAccess
Dê dois Cliques nele vai abrir o fields editor, ai clica com o botão direito e cria os campos que vc quer

Pronto isso já é uma tabela em memória, para adicionar os dados ou imprimir vc trabalha como se fosse uma tabela.

Acabou de imprimir vc executa este comando ClientDataSet1.EmptyDataSet


Responder

Gostei + 0

05/03/2008

Ralp

Vou testar e lhe dou um retorno. Desde já muito obrigado por sua boa vontade.


Responder

Gostei + 0

05/03/2008

Hall 9000

A solução não é das melhores, pois pelo jeito faltou normalizar algumas tabelas do seu banco de dados, mas, enfim, agora é resolver na gambiarra mesmo.
Faça como o FerreiA2 disse, coloque clientdataset (cdsAta) , crie os campos COD_ALUNO, NOME_ALUNO, NOTA_MATEMATICA, NOTA_PORTUGUES, NOTA_INGLES... enfim, todas as matéria possíveis.


Partindo do presuposto que vc já tenha uma query que retorna os dados assim:

MARIA DA SILVA PORTUGUES 8
MARIA DA SILVA INGLES 5
MARIA DA SILVA MATEMÁTICA 8


Crie uma procedure assim:

procedure TForm1.GerarAta;
var x: integer; pCodALuno: integer;
NomeUltimoAluno: string;
begin
while not suaQuery.eof do
begin
if cdsAta.State = dsBrowse then
cdsAta.Insert;
if (suaQuery.RecNo = 1) or (pCodAluno = suaQuery.FieldByName(´COD_ALUNO´).AsInteger) then
begin
pcodAluno:= suaQuery.FieldByName(´COD_ALUNO´).AsInteger;

NomeUltimoAluno:= suaQuery.FieldByName(´NOME´).AsString;

if suaQuery.FieldByName(´CAMPO_MATERIA´).AsString = ´MATEMATICA´ then
cdsAta.FieldByName(´NOTA_MATEMATICA´).AsString:= suaQuery.FieldByName(´CAMPO_NOTA´).AsString;

if suaQuery.FieldByName(´CAMPO_MATERIA´).AsString = ´PORTUGUÊS´ then
cdsAta.FieldByName(´NOTA_PORTUGUES´).AsString:= suaQuery.FieldByName(´CAMPO_NOTA´).AsString;

if suaQuery.FieldByName(´CAMPO_MATERIA´).AsString = ´INGLÊS´ then
cdsAta.FieldByName(´NOTA_INGLES´).AsString:= suaQuery.FieldByName(´CAMPO_NOTA´).AsString;
/// Faça este procedimento para todas as matérias...
end;
suaQuery.Next;

if (pCodAluno <> suaQuery.FieldByName(´COD_ALUNO´).AsInteger) then
begin
cdsAta.FieldByName(´NOME_ALUNO´).AsString:= NomeUltimoAluno;
cdsAta.FieldByName(´COD_ALUNO´).AsInteger:= pCodALuno;
cdsAta.Post;
pCodAluno:= suaQuery.FieldByName(´COD_ALUNO´).AsInteger;
end;
end;
end;

Chame o GerarAta antes de abrir o relatório. Ligue os QRDBText do gerador de relatório, seja no fortes ou QR, aos campos do clientdataset.


com esse procedimento vai aparecer assim:

codigo | Nome | Nota_Port | Nota_Mat | ..
10 | MARIA| 8 | 5 | ...

Espero que tenha ajudado...
inté...


Responder

Gostei + 0

06/03/2008

Ralp

Hall desde já lhe agradeço. Vou testar e lhe dou um retorno.

Abraços.


Responder

Gostei + 0

07/03/2008

Ralp

Nobre Hall, gostaria muito de lhe agradecer pela ajuda e paciência disposta neste meu caso.

A rotina que informou funcionou perfeitamente.

Mais uma vez muito obrigado e se precisar estamos ai.

Abraços.

Ralp Alves


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar