SQL - não estou conseguindo adicionar os dados por fora

Delphi

05/10/2004

Tá acontecento uma coisa estranha, eu tenho um relatório q pega dos dados de um sql, q e se eu adicionar o q quero direto nela o relatório dá certo, mais se eu adicionar fora não dá, mesmo q os comando sejam iguais, é q faço por fora para colocar variaveis q as vezes peciso e as vezes não, e só conheço essa forma de fazer isso. Bom qdo eu peço para limpar a sql e faço o seguinte:

With QryItens do
begin
SQL.clear;
SQL.add(´Select Servico,Codigo,Sum((ItensMO.Quantidade*ItensMO.Preco)+ItensMO.Conserto) as Total, Sum(ItensMO.Quantidade) as Qtde,ItensMO.Situacao´);
SQL.add(´From MaoObra,ItensMO´);
SQL.add(´Where ItensMO.CodProduto = MaoObra.Codigo´);
SQL.add(´and ItensMO.DataPed Between :VarDataI and :VarDataF´);
if Edit1.Text <> ´´ then //verifico antes se não dá erro
SQL.add(´and ItensMO.CodCliente =:VarCod´);
SQL.add(´Group By Servico,Codigo,ItensMO.Situacao´);
SQL.add(´Order By Total Desc´);
end;
if Edit1.Text <> ´´ then
QryItens.ParamByName(´VarCod´).AsInteger:=StrToInt(Edit1.Text);
QryItens.ParamByName(´VarDataI´).AsDate:=StrToDate(MaskEdit1.Text);
QryItens.ParamByName(´VarDataF´).AsDate:=StrToDate(MaskEdit2.Text);
QryItens.Prepare;
QryItens.Open;

e mando imprimir, e não sei nada, mais se eu fizer direto na sql dá, eu só não faço direto por q não sei como fazer com as variáveis q preciso, pois se os valores q elas receberem para gerar o relatório forem vazias dá um erro, então faço dessa forma. Alguém tem alguma idéia para resolver isso?


Janete

Janete

Curtidas 0

Respostas

Czar

Czar

05/10/2004

qual a mensagem de erro q dá :wink:


GOSTEI 0
Janete

Janete

05/10/2004

qual a mensagem de erro q dá :wink:


não dá mensagem nenhuma, simplesmente o relatório q gero da forma q passei limpando a sql e gerando não aparece nada, e o q simplesmente pego a sql já com códigos dentro dela dá certo, não entendo por q não dá dessa forma q estou tentando fazer


GOSTEI 0
Janete

Janete

05/10/2004

[quote:644b634bea=´czar´]qual a mensagem de erro q dá :wink:


não dá mensagem nenhuma, simplesmente o relatório q gero da forma q passei limpando a sql e gerando não aparece nada, e o q simplesmente pego a sql já com códigos dentro dela dá certo, não entendo por q não dá dessa forma q estou tentando fazer[/quote:644b634bea]

sobe


GOSTEI 0
Martins

Martins

05/10/2004

Para ver o q esta acontecendo ou o q não esta acontecendo, faça o seguinte, pegue o seu código, coloque em outro componente query e ligue-o ao DbGrid, e veja se lhe é motrado alguma coisa.
begin 
QryItens.Close;
QryItens.SQL.clear; 
QryItens.SQL.add(´Select Servico,Codigo,Sum((ItensMO.Quantidade*ItensMO.Preco)+ItensMO.Conserto) as Total, Sum(ItensMO.Quantidade) as Qtde,ItensMO.Situacao´); 
QryItens.SQL.add(´From MaoObra,ItensMO´); 
QryItens.SQL.add(´Where ItensMO.CodProduto = MaoObra.Codigo´); 
QryItens.SQL.add(´and ItensMO.DataPed Between :VarDataI and :VarDataF´); 
if Edit1.Text <> ´´ then //verifico antes se não dá erro 
QryItens.SQL.add(´and ItensMO.CodCliente =:VarCod´); 
QryItens.SQL.add(´Group By Servico,Codigo,ItensMO.Situacao´); 
QryItens.SQL.add(´Order By Total Desc´); 
if Edit1.Text <> ´´ then 
QryItens.ParamByName(´VarCod´).AsInteger:=StrToInt(Edit1.Text); 
QryItens.ParamByName(´VarDataI´).AsDate:=StrToDate(MaskEdit1.Text); 
QryItens.ParamByName(´VarDataF´).AsDate:=StrToDate(MaskEdit2.Text); 
QryItens.Prepare; 
QryItens.Open; 


Boa Sorte!!!


GOSTEI 0
Janete

Janete

05/10/2004

Acabei de descobir q o problema é qdo coloco o calculo

+ItensMO.Conserto

Sum((ItensMO.Quantidade*ItensMO.Preco)+ItensMO.Conserto) as Total

se eu tirar esse +ItensMO.Conserto, dá certo, só q fico sem poder acrescentar o valor do conserto no total do serviço, e preciso. Se alguém puder me ajudar agradeço. :lol:


GOSTEI 0
Janete

Janete

05/10/2004

Acabei de descobir q o problema é qdo coloco o calculo +ItensMO.Conserto Sum((ItensMO.Quantidade*ItensMO.Preco)+ItensMO.Conserto) as Total se eu tirar esse +ItensMO.Conserto, dá certo, só q fico sem poder acrescentar o valor do conserto no total do serviço, e preciso. Se alguém puder me ajudar agradeço. :lol:


agora está assim:
Select Servico,Codigo,Sum(ItensMO.Quantidade*ItensMO.Preco) as Total, Sum(ItensMO.Quantidade) as Qtde,Sum(ItensMO.Conserto) as Cons
.......
eu separei em um outro total o conserto, mais agora precisava somar o Total+Cons e colocar n Order By da sql para q fique o maior valor primeiro para o menor
agora está assim:
Order By Total Desc

existe alguma forma de fazer esse calculo dentro da sql mesmo, alguma coisa tipo (Order By Total+Cons Desc)


GOSTEI 0
POSTAR