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 

Ajuda, data + Oracle XE + DATETIMEPICKER [RESOLVIDO].

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
tls_solucoes@hotmail.com
Novato
Novato


Registrado: Quarta-Feira, 27 de Março de 2013
Mensagens: 75
Localização: AGUDOS-SP

MensagemEnviada: Seg Jun 03, 2013 9:10 pm    Assunto: Ajuda, data + Oracle XE + DATETIMEPICKER [RESOLVIDO]. Responder com Citação

Boa noite amigos, precisava da ajuda de vocês.
Tenho seguinte situação tenho no meu BANCO ORACLE XE dois campos DATE dentro da TABELA EMPRESA:
Tenho esses campos:
Citação:
EMP_DTINCSIS DATE
EMP_DTABT DATE


E na minha aplicação em DELPHI 7 tenho dois campos DATETIMEPICKER,
que é a data de inclusão ao sistema, e a data de abertura da empresa,
como que eu faço para eu inserir os dados contidos nos DATETIMEPICKER, enviar para o meu banco oracle.
Minha estrutura está assim para dar INSERT:
Citação:

//configurando parametros para a query de insert.

ADOQInsert.SQL.Clear;
ADOQInsert.SQL.Add('INSERT INTO EMPRESA(EMP_CD, EMP_NMFANT, EMP_RZSOC, EMP_CNPJ, EMP_INSCEST, EMP_INSCMUN, EMP_END, EMP_NEND, EMP_CEP, EMP_MUN, EMP_COMP, EMP_ESCCONT, EMP_TEL, EMP_CEL, EMP_SITE, ' + ' EMP_EMAIL, EMP_DTINCSIS, EMP_DTABT, EMP_BAIRRO, EMP_UF, EMP_PGSOC, EMP_CELDOIS, EMP_TESC, EMP_ENDESC, EMP_NENDESC)');
ADOQInsert.SQL.Add('VALUES(:CODIGO, :NMFANT, :RZSOC, :CNPJ, :INSCEST, :INSCMUN, :ENDERECO, :NEND, :CEP, :MUN, :COMP, :ESCCONT, :TEL, :CEL, :SITE, :EMAIL, :DTINCSIS, :DTABT, :BAIRRO, :UF, :PGSOC, :CELDOIS, :TELESC, :ENDESC, :NENDESC)');

//passando valores para query de insert.

ADOQInsert.Parameters.ParamByName('CODIGO').Value := StrToInt(edt_Codigo.Text);
ADOQInsert.Parameters.ParamByName('NMFANT').Value := edt_NmFantasia.Text;
ADOQInsert.Parameters.ParamByName('RZSOC').Value := edt_RzSocial.Text;
ADOQInsert.Parameters.ParamByName('CNPJ').Value := edt_Cnpj.Text;
ADOQInsert.Parameters.ParamByName('INSCEST').Value := edt_InscEstadual.Text;
ADOQInsert.Parameters.ParamByName('INSCMUN').Value := edt_InscMunicipal.Text;
ADOQInsert.Parameters.ParamByName('ENDERECO').Value := edt_Endereco.Text;
ADOQInsert.Parameters.ParamByName('NEND').Value := edt_NEndereco.Text;
ADOQInsert.Parameters.ParamByName('CEP').Value := edt_Cep.Text;

//Executando a query de insert.

ADOQInsert.ExecSQL;


Se vocês souberem agradeço desde a a forcinha.
_________________
" Não contavam com minha astúcia! Chapolin Colorado "


Editado pela última vez por tls_solucoes@hotmail.com em Seg Jun 10, 2013 8:01 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Seg Jun 03, 2013 11:13 pm    Assunto: Responder com Citação

Você pode utilizar a propriedade Date do DateTimePicker:
Código:
ADOQInsert.Parameters.ParamByName('DTINCSIS').Value := DateTimePicker1.Date;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
cyberdisk
Colaborador
Colaborador


Registrado: Domingo, 4 de Julho de 2010
Mensagens: 2391
Localização: São José dos Campos - SP

MensagemEnviada: Seg Jun 03, 2013 11:17 pm    Assunto: Responder com Citação

ADOQInsert.Parameters.ParamByName('EMP_DTINCSIS').Value := DateTimePicker1.DateTime;

abraço
_________________
O conhecimento abre muitas portas
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
tls_solucoes@hotmail.com
Novato
Novato


Registrado: Quarta-Feira, 27 de Março de 2013
Mensagens: 75
Localização: AGUDOS-SP

MensagemEnviada: Qua Jun 05, 2013 10:25 am    Assunto: ! Responder com Citação

Amigos, fiz o seguinte:
Citação:

ADOQInsert.Parameters.ParamByName('DTINCSIS').Value := dtp_dtincsis.Date;
ADOQInsert.Parameters.ParamByName('DTABT').Value := dtp_dtabemp.Date;


Só que o seguinte, ocorreu um erro no ORACLE: ESPERAVA DATE E ESTAVA INDO NUMBER, ai eu fui no banco e alterei para VARCHAR2 os campos para ver o que a minha aplicação estava enviando, ai executei o meu sistema compilo, inseri os dados e eles gravaram, ai fui no banco e a aplicação esta gravando assim:
Citação:

EMP_DTINCSIS : 41430.8742389352
EMP_DTABT : 40485.8742389352


Tem que ser feito algum tratamento para ele inserir no meu banco no formato data? : DD/MM/AAAA

Obrigado pela força.
_________________
" Não contavam com minha astúcia! Chapolin Colorado "
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jun 05, 2013 10:56 am    Assunto: Responder com Citação

Bom dia,

Não tenho experiência com o Oracle, mas experimente configurar a propriedade Time dos DateTimePickers igual a 00:00:00 e mantenha o código sugerido anteriormente.

Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imobiliarias-em-suzano
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tls_solucoes@hotmail.com
Novato
Novato


Registrado: Quarta-Feira, 27 de Março de 2013
Mensagens: 75
Localização: AGUDOS-SP

MensagemEnviada: Qua Jun 05, 2013 11:55 am    Assunto: Responder com Citação

imex escreveu:
Bom dia,

Não tenho experiência com o Oracle, mas experimente configurar a propriedade Time dos DateTimePickers igual a 00:00:00 e mantenha o código sugerido anteriormente.

Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imobiliarias-em-suzano


Eu não quero pegar a hora, no campo do banco precisa armazenar somente a data, mas no caso como que eu configuro ?
_________________
" Não contavam com minha astúcia! Chapolin Colorado "
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Qua Jun 05, 2013 1:33 pm    Assunto: Responder com Citação

Tente assim:

Código:
ADOQInsert.Parameters.ParamByName('EMP_DTINCSIS').AsDateTime := DateTimePicker1.DateTime;


Ou se for só a data:

Código:
ADOQInsert.Parameters.ParamByName('EMP_DTINCSIS').AsDate := DateTimePicker1.Date;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tls_solucoes@hotmail.com
Novato
Novato


Registrado: Quarta-Feira, 27 de Março de 2013
Mensagens: 75
Localização: AGUDOS-SP

MensagemEnviada: Qua Jun 05, 2013 2:12 pm    Assunto: Responder com Citação

marcieldeg escreveu:
Tente assim:

Código:
ADOQInsert.Parameters.ParamByName('EMP_DTINCSIS').AsDateTime := DateTimePicker1.DateTime;


Ou se for só a data:

Código:
ADOQInsert.Parameters.ParamByName('EMP_DTINCSIS').AsDate := DateTimePicker1.Date;

Amigo fiz isso que voce falou:

Citação:

ADOQInsert.Parameters.ParamByName('DTINCSIS').asDate := dtp_dtincsis.date;
ADOQInsert.Parameters.ParamByName('DTABT').asDate := dtp_dtabemp.date;

UNDECLARED IDENTIFIER: 'aSDate'
_________________
" Não contavam com minha astúcia! Chapolin Colorado "
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jun 05, 2013 2:17 pm    Assunto: Responder com Citação

Para configurar a propriedade Time como eu disse anteriormente você deve selecionar o DateTimePicker, abrir a janela Object Inspector (F11) e então preencher a propriedade Time.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tls_solucoes@hotmail.com
Novato
Novato


Registrado: Quarta-Feira, 27 de Março de 2013
Mensagens: 75
Localização: AGUDOS-SP

MensagemEnviada: Qua Jun 05, 2013 2:28 pm    Assunto: Responder com Citação

imex escreveu:
Para configurar a propriedade Time como eu disse anteriormente você deve selecionar o DateTimePicker, abrir a janela Object Inspector (F11) e então preencher a propriedade Time.

A propiedade time deiei 00:00:00
só que ele continua com o erro UNDECLARED IDENTIFIER 'aSDaTE'.
:\
_________________
" Não contavam com minha astúcia! Chapolin Colorado "
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qua Jun 05, 2013 2:31 pm    Assunto: Responder com Citação

Agora tenta com o código que o Batera sugeriu acima.
Os parâmetros do ADO não possuem o AsDate.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tls_solucoes@hotmail.com
Novato
Novato


Registrado: Quarta-Feira, 27 de Março de 2013
Mensagens: 75
Localização: AGUDOS-SP

MensagemEnviada: Qui Jun 06, 2013 9:49 am    Assunto: Responder com Citação

Bom Dia Amigos,
infelizmente não funcionou, fiz o código sugerido pelo batera, mais dá o INSERT tranquilo mais porem, na hora que ele grava grava assim no banco:
Citação:

EMP_DTINCSIS : 41429
EMP_DTABT : 40701.8742389352

---------------- código ------------------------

ADOQInsert.Parameters.ParamByName('DTINCSIS').Value := dtp_dtincsis.date;
ADOQInsert.Parameters.ParamByName('DTABT').Value := dtp_dtabemp.date;

_________________
" Não contavam com minha astúcia! Chapolin Colorado "
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Jun 06, 2013 10:14 am    Assunto: Responder com Citação

Bom dia,

Agora experimente alterar novamente os campos no banco de dados para o tipo Date.

obs: reparei pelo valor do campo EMP_DTABT que o DateTimePicker correspondente não está com a propriedade Time igual a 00:00:00

Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
tls_solucoes@hotmail.com
Novato
Novato


Registrado: Quarta-Feira, 27 de Março de 2013
Mensagens: 75
Localização: AGUDOS-SP

MensagemEnviada: Sáb Jun 08, 2013 1:48 pm    Assunto: Responder com Citação

inconsistência de dados esperava date recebeu number.
_________________
" Não contavam com minha astúcia! Chapolin Colorado "
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sáb Jun 08, 2013 9:19 pm    Assunto: Responder com Citação

Experimente para teste deixar a passagem dos parâmetros da seguinte forma:

Código:
ADOQInsert.Parameters.ParamByName('DTINCSIS').Value := Date;
ADOQInsert.Parameters.ParamByName('DTABT').Value    := Date + 1;



Se o erro persistir, experimente alterar o trecho da instrução SQL onde estão os parâmetros mais ou menos como segue:

Código:
STR_TO_DATE(:DTINCSIS, '%d/%m/%Y'), STR_TO_DATE(:DTABT, '%d/%m/%Y'),


e a passagem dos valores:

Código:
ADOQInsert.Parameters.ParamByName('DTINCSIS').Value := FormatDateTime('dd/mm/yyyy', dtp_dtincsis.date);
ADOQInsert.Parameters.ParamByName('DTABT').Value    := FormatDateTime('dd/mm/yyyy', dtp_dtabemp.date);


Apesar que não tenho nenhuma experiência com o Oracle, então não sei se vai funcionar ou se existe uma forma melhor.

Espero que ajude.
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