locked
Duvidas ao incluir campo data no access usando vb net RRS feed

  • Pergunta

  • Boa tarde!

    Estou criando uma aplicação desktop. a princípio era um programa apenas para coletar algumas informações... Estou usando uma classe para incluir os registros:

    no botão incluir: ....

    Dim m_dtNasc AsDateTime= txtDtNasc.Text ' DateTimePicker

    (já usei a variável m_dtNasc e o campo do formulário txtDtNasc.text que é um controle datetimepicker)

    ......

    Try

    acc.incluirDados(txtNome.Text, sSex, cboSSo.Text, m_dtNasc, txtEnd.Text, txtNro.Text, txtCompl.Text, txtBairro.Text, txtMunicipio.Text, cboEstado.Text, txtCEP.Text, txtTel1.Text, txtTel2.Text, txtTel3.Text, txtResponsavel.Text, txtAtividades.Text, txtAnalise.Text, TxtSugestao.Text, txtObservacao.Text)

    MsgBox("Dadados Salvos com sucesso!")   

    Catchex AsException

                MsgBox("Erro ao incluir dados!")

    EndTry

    e na Classe inclusão de dados:  

    PublicSubincluirDados(ByValNome AsString, ByValSexo AsString, ByValAgente AsString, ByValNascimento AsString, ByValEndereco AsString, ByValNro AsString, ByValComplemento AsString, ByValBairro AsString, ByValMunicipio AsString, ByValEstado AsString, ByValCep AsString, ByValTel1 AsString, ByValTel2 AsString, ByValTel3 AsString, ByValResponsavel AsString, ByValAtividade AsString, ByValAnalise AsString, ByValSugestao AsString, ByValObservacao AsString)

    Try

    cn = getConexaoDB()

    Cmd.Connection = cn

    Cmd.CommandText =

    "INSERT INTO Cliente(Nome,Sexo,Agente,Nascimento,Endereco,Nro,Complemento,Bairro,Municipio,Estado,Cep,Tel1,Tel2,Tel3,Responsavel,Atividade,Analise,Sugestao,Observacao)"& _"VALUES('"& Nome & "','"& Sexo & "','"& Agente & "' , "& Nascimento & ",'"& Endereco & "','"& Nro & "','"& Complemento & "', '"& Bairro & "','"& Municipio & "', '"& Estado & "','"& Cep & "', '"& Tel1 & "', '"& Tel2 & "', '"& Tel3 & "', '"& Responsavel & "','"& Atividade & "','"& Analise & "','"& Sugestao & "', '"& Observacao & "' "& ")"


                Cmd.ExecuteNonQuery()

       

    Catchex AsException

               

    Throwex

       

    Finally

                closeConexaoDB(cn)

    EndTry

    EndSub

    Bom finalizando, a data de nascimento vem do form de um controle datetimepicker olhando as variáveis ela vem certinha, mas ao incluir no Access é gravada a data 30/12/1899 (???????)

    Como eu contorno isto? Engraçado que na rotina de alterar, ela fica exatamente como o alterado(??????) O campo no Access é um campo data hora , formato Data abreviada..... ( Obs: Na classe já usei na variável Nascimento tanto string como text que o resultado é o mesmo)

    Fico no aguardo de como resolver isto. Obrigado


    helio Passos

    quinta-feira, 16 de julho de 2015 17:06

Respostas

  • Pessoal,

    Finalmente resolvi essa questão. Numa classe  inclusão de dados:  

    PublicSubincluirDados(ByValNome AsString, ByValSexo AsString, ByValAgente AsString, ByVal Nascimento As Date, ByValEndereco AsString, ByValNro AsString, ByValComplemento AsString, ByValBairro AsString, ByValMunicipio AsString, ByValEstado AsString, ByValCep AsString, ByValTel1 AsString, ByValTel2 AsString, ByValTel3 AsString, ByValResponsavel AsString, ByValAtividade AsString, ByValAnalise AsString, ByValSugestao AsString, ByValObservacao AsString)

    Try

    cn = getConexaoDB()

    Cmd.Connection = cn

    Cmd.CommandText =

    "INSERT INTO Cliente(Nome,Sexo,Agente,Nascimento,Endereco,Nro,Complemento,Bairro,Municipio,Estado,Cep,Tel1,Tel2,Tel3,Responsavel,Atividade,Analise,Sugestao,Observacao)"& _"VALUES('"& Nome & "','"& Sexo & "','"& Agente & "' , " & Nascimento & ", '"& Endereco & "','"& Nro & "','"& Complemento & "', '"& Bairro & "','"& Municipio & "', '"& Estado & "','"& Cep & "', '"& Tel1 & "', '"& Tel2 & "', '"& Tel3 & "', '"& Responsavel & "','"& Atividade & "','"& Analise & "','"& Sugestao & "', '"& Observacao & "' "&")"

                Cmd.ExecuteNonQuery()

    ...... etc....

    Na string , " & Nascimento & ",  eu teria que colocar:  aspa simples aspa dupla & variável & aspa dupla aspa simples, então ficou assim:  '" & Nascimento & "' , '" & ....  Funcionou. o campo nascimento na tabela access é data hora e no Form estou usando DateTimePicker. A data quando eu incluía mudava para 30/12/1899 e agora está sendo gravada a data corretamente.

    Agradeço a todos que se empenharam para me ajudar. Muito obrigado mesmo.

    Tópico encerrado e concluído.


    helio Passos

    • Marcado como Resposta Marcos SJ terça-feira, 18 de agosto de 2015 12:51
    segunda-feira, 17 de agosto de 2015 22:00

Todas as Respostas

  • Olá Hélio, tudo bem?

    Peço que verifique esta outra thread para ver se a solução aqui te dá uma ideia do que você pode fazer diferente para chegar a solução do seu problema.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 16 de julho de 2015 20:50
  • Na verdade não me ajudou muito, pois este thread me ajudaria se fosse para formatar o datetimepicker com null, o meu problema está quando incluo a data no access, em que ela se transforma em 30/12/1899 (????). E Se o campo na tabela em access for tipo texto, qual seria a forma correta para mostrar no formulário quando ler o registro (mostrar a data no datatimepicker?

    helio Passos


    • Editado HelioPassos sexta-feira, 17 de julho de 2015 15:24
    sexta-feira, 17 de julho de 2015 15:11
  • Pessoal,

    Finalmente resolvi essa questão. Numa classe  inclusão de dados:  

    PublicSubincluirDados(ByValNome AsString, ByValSexo AsString, ByValAgente AsString, ByVal Nascimento As Date, ByValEndereco AsString, ByValNro AsString, ByValComplemento AsString, ByValBairro AsString, ByValMunicipio AsString, ByValEstado AsString, ByValCep AsString, ByValTel1 AsString, ByValTel2 AsString, ByValTel3 AsString, ByValResponsavel AsString, ByValAtividade AsString, ByValAnalise AsString, ByValSugestao AsString, ByValObservacao AsString)

    Try

    cn = getConexaoDB()

    Cmd.Connection = cn

    Cmd.CommandText =

    "INSERT INTO Cliente(Nome,Sexo,Agente,Nascimento,Endereco,Nro,Complemento,Bairro,Municipio,Estado,Cep,Tel1,Tel2,Tel3,Responsavel,Atividade,Analise,Sugestao,Observacao)"& _"VALUES('"& Nome & "','"& Sexo & "','"& Agente & "' , " & Nascimento & ", '"& Endereco & "','"& Nro & "','"& Complemento & "', '"& Bairro & "','"& Municipio & "', '"& Estado & "','"& Cep & "', '"& Tel1 & "', '"& Tel2 & "', '"& Tel3 & "', '"& Responsavel & "','"& Atividade & "','"& Analise & "','"& Sugestao & "', '"& Observacao & "' "&")"

                Cmd.ExecuteNonQuery()

    ...... etc....

    Na string , " & Nascimento & ",  eu teria que colocar:  aspa simples aspa dupla & variável & aspa dupla aspa simples, então ficou assim:  '" & Nascimento & "' , '" & ....  Funcionou. o campo nascimento na tabela access é data hora e no Form estou usando DateTimePicker. A data quando eu incluía mudava para 30/12/1899 e agora está sendo gravada a data corretamente.

    Agradeço a todos que se empenharam para me ajudar. Muito obrigado mesmo.

    Tópico encerrado e concluído.


    helio Passos

    • Marcado como Resposta Marcos SJ terça-feira, 18 de agosto de 2015 12:51
    segunda-feira, 17 de agosto de 2015 22:00