Ir para conteúdo
Fórum Script Brasil
  • 0

Erro Ao Passar Dados Para O Banco De Dados(access)


Girréis

Pergunta

Boa noite, amigos

Como faço para inserir um campo com datas para o Access?

Pois tenho um formulário em que digito os dados, como nome, endereço, data de nascimento e data atual, e quando clico no botão cadastrar, ele cadastra no banco de dados, mas quando visualizo tanto no Access quanto no VB e aparece com outro tipo de data, exemplo, se eu digito 20/06/2007 ele aparece no Access e no formulário de consulta no VB como sendo 30/12/1899.... estranho, o que deve estar faltando?

Private Sub cmdOK_Click()
Dim cnnComando As New ADODB.Command
Dim vCodLivro, vCodUsuario As Long
Dim vDataEmprestimo, vDataDevolucao As Date
Dim vConfMsg As Integer
Dim vErro As Boolean
    On Error GoTo errGravacao
    'Converte os dados digitados:
    vCodLivro = Val(txtCodLivro.Text)
    vCodUsuario = Val(txtCodUsuario.Text)
    vDataEmprestimo = CDate(txtDataEmprestimo.Text)
    vDataDevolucao = CDate(txtDataDevolucao.Text)
    'Verifica os dados digitados:
    vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
    vErro = False
    If vCodLivro = 0 Then
        MsgBox "O campo Código do Livro não foi preenchido.", vConfMsg, "Erro"
        vErro = True
    End If
    If lblTitulo.Caption = Empty Then
    'Se lblTitulo estiver em branco, o código do livro informado não foi
    'encontrado na tabela:
        MsgBox "O campo Código do Livro não contém um dado válido.", _
                vConfMsg, "Erro"
        vErro = True
    End If
    If vCodUsuario = 0 Then
        MsgBox "O campo Código do Usuário não foi preenchido.", vConfMsg, "Erro"
        vErro = True
    End If
    If vDataEmprestimo >= vDataDevolucao Then
        MsgBox "A Data de Devolucao informada é menor ou igual à Data de " & _
                "Empréstimo, verifique.", vConfMsg, "Erro"
        vErro = True
    End If
    'Se aconteceu um erro de digitação, sai da sub sem gravar:
    If vErro Then Exit Sub
    Screen.MousePointer = vbHourglass
    'Executa a SP de devolução de livros:
    With cnnComando
        .ActiveConnection = cnnBiblio
        .CommandType = adCmdText
        .CommandText = "UPDATE Livros SET CodUsuario = " & vCodUsuario & _
                ", Emprestado = True, DataEmprestimo = " & vDataEmprestimo & _
                ", DataDevolucao = " & vDataDevolucao & " WHERE CodLivro = " & _
                vCodLivro & ";"
        .Execute
    End With
    MsgBox "Esse livro foi emprestado a " & lblNomeUsuario & " com sucesso.", _
            vbApplicationModal + vbInformation + vbOKOnly, "Empréstimo OK"
    'Chama a subrotina cmdCancelar_Click para limpar os campos do formulário:
    cmdCancelar_Click
    
Saida:
    Screen.MousePointer = vbDefault
    Set cnnComando = Nothing
    Exit Sub
    
errGravacao:
    With Err
        If .Number <> 0 Then
            MsgBox "Erro durante a gravação dos dados no registro." & _
                    vbCrLf & "A devolução desse livro não foi completada.", _
                    vbExclamation + vbOKOnly + vbApplicationModal, _
                    "Empréstimo cancelado"
            .Number = 0
            GoTo Saida
        End If
    End With
    
End Sub
Private Sub txtDataEmprestimo_LostFocus()
Dim vDataDevolucao As Date
    With txtDataEmprestimo
        If .Text <> Empty Then
            'Verifica se o dado digitado pode ser uma data:
            If Not IsDate(.Text) Then
            'Se o dado digitado não pode ser uma data, assume a do sistema:
            .Text = Date
        Else
            'Senão, formata a data digitada:
            .Text = Format(.Text, "Short Date")
        End If
        'Atribui à caixa txtDataDevolucao a data digitada + 15 dias:
        vDataDevolucao = CDate(.Text) + 15
        txtDataDevolucao.Text = Format(vDataDevolucao, "Short Date")
        End If
    End With
    
End Sub

grato pela atenção,

Girréis

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

então, datas devem ser gravadas entre aspas, e de preferencia no formato ano-mês-dia.

tipo, tenta fazer o update assim:

With cnnComando
        .ActiveConnection = cnnBiblio
        .CommandType = adCmdText
        .CommandText = "UPDATE Livros SET CodUsuario = " & vCodUsuario & _
                ", Emprestado = True, DataEmprestimo = '" & Format(vDataEmprestimo, "YYYY-MM-DD") & _
                "', DataDevolucao = '" & Format(vDataDevolucao, "YYYY-MM-DD") & "' WHERE CodLivro = " & _
                vCodLivro & ";"
        .Execute
    End With[/code]

veja se funciona, qualquer coisa poste aí

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...