Fórum Atribuir resultado de query numa variavel #192642
04/11/2003
0
Ainda não consigo descobrir o tal intervalo em dias entre datas. Nào pelas sugestoes dadas...Funcionou com a daysbetween. Porém o teste foi feito usando edits comuns. Aí é que está, eu tenho q capturar data de um edit e a outra de uma query. A da query está dando erro. Não aguento mais...
EConvertError with message ´is not a valid date´
Estou fazendo assim:
datamaior := strtodate(edtDataNasc.Text);
datamenor := strtodate(module.query.fields[0].AsString);
Já tentei mudar o Fields[0].AsString para AsDateTime, AsVariant , nada funciona !!!
Na minha tabela, fields[0], que é o campo ´data´ está definido como string. Tb já mudei para Date, mas sem sucesso...
QUEM PODE ME AJUDAR ????
:cry: :cry: :cry:
Ana Davis
Ana Davis
Curtir tópico
+ 0Posts
04/11/2003
Lindomar.des
Verifique se a data que está vindo da query está no formato dd/mm/yy.
Este erro, como já deve saber, só ocorre quando a data que está sendo passada para a função é uma data inválida. Teria como vc fazer o teste usando diretamente o campo da query ex:
strtodate(minhaquerymenucampo.value).
suponho que as variáveis usadas são do tipo data, usando o campo como citei acima, não precisaria da função strtodate().
Lindomar Sampaio
Vila Velha-ES
Gostei + 0
04/11/2003
Carlosrm
Você precisará saber primeiro em que formato está obtendo a datamenor da query. Pode estar ´31/01/2003´ ou ´01/31/2003´ , por exemplo. Entre outras coisas, o formato da data depende de qual Gerenciador de Banco de Dados (ou de Arquivos) você está usando.
De qualquer modo, o formato deve ser o mesmo para ambas as datas, para poder executar a função between(), usar a diferença entre datas, ou ainda uma função que você mesmo tenha desenvolvido.
Num caso desses, a primeira coisa que eu faria seria verificar o formato da data que sai da query, para ver se é compatível, ou se preciso alterar o formato.
Assim que executar sua query, por exemplo, só para ver o formato, use
showmessage(module.query.fields[0].AsString);
Atente que se resultar em 02/04/2003, a dúvida persiste (m/d ou d/m ?).
Ou use outra maneira que você ache mais prático. Há outros caminhos, também. Espero ter ajudado. carlosrm.
Gostei + 0
04/11/2003
Ildefonso
Algo como:
var dataIni, dataFim: TDateTime; begin dataIni := module.query[´DataInicial´]; ...
...deve dara certo. Já experimentei usar os campos indexados por número e sempre houveram problemas. Para ver isso, crie um ciclo e imprima o nome dos campos: module.query.fields[ii].name; Algumas vezes a ordem dos campos muda um pouco.
Usar module.query[´NomedoCampo´] trás o valor do campo já em seu tipo apropriado, no caso, uma data.
Além disso, qual é o banco de dados que você está usando?
Qual versão?
Gostei + 0
04/11/2003
Cirilo
Veja um exemplo para Interbase 6 opensource
with fDMEng.qryMovimento do begin SelectSQL.Clear; SelectSQL.Add(´SELECT * FROM MOVIMENTO´); SelectSQL.Add(´WHERE DATA=´+#39+FormatDateTime(´mm/dd/yyyy´,date)+39+´ AND MOVIMENTO="S" ORDER BY´); SelectSQL.Add(´IDMOVIMENTO´); SelectSQL.Open; end; //with
Gostei + 0
04/11/2003
Ana Davis
Vou fazer uma tentativa. Dou retorno qd conseguir...
Respondendo o Idelfonso, eu estou usando o velho Paradox msm.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)