Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marostegan

[Resolvido] problema com formatação de data

Recommended Posts

olá pessoa!!

 

estou copm um probleminha com o campo data quando vou transferir dados de uma tabela para outra usando um comando SQL:

 

na minha tabela de clientes (tbl_clientes) tenho um campo relacionado com uma outra tabela (tbl_clientes_detalhes) que sao os pagamentos em aberto. nela posso incluir pendencias.

 

depois tem umaa terceira tabela relacionada que é a tbl_clientes_baixa - que quando o cliente paga, eu do baixa e as contas vem pra essa tabela.

 

tudo funciona quase uma maravilha, se não fosse o campo data.

 

Problema:

 

- se eu cadastrar uma data: 10/12/2008 e depois der baixa, tudo funciona belezinha...

 

Porém......

 

- seu eu cadastrar uma data 01/01/2009 e tentar baixar o seguinte erro é apresentado: "tipo de dados incompativel na expressão critério"

 

você olhando na DBGrid a data fica 1/1/2009 de você entrar pra editar ela fica assim: _1/_1/2009 surge esse _ na fernte do 1 e ele exclui o zero.

 

tentei no banco de dados tirar esse campo de data e mudar para texto, mas nao adiantou...

 

qual a solução para isso??

 

Informações:

 

Como fiz a formatação do campo?

 

- entrei no DataModule

- no ADOQuery apertei CTRL+F para mostrar todos os campos da tabela

- no campo data fui na EditMask clique nos ...

- formatei da seguinte maneira: !99/99/9999;1;_

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isso não gosto de editar direto em componentes db hehehe... mas como é o código que está usando para gravar no BD?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por isso não gosto de editar direto em componentes db hehehe... mas como é o código que está usando para gravar no BD?

 

entao amigo... mas se nao formatar pelo ADOQuery... como formatar entao??

 

 

bom, pra gravar num tem problema... do um Post e boa...

 

o problema é na hora de ransferir os dados de uma tabela pra outra...

 

ai uso o codigo:

 

dm.q_relatorio_clientes_pg.Close;
dm.q_relatorio_clientes_pg.SQL.Clear;
dm.q_relatorio_clientes_pg.SQL.Add('Insert into tbl_relatorio_clientes_pg(codigo, data, n_pagamento, valor, baixa, referencia, usuario) values ('''+db_codigo.Text+''','''+db_data.Text+''','''+db_num.Text+''','''+db_valor.Text+''','''+db_baixa.Text+''', '''+db_referencia.Text+''', '''+f_carrega.Label1.Caption+''')');
dm.q_relatorio_clientes_pg.ExecSQL;
Showmessage ('Baixa efetuada com sucesso!');
dm.t_relatorio_clientes.Delete;

 

qual a solução para isso?

 

o probelam é que na hora de transferi ele tira o zero do inicio (01/03/2009) e fica assim _1/_3/2009

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentou formatar sua data antes usando o FormatDateTime?

 

try
	dm.q_relatorio_clientes_pg.Close;
	dm.q_relatorio_clientes_pg.SQL.Clear;
	dm.q_relatorio_clientes_pg.SQL.Add('Insert into tbl_relatorio_clientes_pg
					  (codigo, data, n_pagamento, valor, baixa, referencia, usuario) values  
					  ('''+db_codigo.Text+''','''
					  +FormatDateTime('yyyy-mm-dd hh:mm:ss',StrToDateTime(db_data.Text + ' 00:00:00'))+''','''
					  +db_num.Text+''','''+db_valor.Text+''','''+db_baixa.Text+''', '''+db_referencia.Text+''','''
					  +f_carrega.Label1.Caption+''')');
	dm.q_relatorio_clientes_pg.ExecSQL;
	Showmessage ('Baixa efetuada com sucesso!');
	dm.t_relatorio_clientes.Delete;
except
	 on e: exception do
		  showmessage('Erro: ' + e.message);
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

ixi...

 

não deu certo nao!!!

tentei desse jeito deu o seguinte erro:

 

 

' /7///20800:00:00' is not a valid date and time

 

depois tentei assim:

 

'''+FormatDateTime('dd/mm/yyyy',StrToDateTime(f_ordem_de_servico.DBEdit2.Text))+'''

e deu o erro:

 

' /7///208' is not a valid date and time

 

 

ah... meu BD é ACCESS

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal, depois de inumeras tentaivas achei na net uma solução (com ajuda de outros amigos em foruns)

 

e como mais pessoas possam vir ter esse mesmo problema vou postar aqui a solução que deu certo aqui pra mim....

 

-- Eu precisava que meu DBEdit ficasse formatado pra receber a data, assim: / / (00/00/0000) então eu fui no DataModule, ADOQuery, dei 2 clique, apertei CTRL+F (para aparecer td campos) ai selecionei o campo data, fui no EditMask e formatei da seguinte forma: !99/99/9999;1;_

 

bom até ai quase tudo bem, o DBdit ficou formatado da forma que eu precisava. Porém quando eu usava um comando SQL pra transferir esses dados de uma tabela pra outra (do BD) dava erro caso a data tivesse 0 (01/01/2009 , por exemplo) pois acontecia o seguinte: _1/_1/2009 e para o campo data dava erro ao receber esse caracter "_".

 

Então a solução foi:

 

Para modificar a forma como um campo do dataset, do tipo data, é apresentada na tela, voce deve usar a propriedade DisplayFormat do campo (field) em questão e, para este caso, a string de formatação seria: dd/mm/yyyy.

Já a propriedade EditMask é uma máscara utilizada para formatar a edição do campo. Vai definir a formatação da entrada de dados, que tipo de caracteres são aceitos...

na verdade a solução foi bem mais simples do que eu imaginava e deu certo, agora funciona exatamente do jeito que eu precisava!

 

é isso ai, espero que isso possa ser útil pra mais pessoas!

 

abraços e FELIZ 2009 a todos!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.