GRAVAR DATA NO ACCESS COM VB NET
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
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
HELIOPASSOS,
Pode ser um problema do que o computador (formato de data) está trabalhando. Existem [Ô]configurações regionais[Ô] que podem mudar a data para ficar:
- Dia / Mês / Ano;
- Mês / Dia / Ano;
Ou o MELHOR padrão para trabalhar:
- Ano / Mês / Dia (ANSI)
Experimente passar, se você puder, a data no formato ANSI.
Abaixo mostra o lance do [Ô]CultureInfo[Ô] o VB.Net faz assim:
Outro esquema...
https://social.msdn.microsoft.com/Forums/pt-BR/c56191fc-d5f6-4057-acd1-1bf6a924fc7b/problema-ao-comparar-datas-no-access-vbnet
Tenta lá ... qualquer coisa estamos aqui.
[][ô]s,
Tunusat.
Pode ser um problema do que o computador (formato de data) está trabalhando. Existem [Ô]configurações regionais[Ô] que podem mudar a data para ficar:
- Dia / Mês / Ano;
- Mês / Dia / Ano;
Ou o MELHOR padrão para trabalhar:
- Ano / Mês / Dia (ANSI)
Experimente passar, se você puder, a data no formato ANSI.
Abaixo mostra o lance do [Ô]CultureInfo[Ô] o VB.Net faz assim:
Imports System.Globalization
Dim dt As DateTime = DateTime.Now
dt = DateTime.Parse(dt.ToString(), New CultureInfo([Ô]en-us[Ô]))
Outro esquema...
https://social.msdn.microsoft.com/Forums/pt-BR/c56191fc-d5f6-4057-acd1-1bf6a924fc7b/problema-ao-comparar-datas-no-access-vbnet
Dim hoje As String = Now.Date
Dim dia As String = hoje.Substring(0, 3)
Dim mes As String = hoje.Substring(3, 3)
Dim ano As String = hoje.Substring(6, 4)
hoje = mes & dia & ano
comandoSQL = [Ô]select * from main where vencimento <= #[Ô] & hoje & [Ô]# order by nome asc[Ô]
Tenta lá ... qualquer coisa estamos aqui.
[][ô]s,
Tunusat.
Ok, o campo na minha tabela Access é data hora , formato Data abreviada. Antes estava utilizando texto, mas ai dava problema para apresenta-la no form, que é um campo DatetimePicker, quando ia mostrar a data no formulário dava erro de incompatibilidade, não consegui usar o convert. .... , Agora o problema está em gravar a data, que está gravando 31/12/1899 e não a data informada que está no formato (MM-dd-yyyy) (?????).
Use Parameters para o Insert.
Pessoal, caso resolvido, finalmente. No meu projeto, em vb net framework 4.5,
Numa classe AcessoDados.vb há uma rotina para incluir os dados digitados no form : a data vem de um DateTimePicker no formato dd/MM/yyyy, os dados serão gravados numa tabela access. O campo data nascimento é Data Hora (sem formatação)
Public Sub incluirDados(ByVal Nome As String, ByVal Sexo As String, ByVal Agente As String, ByVal Nascimento As Date, ByVal Endereco As String, ByVal Nro As String, ByVal Complemento As String, ByVal Bairro As String, ByVal Municipio As String, ByVal Estado As String, ByVal Cep As String, ByVal Tel1 As String, ByVal Tel2 As String, ByVal Tel3 As String, ByVal Responsavel As String, ByVal Atividade As String, ByVal Analise As String, ByVal Sugestao As String, ByVal Observacao As String)
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()
Catch ex As Exception
Throw ex
Finally
closeConexaoDB(cn)
End Try
End Sub
O Problema era que nos Values, o valor nascimento estava só com aspas simples ... [Ô] & Nascimento & [Ô][Ô], ... Um colega percebeu e me pediu para alterar para [ô][Ô] & Nascimento & [Ô][ô], (aspa simples + aspa dupla ..variavel.. aspa dupla + aspa simples) ..... funcionou! A data estava gravando 31/12/1899 agora está gravando a data informada, corretamente. Agradeço a todos que me apoiaram e me ajudaram. Muito obrigado pessoal. Abraços.
Numa classe AcessoDados.vb há uma rotina para incluir os dados digitados no form : a data vem de um DateTimePicker no formato dd/MM/yyyy, os dados serão gravados numa tabela access. O campo data nascimento é Data Hora (sem formatação)
Public Sub incluirDados(ByVal Nome As String, ByVal Sexo As String, ByVal Agente As String, ByVal Nascimento As Date, ByVal Endereco As String, ByVal Nro As String, ByVal Complemento As String, ByVal Bairro As String, ByVal Municipio As String, ByVal Estado As String, ByVal Cep As String, ByVal Tel1 As String, ByVal Tel2 As String, ByVal Tel3 As String, ByVal Responsavel As String, ByVal Atividade As String, ByVal Analise As String, ByVal Sugestao As String, ByVal Observacao As String)
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()
Catch ex As Exception
Throw ex
Finally
closeConexaoDB(cn)
End Try
End Sub
O Problema era que nos Values, o valor nascimento estava só com aspas simples ... [Ô] & Nascimento & [Ô][Ô], ... Um colega percebeu e me pediu para alterar para [ô][Ô] & Nascimento & [Ô][ô], (aspa simples + aspa dupla ..variavel.. aspa dupla + aspa simples) ..... funcionou! A data estava gravando 31/12/1899 agora está gravando a data informada, corretamente. Agradeço a todos que me apoiaram e me ajudaram. Muito obrigado pessoal. Abraços.
Tópico encerrado , respostas não são mais permitidas