ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Could not parse SQL TimeStamp string no DBGrid [Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
AnOnImUs.Info
Colaborador
Colaborador


Registrado: Quinta-Feira, 23 de Agosto de 2007
Mensagens: 1119
Localização: Goiânia - GO

MensagemEnviada: Seg Jun 30, 2008 1:47 pm    Assunto: Could not parse SQL TimeStamp string no DBGrid [Resolvido] Responder com Citação

Ola !

Estou com um pequeno problema.

em um DbGrid tenho um campo data.

onde ao deixa-lo vazio = ' / / ' o sistema esta apresentando a seguinte mensagem ao tentar mudar de campo.

Código:

Could not parse SQL TimeStamp string


ja tentei de diversas forma tratar o erro, mas ate o momento ainda nao encontrei uma plausivel.

se alguem tiver uma sugestao agradeço.
_________________
Reter o conhecimento é promover a ignorância !


Editado pela última vez por AnOnImUs.Info em Seg Jun 30, 2008 4:58 pm, num total de 2 vezes
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Jun 30, 2008 1:51 pm    Assunto: Responder com Citação

você deve estar fazendo o select sem nenhuma data informada, ex.:

select * from nomeTabela where campoData = ' / / '

é isso?
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
AnOnImUs.Info
Colaborador
Colaborador


Registrado: Quinta-Feira, 23 de Agosto de 2007
Mensagens: 1119
Localização: Goiânia - GO

MensagemEnviada: Seg Jun 30, 2008 1:55 pm    Assunto: Responder com Citação

nao meu mestre num e select naum... a select esta correta...
os valores sao lançados no clientdataset o problema esta sendo que este campo data o usuario podera alterar mas eu nao posso deixar o campo ficar vazio.

mas sempre que o usuario deixa ele vazio e tenta mudar de campo da esta mensagem.

ja tentei trata-la nos eventos.

OnColExit
BeforePost
OnValidate

mas ate agora nao conseguir achar uma solucao para este problema... ele perciste.
_________________
Reter o conhecimento é promover a ignorância !
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Jun 30, 2008 2:01 pm    Assunto: Responder com Citação

eu não trabalho como Clientdataset, mas se você verificar se o campo está vazio antes de gravar no banco? e se estiver vázio então faça com que o usuario digite a data. A não ser se tem algum evento deste componente que trate isso.


flw.
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
AnOnImUs.Info
Colaborador
Colaborador


Registrado: Quinta-Feira, 23 de Agosto de 2007
Mensagens: 1119
Localização: Goiânia - GO

MensagemEnviada: Seg Jun 30, 2008 2:14 pm    Assunto: Responder com Citação

bom meu mestre e exatamente esse o meu problema... pois o erro esta muito antes do Post no clientdataset.
_________________
Reter o conhecimento é promover a ignorância !
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Jun 30, 2008 2:34 pm    Assunto: Responder com Citação

AnOnImUs.Info escreveu:
bom meu mestre e exatamente esse o meu problema... pois o erro esta muito antes do Post no clientdataset.
Já tentou forçar então algo no onexit ou algum evento ai para não passar datas em branco tipo um if campo = vazio then raise exception.create('data em branco')
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Jun 30, 2008 2:43 pm    Assunto: Responder com Citação

Ou assim
Código:
procedure TSeuDataModuleOuForm.CampoDataSetText(Sender : TField; const Text : string);
begin
  if Trim(Text) = DateSeparator + '  ' + DateSeparator then
    Sender.Clear
  else
  begin
    TRY
        StrToDate(Text);
    EXCEPT
        MessageBox(Self.Handle,'Data Inválida !!','Atenção',mb_Ok or MB_ICONEXCLAMATION);
        Abort;
    END;
    Sender.AsString := Text;
  end;
end;

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Robertmc
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 30 de Setembro de 2004
Mensagens: 114

MensagemEnviada: Seg Jun 30, 2008 4:00 pm    Assunto: Responder com Citação

Me veio duas coisas na cabeça!!!!

1ª) Ja olhou se o problema é porque vc ta usando mascara?

2ª) Ja tentou inserir uma data inicial, no evento AfterInsert do ClientDataSet...

3ª) Veio até a mais agora escrevendo, coloca isso nun formulario e usa o DBEdit mesmo...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AnOnImUs.Info
Colaborador
Colaborador


Registrado: Quinta-Feira, 23 de Agosto de 2007
Mensagens: 1119
Localização: Goiânia - GO

MensagemEnviada: Seg Jun 30, 2008 4:34 pm    Assunto: Responder com Citação

1º - Sim, ja verifiquei e o problema nao e a mascara naum... sem ela tubo bem... eu ate consigo mudar e salvar desde que eu coloque Vazio (""), mas isso nao pode acontecer... entao tratei isso no BeforePost, onde se o campo for vazio... ele deve obrigar o usuario a digitar uma data.
Mas ai vem o outro problema que e!!!

se ele colocar um data invalida ex.: '32/01/2001';

o dbgrid apresenta a mesma mensagem de erro... e essa mensagem esta sendo dispara antes de qualquer outro evento que eu conheça.. a te mesmo antes do OnColExit.

2º - Sim, todos os registros que sao gerados ja vem com uma data informada... deixando a disposiçao do usuario a opcao de alterar essa data.

3º - Ja coloquei em um Edit, DbEdit, MasKEdit, neste componentes ate conseguir fazer o tratamento... mas infelizmente eles tem por obrigação a necessidade de virem em um DBGrid.
_________________
Reter o conhecimento é promover a ignorância !
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Robertmc
Aprendiz
Aprendiz


Registrado: Quinta-Feira, 30 de Setembro de 2004
Mensagens: 114

MensagemEnviada: Seg Jun 30, 2008 4:38 pm    Assunto: Responder com Citação

Cada campo da tabela tem um evento:

ONValidate, no campo, dentro da Tabela, ele funciona na hora q o campo recebe o valor... ja tentou testar e tratar o campo la

Use oo campo.clear se for preciso e um try Except
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Jun 30, 2008 4:38 pm    Assunto: Responder com Citação

Tentou da forma que eu postei ai?

Parece que foi assim que foi resolvido para outro usuario aqui do forum.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
AnOnImUs.Info
Colaborador
Colaborador


Registrado: Quinta-Feira, 23 de Agosto de 2007
Mensagens: 1119
Localização: Goiânia - GO

MensagemEnviada: Seg Jun 30, 2008 4:58 pm    Assunto: Responder com Citação

Prontinho... resolvido

Código:

procedure TForm.ClientDataSetDTA_VENCIMENTOSetText(
  Sender: TField; const Text: string);
begin
  try
    ClientDataSetDTA_VENCIMENTO.AsDateTime := StrToDateTime(Text);
  except
    Showmessage('Data inválida.',1)
  end;
end;

_________________
Reter o conhecimento é promover a ignorância !
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Jun 30, 2008 5:08 pm    Assunto: Responder com Citação

Então, o melhor lugar pra se tratar estas datas no clientdataset é no onSetText, como tinha postado ai.

Q bom que funcionou.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB