Erro no script...

Delphi

21/11/2011

Pessoal, bom dia.

Estou com um problema ao gerar um relatório no Rave Report.

Criei uma query chamada Qry_RelatLocalArm em uma unit chamada uDtm. E linkei esta query com o rave report.
Quando eu executo o relatório no Rave Report, ele me traz o que eu quero.

Porém quando tento puxar este relatório pelo Delphi, não está me trazendo nada, apenas a Tela em Branco.

Na tela do Delphi chamada Relatorio, simplesmente copiei o SQL da Query Qry_RelatLocalArm localizada na uDtm e colei no clique do botão gerar relatorio, conforme abaixo:

with uDtm.frmDtm.Qry_RelatLocalArm do
begin
Close;
SQL.Clear;

SQL.ADD(select);
SQL.ADD( a.id_armazenamento,);
SQL.ADD( e.nm_empresa,);
SQL.ADD( s.nm_sala,);
SQL.ADD( tp.ds_tparmazenamento,);
SQL.ADD( a.nm_pasta,);
SQL.ADD( a.nr_caixa,);
SQL.ADD( a.ic_empresa,);
SQL.ADD( a.nr_box,);
SQL.ADD( a.ds_posicao,);
SQL.ADD( dp.nm_departamento,);
SQL.ADD( t.ds_titulo,);
SQL.ADD( a.dt_caixaini,);
SQL.ADD( a.dt_caixafim,);
SQL.ADD( a.dt_entrada,);
SQL.ADD( a.dt_expurgo,);
SQL.ADD( a.ic_status);
SQL.ADD(from );
SQL.ADD( armazenamento a,);
SQL.ADD( tipo_armazenamento tp,);
SQL.ADD( departamento dp,);
SQL.ADD( titulo t,);
SQL.ADD( sala s,);
SQL.ADD( empresa e);
SQL.ADD(where );
SQL.ADD( tp.id_tparmazenamento = a.id_tparmazenamento);
SQL.ADD(and t.id_titulo = a.id_titulo);
SQL.ADD(and dp.id_departamento = a.id_departamento);
SQL.ADD(and s.id_sala = a.id_sala);
SQL.ADD(and e.id_empresa = a.id_empresa);
**** SQL.Add(and a.id_empresa = +inttostr(cbxEmpresa.ItemIndex)+);
SQL.ADD(order by a.ds_posicao);

Open;

if (cbxArmaz.ItemIndex = 2) then
begin
RvProject1.Execute;
RvProject1.Close;
end;
end;

****: Apenas esta linha coloquei a mais na tela Relatorio, porém já testei sem ela e continua trazendo nada.

Será que esqueci alguma coisa?

Desde já agradeço a atenção.
Flavio Silva

Flavio Silva

Curtidas 0

Respostas

Leonardo Xavier

Leonardo Xavier

21/11/2011

Qual finalidade desta linha:


if (cbxArmaz.ItemIndex = 2) then
GOSTEI 0
Flavio Silva

Flavio Silva

21/11/2011

Significa que se o combo que eu coloquei na tela for 2, ele vai executar esse processo de abrir o Rave Report.
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

21/11/2011

Ok! Agora intendi o seu código pois aquela linha eu não estava realmente intendendo ela, desculpe.
Fiz algumas mudanças em seu código espero que lhe ajude a resolver seu problema. Você esta utilizando DataSet? Fiz como se estivesse se não estiver pode adapatar.
//linhas mudadas
var
x:integer;
begin



//código igualzinho.
with uDtm.frmDtm.Qry_RelatLocalArm do
begin
Close;
SQL.Clear;
//aqui muda:
if  x=1 to dataset1.recordcount do begin //irá executar a função até que todos os campos da tabela sejam passados
//***************************************************************************************************************
SQL.ADD(select);
SQL.ADD( a.id_armazenamento,);
SQL.ADD( e.nm_empresa,);
SQL.ADD( s.nm_sala,);
SQL.ADD( tp.ds_tparmazenamento,);
SQL.ADD( a.nm_pasta,);
SQL.ADD( a.nr_caixa,);
SQL.ADD( a.ic_empresa,);
SQL.ADD( a.nr_box,);
SQL.ADD( a.ds_posicao,);
SQL.ADD( dp.nm_departamento,);
SQL.ADD( t.ds_titulo,);
SQL.ADD( a.dt_caixaini,);
SQL.ADD( a.dt_caixafim,);
SQL.ADD( a.dt_entrada,);
SQL.ADD( a.dt_expurgo,);
SQL.ADD( a.ic_status);
SQL.ADD(from );
SQL.ADD( armazenamento a,);
SQL.ADD( tipo_armazenamento tp,);
SQL.ADD( departamento dp,);
SQL.ADD( titulo t,);
SQL.ADD( sala s,);
SQL.ADD( empresa e);
SQL.ADD(where );
SQL.ADD( tp.id_tparmazenamento = a.id_tparmazenamento);
SQL.ADD(and t.id_titulo = a.id_titulo);
SQL.ADD(and dp.id_departamento = a.id_departamento);
SQL.ADD(and s.id_sala = a.id_sala);
SQL.ADD(and e.id_empresa = a.id_empresa);
**** SQL.Add(and a.id_empresa = +inttostr(cbxEmpresa.ItemIndex)+);
SQL.ADD(order by a.ds_posicao);

Open;
//*******
end;
//*******

if (cbxArmaz.ItemIndex = 2) then
begin
RvProject1.Execute;
RvProject1.Close;
end;
end;

GOSTEI 0
Wilson Junior

Wilson Junior

21/11/2011

Qual a estrutura das suas tabelas???
GOSTEI 0
Flavio Silva

Flavio Silva

21/11/2011

Desculpe wilson, ao entendi sua pergunta...

Para este sistema estou usando Microsoft SQL Server.

E sobre o código Leonardo não deu certo... Agora está me trazendo o relatório com todos os campos da tabela Titulo t
ao invés de me trazer os resultados que já foram cadastrados.

Me traz todos os campos <invalid> e aparece todos os Titulos da tabela Título.

Atenciosamente,
GOSTEI 0
POSTAR