Conversing string error na sql query

Delphi

10/08/2010

FPedidos.Pedidos.SQL.Add('select * from PEDIDOS LEFT OUTER JOIN Clientes ON PEDIDOS.clicodigo = Clientes.cliCodigo where PedStatus=0 and peddatalocacao >='+QuotedStr(MaskEdit1.Text)+'and peddatalocacao <='+QuotedStr(MaskEdit2.Text)); FPedidos.Pedidos.SQL.Add('order by clientes.CLIRAZAOSOCIAL');   No banco os campos tao setados DATE no dbedit a mask ta 00.00.0000 pq nas tabelas do firebird ta assim o formato   E fica dando error converting string """""   Depois q mechi no SQl query ae q comeco a dar o erro to fazendo alguma sentenca errada na query?   Alguma luz?
Chadoiam

Chadoiam

Curtidas 0

Respostas

Pablo Souza

Pablo Souza

10/08/2010

Na verdade, no firebird é melhor vc usar 
QuotedStr(FormatDateTime('MM/DD/YYYY',DataaPesquisar))
GOSTEI 0
Pablo Souza

Pablo Souza

10/08/2010

desculpa mas não achei um botão de edit. 
O Ideal mesmo é você trabalhar com parametros tipo
...'where datapedido = :datapedido';SqlDataSet.Params.Params[0].AsDateTime := DataaPesquisar {em formato TDateTime mesmo};
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

10/08/2010

Pela mensagem ta passando as datas vazio. Faça o seguinte teste, antes de abrir a query: FPedidos.Pedidos.SQL.Add('select * from PEDIDOS LEFT OUTER JOIN Clientes ON PEDIDOS.clicodigo = Clientes.cliCodigo where PedStatus=0 and peddatalocacao >='+QuotedStr(Trim(MaskEdit1.Text))+ 'and peddatalocacao <='+QuotedStr(Trim(MaskEdit2.Text))); FPedidos.Pedidos.SQL.Add('order by clientes.CLIRAZAOSOCIAL'); ShowMessage(FPedidos.Pedidos.SQL.Text);   Ao aparecer a mensagem tecle CTRL + C e cole no IBExpert ou IBConsole, retire o que tiver além do código SQL e execute, se não der erro retire o ShowMessage. Se der erro poste o erro e o SQL aqui.   Atenciosamente   Eriley
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

10/08/2010

Antes do and tem um espaço. Faça o seguinte teste, antes de abrir a query: FPedidos.Pedidos.SQL.Add('select * from PEDIDOS LEFT OUTER JOIN Clientes ON PEDIDOS.clicodigo = Clientes.cliCodigo where PedStatus=0 and peddatalocacao >='+ QuotedStr(Trim(MaskEdit1.Text))+' and peddatalocacao <='+QuotedStr(Trim(MaskEdit2.Text))); FPedidos.Pedidos.SQL.Add('order by clientes.CLIRAZAOSOCIAL'); ShowMessage(FPedidos.Pedidos.SQL.Text);   Ao aparecer a mensagem tecle CTRL + C e cole no IBExpert ou IBConsole, retire o que tiver além do código SQL e execute, se não der erro retire o ShowMessage. Se der erro poste o erro e o SQL aqui.   Atenciosamente   Eriley
GOSTEI 0
Chadoiam

Chadoiam

10/08/2010

Ta falando que formatdatetime called com eses argumentos   no caso estaria usando o maskedit pra jogar a data  ali no sql query pq ta dando esse erro?     FPedidos.Pedidos.SQL.Add('select * from PEDIDOS  LEFT OUTER JOIN Clientes ON  PEDIDOS.clicodigo = Clientes.cliCodigo where PedStatus=0 and peddatalocacao >='+QuotedStr(FormatDateTime('MM/DD/YYYY',Maskedit1.text))+'and peddatalocacao <='+QuotedStr(FormatDateTime('MM/DD/YYYY',maskedit2.text)));
    ficaria assim a query? ta dando erro acima
GOSTEI 0
Felipe Caputo

Felipe Caputo

10/08/2010

pq vc está passando a maskedit e o valor tem q ser em TDateTime. Usa
FormatdateTime('MM/DD/YYYY',StrToDate(MaskEdit1.Text));

e pode tb colocar a mask do seu maskedit com as barras 00/00/0000
mas eu recomendaria utilizar um DateTimePicker
GOSTEI 0
Chadoiam

Chadoiam

10/08/2010

Galera consegui fazer oque queria usando o   Fpedidos.Pedidos.Params[0].value:=maskedit1.Text;
   Fpedidos.Pedidos.Params[1].value:=maskedit2.Text;   Ae so mudei o SQL ali do query do form pedidos e deu certo =)
GOSTEI 0
POSTAR