Fórum Status em Consulta SQL #282503

20/05/2005

0

Galera é o seguinte. Estou desenvolvendo um programa para impressão de relatórios a partir de um programa academico já existente. Ai tenho uma combo onde o usuário escolhe o relatório que deseja e clica num botao para visualiza-lo.

O código é o seguinte para um dos relatório:
// Conferência de Notas
if relatorio.itemindex=1 then
  begin
    if (cbimestre.ItemIndex<>-1) or (cperiodo.text<>´´) or (cturma.text<>´´) or (cdisciplina.text<>´´) then
      begin
        status.caption:=´  Processando...´;
        VerificaCampos;
        sql:=´Select distinct(E.CodAluno),P.nome,E.tipoMatricula, D.Nome as disciplina, F.nome as professor, t3.n1,t3.n2,t3.n3 from pessoa p,aluno a,ProfDisc PD,disciplina d,  Funcionario f,enturma e left join´;
        sql:=sql+´ (Select * from (Select * from((Select CodAluno as c1,nota as n1,ano as a1, Coddisciplina as d1,Periodo as p1 from notas where avaliacao=1) as t1 left join (Select CodAluno as c2, nota as n2,ano as a2, Coddisciplina as d2, Periodo as p2 from notas ´;
        sql:=sql+´  where avaliacao=2) t2 on(t1.C1=t2.C2 and t1.a1=t2.a2 and t1.d1=t2.d2 and t1.p1=t2.p2))) as normal left join (Select CodAluno as c3,nota as n3,ano as a3, CodDisciplina as d3,Periodo as p3 from notarecu) pf on (normal.c1=pf.c3 and normal.a1=pf.a3 ´;
        sql:=sql+´ and normal.d1=pf.d3 and normal.p1=pf.p3))t3 on (E.CodALuno=t3.C1 and E.ano=t3.a1 and E.Coddisciplina=t3.d1 and E.periodo=t3.p1) where P.COdPessoa=A.CodPessoa and A.COdAluno=E.CodALuno and E.CodDisciplina=D.Coddisciplina and PD.COddisciplina=´;
        sql:=sql+´D.coddisciplina and F.codfuncionario=Pd.CodFuncionario and PD.Ano=E.Ano and Pd.turma=E.turma and Pd.periodo=E.periodo´+turma+turno+disciplina+´ and E.COdStatus=2 and E.ano=´+ano+´ and E.periodo=´+semestre+´ and E.tipoMatricula=101 order by 2´;
        dm.qconferencia.Close;
        dm.qconferencia.SQL.Clear;
        dm.qconferencia.sql.Add(sql);
        dm.qconferencia.open;
        _conferencia:=T_conferencia.Create(Application);
        _conferencia.QR1.Preview;
        sql:=´Select distinct(E.CodAluno),P.nome,E.tipoMatricula, D.Nome as disciplina, F.nome as professor, t3.n1,t3.n2,t3.n3 from pessoa p,aluno a,ProfDisc PD,disciplina d,  Funcionario f,enturma e left join´;
        sql:=sql+´ (Select * from (Select * from((Select CodAluno as c1,nota as n1,ano as a1, Coddisciplina as d1,Periodo as p1 from notas where avaliacao=1) as t1 left join (Select CodAluno as c2, nota as n2,ano as a2, Coddisciplina as d2, Periodo as p2 from notas ´;
        sql:=sql+´  where avaliacao=2) t2 on(t1.C1=t2.C2 and t1.a1=t2.a2 and t1.d1=t2.d2 and t1.p1=t2.p2))) as normal left join (Select CodAluno as c3,nota as n3,ano as a3, CodDisciplina as d3,Periodo as p3 from notarecu) pf on (normal.c1=pf.c3 and normal.a1=pf.a3 ´;
        sql:=sql+´ and normal.d1=pf.d3 and normal.p1=pf.p3))t3 on (E.CodALuno=t3.C1 and E.ano=t3.a1 and E.Coddisciplina=t3.d1 and E.periodo=t3.p1) where P.COdPessoa=A.CodPessoa and A.COdAluno=E.CodALuno and E.CodDisciplina=D.Coddisciplina and PD.COddisciplina=´;
        sql:=sql+´D.coddisciplina and F.codfuncionario=Pd.CodFuncionario and PD.Ano=E.Ano and Pd.turma=E.turma and Pd.periodo=E.periodo´+turma+turno+disciplina+´ and E.COdStatus=2 and E.ano=´+ano+´ and E.periodo=´+semestre+´ and (E.tipoMatricula=102 or E.tipoMatricula=103) order by 2´;
        dm.qconferencia.Close;
        dm.qconferencia.SQL.Clear;
        dm.qconferencia.sql.Add(sql);
        dm.qconferencia.open;
        _conferencia2:=T_conferencia2.Create(Application);
        _conferencia2.QR1.Preview;
        status.caption:=´´;
      end
    else
      MessageBox(handle,´Os seguintes campos devem estar marcados para a impressão do Relatório de Assinaturas: Bimestre,Periodo,Turma,Disciplina.´,´Aviso do Sistema´,mb_ok+mb_iconExclamation);
  end;


Pois bem gostaria que quando usuário clicasse para visualizar tivesse uma espécie de status para ele tipo um label com ´Processando...´ ou um progressBar, mas o progressbar não dá por ter como prever o tempo que vai durar a consulta então o label já serviria.

Coloquei o label mas quando a consulta é mais demorada o status não aparece. É como se o programa travasse e só destravasse depois de processada a consulta. O estranho é que eu coloquei para o caption do status receber o ´Processando...´ antes de abrir a query.

Se alguem puder contribuir com alguma ajuda seria beleza.

Valeu Pessoal!

Daniel


Daniel_mc

Daniel_mc

Responder

Posts

21/05/2005

Daniel_mc

SOBE


Responder

Gostei + 0

22/05/2005

Arc@njo

daniel_mc, para o caso do label, experiemente apos atribuir o valor ´Processando´ a ele colocar o comando:

Form1.Repaint; // No caso Form1 é o nome do seu formulario.

Espero ter ajudado.


Responder

Gostei + 0

23/05/2005

Daniel_mc

Valeu Camarada, funcionou


Responder

Gostei + 0

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

Aceitar