Mario Lopes Postado Junho 6, 2012 Denunciar Share Postado Junho 6, 2012 Boa tarde amigosPorque o código seguinte não funciona para comprar datas. Isto é o resultado é nulo e não devia ser.var data:Tdatetime; var compoedata:string; begin compoedata:='01'+'-'+inttostr(combobox1.ItemIndex+1)+'-'+edit1.Text; data:=strtodate(compoedata); //------------procurar apenas os contrato validos Queryg.SQL.Clear; Queryg.SQL.Add('SELECT *'); Queryg.SQL.Add('FROM contrato'); Queryg.SQL.Add('WHERE data_inicio>=:a' ); Queryg.SQL.Add('and data_fim <= :a'); queryg.Params[0].AsDate:=data; queryg.Params[1].asdate:=data; queryg.Open; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Junho 6, 2012 Denunciar Share Postado Junho 6, 2012 compoedata:='01'+'-'+inttostr(combobox1.ItemIndex+1)+'-'+edit1.Text;data:=strtodate(compoedata);vamos supor que sua data sejadata := '01-01-2012' // isso dependendo do banco de dados poderia ser '01/01/2012'se data tem o mesmo valor, ao executar a sql, os registros retornariam somente no intervalo de 1 dia ( ou seja, na mesma data )Queryg.SQL.Clear; Queryg.SQL.Add('SELECT *'); Queryg.SQL.Add('FROM contrato'); Queryg.SQL.Add('WHERE data_inicio>=:data1' ); Queryg.SQL.Add('and data_fim <= :data2'); queryg.Params[0].AsDate:=data; queryg.Params[1].asdate:=data; queryg.Open; se quiser um intervalo maior deveria ser Queryg.SQL.Clear; Queryg.SQL.Add('SELECT *'); Queryg.SQL.Add('FROM contrato'); Queryg.SQL.Add('WHERE data_inicio>=:data1' ); Queryg.SQL.Add('and data_fim <= :data2'); queryg.Params[0].AsDate:=data; queryg.Params[1].asdate:=data + 30; // data inicial + 30 dias queryg.Open;OBS: Procure não usar o mesmo nome para os parametrosabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Mario Lopes Postado Junho 6, 2012 Autor Denunciar Share Postado Junho 6, 2012 compoedata:='01'+'-'+inttostr(combobox1.ItemIndex+1)+'-'+edit1.Text;data:=strtodate(compoedata);vamos supor que sua data sejadata := '01-01-2012' // isso dependendo do banco de dados poderia ser '01/01/2012'se data tem o mesmo valor, ao executar a sql, os registros retornariam somente no intervalo de 1 dia ( ou seja, na mesma data )Queryg.SQL.Clear; Queryg.SQL.Add('SELECT *'); Queryg.SQL.Add('FROM contrato'); Queryg.SQL.Add('WHERE data_inicio>=:data1' ); Queryg.SQL.Add('and data_fim <= :data2'); queryg.Params[0].AsDate:=data; queryg.Params[1].asdate:=data; queryg.Open; se quiser um intervalo maior deveria ser Queryg.SQL.Clear; Queryg.SQL.Add('SELECT *'); Queryg.SQL.Add('FROM contrato'); Queryg.SQL.Add('WHERE data_inicio>=:data1' ); Queryg.SQL.Add('and data_fim <= :data2'); queryg.Params[0].AsDate:=data; queryg.Params[1].asdate:=data + 30; // data inicial + 30 dias queryg.Open;OBS: Procure não usar o mesmo nome para os parametrosabraçoOk JhonasPeço desculpa, a sua resposta diz tudo. Pura e simples distracção minha. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Mario Lopes
Boa tarde amigos
Porque o código seguinte não funciona para comprar datas. Isto é o resultado é nulo e não devia ser.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.