Delphi 2010 + ReportBuilder 11.08 (Nao exibe relatorio!)

Delphi

07/04/2010

Problema: Ao clicar para exibir o relatório pelo ReportBuilder ele abre a janela do ReportBuilder porém não mostra nada, nem os dados do banco de dados, nem a estrutura do relatório. Porém quando se clica para rolar a DBGrid (no aplicativo) para o lado para ver os resultados e depois manda abrir o relatório ele exibe o conteúdo. Alguém poderia me dar uma ajuda, já refiz umas 10 vezes e sempre dá essa zica.  
 
procedure TF_Imprimir_Boletim.btn_imprimirClick(Sender: TObject);
begin
  if rdgrp_classificacao.ItemIndex = 1 then
    ImprimeSelecionado(dbgrid_resultado.Columns[0].Field.AsString);
  ppReport_Boletim.Print;
end;
 
procedure TF_Imprimir_Boletim.btn_procurarClick(Sender: TObject);
begin
  with ModuloDados.qry_imprimir_boletim do
  begin
    Close;
    SQL.Clear;
    case rdgrp_procura.ItemIndex of
      0: SQL.Add('SELECT cad_alunos.codigo, cad_alunos.nome, cad_alunos.rg, cad_alunos.serie, boletim.* FROM cad_alunos, boletim WHERE cad_alunos.codigo = '+edit_pesquisa.Text+' AND cad_alunos.codigo = boletim.codigo AND cad_alunos.serie = :PSER ORDER BY cad_alunos.nome ASC');
      1: SQL.Add('SELECT cad_alunos.codigo, cad_alunos.nome, cad_alunos.rg, cad_alunos.serie, boletim.* FROM cad_alunos, boletim WHERE cad_alunos.codigo = boletim.codigo AND cad_alunos.nome LIKE :PESQ AND cad_alunos.serie = :PSER ORDER BY cad_alunos.nome ASC');
    end;
    ParamByName('PESQ').AsString := '%'+edit_pesquisa.Text+'%';
    ParamByName('PSER').AsString := combo_serie.Text;
    try
      Open;
    Except
      On E:Exception do
        ShowMessage(E.Message);
    end;
  end;
  ModuloDados.client_ds_imprimir_boletim.Active := True;
  dbgrid_resultado.DataSource := ModuloDados.ds_imprimir_boletim;
end;
 
procedure TF_Imprimir_Boletim.combo_serieChange(Sender: TObject);
begin
  //Habilita Radio Group Classificação
  if (rdgrp_classificacao.Enabled = False) then
    rdgrp_classificacao.Enabled := True;
  //Desabilita botão imprimir caso estiverem habilitados
  if btn_imprimir.Enabled = True then
    btn_imprimir.Enabled := False;
  //Reseta radio group
  if rdgrp_classificacao.ItemIndex <> -1 then
    rdgrp_classificacao.ItemIndex := -1;
  //Fecha queries
  ModuloDados.client_ds_imprimir_boletim.Close;
  ModuloDados.qry_imprimir_boletim.Close;
  //Insere nomes das materias no relatorio
  Preenche_Materia(combo_serie.Text);
end;
 
constructor TF_Imprimir_Boletim.Create(AOwner: TComponent);
begin
  inherited;
  PreencheComboSerie;
end;
 
procedure TF_Imprimir_Boletim.dbgrid_resultadoCellClick(Column: TColumn);
begin
  if btn_imprimir.Enabled = False then
    btn_imprimir.Enabled := True;
end;
 
procedure TF_Imprimir_Boletim.dbgrid_resultadoDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  with TDBGrid(dbgrid_resultado) do
  begin
    Columns.Items[0].Width := 50;
    Columns.Items[1].Width := 320;
    Column.Title.Color := ClMedGray; {cor do fundo do dbGrid}
    Column.Title.Font.Style := [fsBold]; {fonte ira se destacar em negrito}
    Column.Title.Font.Color := clBlack; {cor da fonte}
    Canvas.Brush.Style := bsClear;
    case Column.Index of
      0: Column.Title.Caption := 'Código';
      1: Column.Title.Caption := 'Nome';
    end;
  end;
end;
 
procedure TF_Imprimir_Boletim.edit_pesquisaChange(Sender: TObject);
begin
  if edit_pesquisa.Text <> '' then
    btn_procurar.Enabled := True
  else
    btn_procurar.Enabled := False;
end;
 
procedure TF_Imprimir_Boletim.edit_pesquisaKeyPress(Sender: TObject;
  var Key: Char);
begin
  if rdgrp_procura.ItemIndex = 0 then
  begin
    if not(key in ['0'..'9','-', #8]) then
      key := #0;
  end;
  if ((key in [#13]) and (edit_pesquisa.Text <> '')) then
    btn_procurarClick(Sender);
end;
 
procedure TF_Imprimir_Boletim.Especificar;
begin
  if btn_imprimir.Enabled = True then
    btn_imprimir.Enabled := False;
  rdgrp_procura.Enabled := True;
  if not (ModuloDados.client_ds_imprimir_boletim.Active = False) then
  begin
    ModuloDados.client_ds_imprimir_boletim.Close;
    ModuloDados.qry_imprimir_boletim.Close;
  end;
end;
 
procedure TF_Imprimir_Boletim.ImprimeSelecionado(SI: String);
begin
  with ModuloDados.qry_imprimir_boletim do
  begin
    ModuloDados.client_ds_imprimir_boletim.Close;
    Close;
    SQL.Clear;
    SQL.Add('SELECT cad_alunos.codigo, cad_alunos.nome, cad_alunos.rg, cad_alunos.serie, boletim.* FROM cad_alunos, boletim WHERE cad_alunos.codigo = :CS AND cad_alunos.codigo = boletim.codigo ORDER BY cad_alunos.nome ASC');
    ParamByName('CS').AsString := SI;
    try
      Open;
    Except
      On E:Exception do
        ShowMessage(E.Message);
    end;
    ModuloDados.client_ds_imprimir_boletim.Open;
  end;
end;
 
procedure TF_Imprimir_Boletim.PreencheComboSerie;
begin
  CompletaSerieBoletim; {Procedure do arquivo U_Funcoes.pas}
  with ModuloDados.qry_boletim_serie do
  begin
    First;
    combo_serie.Items.Clear;
    while not eof do
    begin
      combo_serie.Items.Add(FieldByName('serie').asString);
      Next;
    end;
  end;
end;
 
procedure TF_Imprimir_Boletim.Preenche_Materia(SerieSel: String);
var
  c: Integer;
begin
  with ModuloDados.qry_materias_boletim do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from materias where serie = :SM order by id asc');
    ParamByName('SM').AsString := SerieSel;
    try
      Open;
    except
      On E:Exception do
        ShowMessage(E.Message);
    end;
  end;
  with ppReport_Boletim.DetailBand do
  begin
    //Zerar campos de matérias
    lbl_mat1.Caption := '';
    lbl_mat2.Caption := '';
    lbl_mat3.Caption := '';
    lbl_mat4.Caption := '';
    lbl_mat5.Caption := '';
    lbl_mat6.Caption := '';
    lbl_mat7.Caption := '';
    lbl_mat8.Caption := '';
    lbl_mat9.Caption := '';
    lbl_mat10.Caption := '';
    lbl_mat11.Caption := '';
    lbl_mat12.Caption := '';
    //Fim do zerador
    //Preenche campo Matéria
    c:= 1;
    while not ModuloDados.qry_materias_boletim.Eof do
    begin
      case c of
        1:lbl_mat1.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        2:lbl_mat2.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        3:lbl_mat3.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        4:lbl_mat4.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        5:lbl_mat5.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        6:lbl_mat6.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        7:lbl_mat7.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        8:lbl_mat8.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        9:lbl_mat9.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        10:lbl_mat10.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        11:lbl_mat11.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
        12:lbl_mat12.Caption := ModuloDados.qry_materias_boletim.FieldByName('materia').AsString;
      end;
    c:= c+1;
    ModuloDados.qry_materias_boletim.Next;
    end;
    //Fim do preenchedor
  end;
end;
 
procedure TF_Imprimir_Boletim.rdgrp_classificacaoClick(Sender: TObject);
begin
  case rdgrp_classificacao.ItemIndex of
    0: SalaInteira(combo_serie.Text);
    1: Especificar;
  end;
end;
 
procedure TF_Imprimir_Boletim.rdgrp_procuraClick(Sender: TObject);
begin
  if rdgrp_procura.ItemIndex <> -1 then
    StatusBotoes(True);
end;
 
procedure TF_Imprimir_Boletim.SalaInteira(S1: String);
begin
  //Prepara banco de dados com a série selecionada
  ModuloDados.client_ds_imprimir_boletim.Close;
  with ModuloDados.qry_imprimir_boletim do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select cad_alunos.codigo, cad_alunos.nome, cad_alunos.rg, cad_alunos.serie, boletim.codigo, boletim.* from cad_alunos, boletim where cad_alunos.codigo = boletim.codigo and cad_alunos.serie = :SB order by cad_alunos.nome asc;');
    ParamByName('SB').AsString := S1;
    try
      Open;
    except
      On E:Exception do
        ShowMessage(E.Message);
    end;
  end;
  ModuloDados.client_ds_imprimir_boletim.Open;
  //Mostra resultado no DBGrid
  dbgrid_resultado.DataSource := ModuloDados.ds_imprimir_boletim;
  //Desativa botões edit de procura
  StatusBotoes(False);
  //Reseta radio group da pesquisa
  if rdgrp_procura.Enabled = True then
  begin
    rdgrp_procura.ItemIndex := -1;
    rdgrp_procura.Enabled := False;
  end;
  //Ativa botão imprimir
  if btn_imprimir.Enabled = False then
    btn_imprimir.Enabled := True;
end;
 
procedure TF_Imprimir_Boletim.StatusBotoes(S: Boolean);
begin
  lbl_pesquisa.Enabled := S;
  edit_pesquisa.Enabled := S;
end;
 
Wesley Martins

Wesley Martins

Curtidas 0
POSTAR