 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
tls_solucoes@hotmail.com Novato

Registrado: Quarta-Feira, 27 de Março de 2013 Mensagens: 75 Localização: AGUDOS-SP
|
Enviada: Seg Jun 03, 2013 9:10 pm Assunto: Ajuda, data + Oracle XE + DATETIMEPICKER [RESOLVIDO]. |
|
|
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 |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Seg Jun 03, 2013 11:13 pm Assunto: |
|
|
Você pode utilizar a propriedade Date do DateTimePicker:
| Código: | | ADOQInsert.Parameters.ParamByName('DTINCSIS').Value := DateTimePicker1.Date; |
|
|
| Voltar ao Topo |
|
 |
cyberdisk Colaborador

Registrado: Domingo, 4 de Julho de 2010 Mensagens: 2391 Localização: São José dos Campos - SP
|
Enviada: Seg Jun 03, 2013 11:17 pm Assunto: |
|
|
ADOQInsert.Parameters.ParamByName('EMP_DTINCSIS').Value := DateTimePicker1.DateTime;
abraço _________________ O conhecimento abre muitas portas |
|
| Voltar ao Topo |
|
 |
tls_solucoes@hotmail.com Novato

Registrado: Quarta-Feira, 27 de Março de 2013 Mensagens: 75 Localização: AGUDOS-SP
|
Enviada: Qua Jun 05, 2013 10:25 am Assunto: ! |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jun 05, 2013 10:56 am Assunto: |
|
|
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 |
|
 |
tls_solucoes@hotmail.com Novato

Registrado: Quarta-Feira, 27 de Março de 2013 Mensagens: 75 Localização: AGUDOS-SP
|
Enviada: Qua Jun 05, 2013 11:55 am Assunto: |
|
|
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 |
|
 |
marcieldeg Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011 Mensagens: 1054 Localização: Vitória - ES
|
Enviada: Qua Jun 05, 2013 1:33 pm Assunto: |
|
|
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 |
|
 |
tls_solucoes@hotmail.com Novato

Registrado: Quarta-Feira, 27 de Março de 2013 Mensagens: 75 Localização: AGUDOS-SP
|
Enviada: Qua Jun 05, 2013 2:12 pm Assunto: |
|
|
| 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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jun 05, 2013 2:17 pm Assunto: |
|
|
| 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 |
|
 |
tls_solucoes@hotmail.com Novato

Registrado: Quarta-Feira, 27 de Março de 2013 Mensagens: 75 Localização: AGUDOS-SP
|
Enviada: Qua Jun 05, 2013 2:28 pm Assunto: |
|
|
| 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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qua Jun 05, 2013 2:31 pm Assunto: |
|
|
Agora tenta com o código que o Batera sugeriu acima.
Os parâmetros do ADO não possuem o AsDate. |
|
| Voltar ao Topo |
|
 |
tls_solucoes@hotmail.com Novato

Registrado: Quarta-Feira, 27 de Março de 2013 Mensagens: 75 Localização: AGUDOS-SP
|
Enviada: Qui Jun 06, 2013 9:49 am Assunto: |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Jun 06, 2013 10:14 am Assunto: |
|
|
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 |
|
 |
tls_solucoes@hotmail.com Novato

Registrado: Quarta-Feira, 27 de Março de 2013 Mensagens: 75 Localização: AGUDOS-SP
|
Enviada: Sáb Jun 08, 2013 1:48 pm Assunto: |
|
|
inconsistência de dados esperava date recebeu number. _________________ " Não contavam com minha astúcia! Chapolin Colorado " |
|
| Voltar ao Topo |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sáb Jun 08, 2013 9:19 pm Assunto: |
|
|
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 |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|