Fórum consulta sql p/ relatório - não funciona c/ cláusula WHERE #196991

25/11/2003

0

Olá,

Estou usando o Quick Report no Delphi 7 com dbExpress. Relacionei o relatorio c/ uma Query e quando dou um preview no relatório consigo visalizar perfeitamente os dados de acordo c/ minha consulta SQL. Mas quando rodo o programa, na hora de dar o preview ocorre um erro na minha consulta: ´column unknown ...(nome do campo)... ´. Já percebi que não importa qual campo seja, esse erro ocorre sempre no campo que vem após a cláusula where. Se eu não utilizar a cláusula o erro não ocorre. Acontece que eu preciso utilizá-la.

Aqui está o código:
procedure TfrmPesquisa.btnRelatoClick(Sender: TObject);
begin
(* Preview Relatório *)
If not Assigned(frmRelatorio) then
frmRelatorio := TfrmRelatorio.Create(Application);

frmRelatorio.Prepare;

with dtmSaida.SQLQuery3, SQL do begin
Close;
Clear;

Add(´Select S.DOCUMENTO, P.NMPRODUTO, T.NMDEPTO,´+
´ S.DATASAIDA from PRODUTO P, DEPTO T, SAIDA S,´+
´ DADOSSAIDA D [u:a0c8843868]where[/u:a0c8843868] (P.IDGRUPO = D.IDGRUPO) AND´+
´ (D.IDPRODUTO = P.IDPRODUTO) AND (S.IDDEPTO = T.IDDEPTO)´);

ExecSql;
Active:= true;
frmRelatorio.Preview;
end;
end

Usando join funciona, mas eu precisarei usar a cláusula WHERE de qq maneira.

Add(´Select S.DOCUMENTO, P.NMPRODUTO, T.NMDEPTO,´+
´ S.DATASAIDA from PRODUTO P, DEPTO T join´+
´ DADOSSAIDA D on P.IDGRUPO = D.IDGRUPO and´+
´ D.IDPRODUTO = P.IDPRODUTO join SAIDA S on´+
´ S.IDDEPTO = T.IDDEPTO´);

Alguém poderia me ajudar?

Obrigada,


Marcela_m

Marcela_m

Responder

Posts

25/11/2003

Afmello

Marcela,

Você não pode usar o método ExeSql com uma instrução SELECT.

Tente usar:
with SqlQuery do begin
close;
clear;
sql.add(<primeira linha da instrução SQL> );
sql.add(<segunda linha da instrução SQL> );
sql.add(<enésima linha da instrução SQL> );
try
open;
if IsEmpty then begin
ShowMessage(´Nenhuma informação a ser listada.´);
exit;
end;
except
ShowMessage(´Erro na abertura da consulta´);
exit;
end;
Relatorio.Preview;
end;

Não esqueça que o componente SqlQuere da paleta DBExpress não é bidirecional, portanto utilize juntamente um DataSetProvider e um ClienteDataSet ou um SimpleDataSet.

Tchau !!!


Responder

Gostei + 0

25/11/2003

Marcela_m

Olá,
Obrigada, mas ainda assim o erro ocorre se há uma cláusula WHERE.
Quando eu retiro esta, funciona perfeitamente.

Se vc ainda puder me ajudar,


Responder

Gostei + 0

25/11/2003

Marcelo.c

Talvez o problema seja com o DBExpress(Bug). Experimente utilizar IBX ou outra versão do DBExpress.


Responder

Gostei + 0

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

Aceitar