Fórum consulta sql p/ relatório - não funciona c/ cláusula WHERE #196991
25/11/2003
0
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
Curtir tópico
+ 0Posts
25/11/2003
Afmello
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 !!!
Gostei + 0
25/11/2003
Marcela_m
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,
Gostei + 0
25/11/2003
Marcelo.c
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)