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 

DateTimePicker + Bind: "is not valid time" (D 10 Seattle)

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Nysp
Novato
Novato


Registrado: Terça-Feira, 4 de Mai de 2010
Mensagens: 22

MensagemEnviada: Qui Set 22, 2016 8:23 am    Assunto: DateTimePicker + Bind: "is not valid time" (D 10 Seattle) Responder com Citação

Bom dia,

estou utilizando o novo Delphi 10 Seattle e estou com um problema utilizando o DateTimePicker.

Tenho um campo em minha tabela (banco MySQL) do tipo "TIME NOT NULL DEFAULT '00:00:00'". Esse campo sempre trabalhei sendo somente time, nunca datetime.

Em meu antigo projeto com esse mesmo banco de dados, onde utilizava Delphi 7, eu utilizava um componente de terceiro com um DBDateTimePicker e funcionava perfeitamente.

Porém, com a migração do meu projeto para o D10 Seattle, não tenho mais componentes de terceiros e estou usando tudo nativo. Para campos de data e hora, estou utilizando o DateTimePicker e linkando eles com Bind nos campos de minha tabela, "transformando" eles em DBWare já que (como todos sabem) não existe um DBDateTimePicker natigo (mancada antiga da Embarcadero).

Para os campos de data, funciona perfeitamente. Mas para os campos de hora, não funciona. Alterei a propriedade Kind para dtkTime, linkei o componente no Bind com minha query e simplesmente, no momento de trocar a hora, aponta o erro seguinte erro: "30/12/1899 07:19:00' is not a valid time". Já tentei colocar no Format "HH:mm:ss" mas não adiantou.

Existe alguma propriedade ou algo que eu possa fazer sem que tenha que alterar o campo do meu banco de dados para datetime?

Quem puder colaborar, agradeço

Abraço a todos
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
3Soft-Oto
Novato
Novato


Registrado: Quarta-Feira, 14 de Setembro de 2016
Mensagens: 10

MensagemEnviada: Sex Set 23, 2016 11:15 am    Assunto: Responder com Citação

Você pode usar direto no SQL, http://forum.imasters.com.br/topic/224454-manipulando-data-no-sql-server-conteudo-alterado/, Talvez esse link ajude.

Acredito que você também possa retirar apenas o Time do DateTime dessa forma:
Código:

dt: TDateTimePicker;

var
  t: TTime;
begin
  t := StrToTime(TimeToStr(dt.Time));
end;

_________________
_____________________
XXXXXXXXXXXXXXXXXX
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular  
Nysp
Novato
Novato


Registrado: Terça-Feira, 4 de Mai de 2010
Mensagens: 22

MensagemEnviada: Sex Set 23, 2016 11:47 am    Assunto: Responder com Citação

3Soft-Oto escreveu:
Você pode usar direto no SQL, http://forum.imasters.com.br/topic/224454-manipulando-data-no-sql-server-conteudo-alterado/, Talvez esse link ajude.

Acredito que você também possa retirar apenas o Time do DateTime dessa forma:
Código:

dt: TDateTimePicker;

var
  t: TTime;
begin
  t := StrToTime(TimeToStr(dt.Time));
end;


3Soft-Oto, obrigado pela resposta, mas nenhuma das situações funciona.

Sobre alterar a SQL, eu teria que manipular o banco e,mesmo assim, no exemplo que você enviou ele está usando CAST ou CONVERT pois, como eu disse, estou usando Bind no componente DateTimePicker, convertendo ele para outro tipo irá aparecer um novo erro. Fora que é um insert na tabela, o resultado final ainda teria que ser do tipo Time, como está no banco de dados.

Sobre o código que você postou, não há evento para ele ser passado pois estou usado Bind. O Bind linka o componente diretamente a minha Query/Table, fazendo ele ter o comportamento de um componente DBWare. Não conheço nenhum evento no DateTimePicker que seja chamado antes do Bind já enviar o resultado para a tabela. Isso só funcionaria, caso algum evento fosse anterior a alteração do valor na tabela, o que não acho que exista (testei em vários e nenhum funcionou).

Caso alguém ainda possa ajudar de outra forma, agradeço.
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