Pablo AG 0 Denunciar post Postado Dezembro 19, 2005 Bom Pessoal, na verdade tenho dois problemas. O primeiro é o sequinte: Quero comparar a data de entrega de um pedido com a data do dia (data do sistema) e mostrar em um Edit a quantidade de pedidos em atraso, mas esta dando erro na comparação das datas. Estou fazendo assim: // FAZER SOMA DA QUANTIDADE DE PEDIDOS EM ATRASOif (modulo2.cds_PedidosDATA_ENTREGA > Date) then edtAtraso.Text := FloatToStr(grdTransp.DataSource.DataSet.RecordCount); O segundo é o seguinte: Estou fazendo uma função SQL para mostrar a soma dos produtos em uma determinada seleção, mas o que me aparece no Edit é a própria função. // FAZER SOMA DE PRODUTOS REFERENTES AOS PEDIDOS SELECIONADOSsqlQtdProduto.Close;sqlQtdProduto.SQL.Clear;sqlQtdProduto.SQL.Add('select sum(qtde_pecas) from pedidos');sqlQtdProduto.ExecSQL;edtProdutos.Text := sqlQtdProduto.SQL.Text; Agradeço desde já Pablo Aguillar Compartilhar este post Link para o post Compartilhar em outros sites
bastard2003 4 Denunciar post Postado Dezembro 19, 2005 bom vamos la... primeiro problema.... não sei qual o erro que ta dando mas assim deve resolver... declara a unit DateUtils ai faz assim... // FAZER SOMA DA QUANTIDADE DE PEDIDOS EM ATRASOif (modulo2.cds_PedidosDATA_ENTREGA.value > Date) then edtAtraso.Text := IntToStr(DaysBetween(modulo2.cds_PedidosDATA_ENTREGA.Value, date));não precisa ser float pq vai ser um inteiro sempre entre datas... essa funçao ali vai te retornar um inteiro... ja a segunda... só o final dela ta errado... se você atribuir o sql.text ele vai te dar o comando sql q tem dentro da qrry... se você quer pegar o valor você faz assim... so vou atribuir um nome ao campo... sqlQtdProduto.Close;sqlQtdProduto.SQL.Clear;sqlQtdProduto.SQL.Add('select sum(qtde_pecas) as quantidade from pedidos');sqlQtdProduto.ExecSQL;edtProdutos.Text := sqlQtdProdutoQuantidade.AsString;// ou ainda//edtProdutos.Text := sqlQtdProduto.Fields.FieldByName('Quantidade').AsString; no caso de você ta usando ADO, se for BDE é sem o Fields... se eu não me engano! :natalbiggrin:qualquer coisa... posta ai que a galera ajuda!! Compartilhar este post Link para o post Compartilhar em outros sites
Pablo AG 0 Denunciar post Postado Dezembro 20, 2005 Bastard2003 obrigado novamente pelo Guia D7 e pelas ajuda no post. Bem, a função para executar o Query deu tudo Ok, que mico heim ....hehehe ... um dia eu chego lá, mas a comparação das datas para pegar a quantidade de pedidos em atraso não esta calculando corretamente. Ex. Fiz um filtro dos meus pedidos de Amostra, peguei 104 pedidos, nos quais 28 estão em atraso e ele me mostra somente que 14 estão em atraso. Se tiver uma dica pra fazer com Query (SQL) ou outra forma agradeço tb .... Abraço Pablo Aguillar PS. if (modulo2.cds_PedidosDATA_ENTREGA.value > Date) then o correto é ..... if (modulo2.cds_PedidosDATA_ENTREGA.value < Date) then Compartilhar este post Link para o post Compartilhar em outros sites
bastard2003 4 Denunciar post Postado Dezembro 21, 2005 nem esquenta veio.... isso acontec.. ehehhe... viu... eu tb errei ali!! hehehe.... errar é humano... e é errando que se aprende! hehehe cara... a questão do sql... tu teria q me disser qual banco você ta usando.. pq cada banco tem uma maneira de tratar datas... mas acho que um sql simples do tipo... select count(DATA_ENTREGA) as quantidade from pedido where DATA_ENTREGA < :data ai tu passa pra esse parametro ali a data atual... qualquer coisa.. chama ai! Abraços e sucesso! Compartilhar este post Link para o post Compartilhar em outros sites
Pablo AG 0 Denunciar post Postado Dezembro 21, 2005 Bastard2003, o bco que estou usando é o firebird Fiz assim o que me mandou no post, // FAZER SOMA DA QUANTIDADE DE PEDIDOS EM ATRASOsqlPedAtraso.Params[00].Value := Date;sqlPedAtraso.Close;sqlPedAtraso.SQL.Clear;sqlPedAtraso.SQL.Add('select count(DATA_ENTREGA) as quantidade from pedidos where DATA_ENTREGA < :DATA');sqlPedAtraso.ExecSQL;edtAtraso.Text := sqlPedAtrasoQUANTIDADE.AsString; add o parametro data do tipo ftDate, mas esta dizendo "No value for parameter 'DATA' " A forma que atribui a data esta correta ? fiz desta forma para ver se estava recebendo a data atual corretamente e esta tudo OK sqlPedAtraso.Params[00].Value := Date;edtAtraso.Text := sqlPedAtraso.Params[00].Value; Aiaiaiaiai heim ...... o cara aqui só da trabalho .... Compartilhar este post Link para o post Compartilhar em outros sites
bastard2003 4 Denunciar post Postado Dezembro 21, 2005 nem esquenta veio.. tamo aqui pra se ajudar mesmo... faz assim: with sqlPedAtraso do begin Close; ParamByName('Data').Value := Date; Open; end; sendo que a tua qry vai ter como sql select count(DATA_ENTREGA) as quantidade from pedidos where DATA_ENTREGA < :DATA duas dicas... como o sql vai ser fixo... so vai mudar a data... tu não precisa ficar passando ele de novo.. basta passar o valor do parametro e pronto.. sempre com a qry fechada.... outra... usa ExecSQL, so pra insert, update, drop, create, etc... essas coisas... literalemente os que vão afetas "modificações" na base... pra select tu passa open mesmo... testa ai.. qualquer coisa... prega o grito! Compartilhar este post Link para o post Compartilhar em outros sites
Pablo AG 0 Denunciar post Postado Dezembro 21, 2005 Bastard2003, agora deu tudo OK .....Obrigadão mesmo pela ajuda .....Abraço véio Compartilhar este post Link para o post Compartilhar em outros sites
bastard2003 4 Denunciar post Postado Dezembro 21, 2005 beleza véio... qualquer duvida... use o forum! abraços e sucesso! Compartilhar este post Link para o post Compartilhar em outros sites