MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Salvar dados de text box não acoplado em tabela

    avatar
    wdemelo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 15/07/2013

    Salvar dados de text box não acoplado em tabela Empty Salvar dados de text box não acoplado em tabela

    Mensagem  wdemelo em 20/10/2016, 17:25

    Pessoal, sou novo no Access e gostaria de incluir no meu BD os botões "Novo", "Salvar", "Editar", "Excluir", "Primeiro Registro", "Ultimo Registro", "Proximo Registro", "Registro Anterior", no entanto os campos são não acoplados e da forma nativa do access não estão funcionando, somente com codigo VBA, mais não tenho a minima ideia de como faze-lo, quem poder me ajudar de antemão meus agradecimentos!

    Campos para adicionar na tabela "tb_Lancamentos"

    txtJob
    Contatxt
    TipoDespesa
    txtTipoDoc
    txtDataLanc
    txtDescricao
    txtValorLanc
    txtTipo
    Tarefatxt
    Anexos
    Salvar dados de text box não acoplado em tabela AttachmentLivro Caixa _.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (160 Kb) Baixado 14 vez(es)
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    Salvar dados de text box não acoplado em tabela Empty Salvar dados de text box não acoplado em tabela

    Mensagem  CassioFabre em 1/11/2016, 12:26

    Bom dia,

    Primeiramente é de suma importância que tenha na tabela um campo de chave primária que diferenciará um registro de outro. Normalmente se utiliza um campo "codigo" (numérico, inteiro) para este fim, podendo ser auto numérico ou não. Particularmente, não gosto de utilizar campos auto numéricos, prefiro incluir os valores via código. Enfim, isso vai de cada um. Este campo tem que estar presente no seu formulário, com ele que você conseguirá passar registros de um para outro.

    No evento Ao Abrir do seu formulário, coloque o seguinte:

    Código:
    If Dcount("codigo", "suaTabela") = 0 then
        txtCodigo = 1
    Else
        txtCodigo = DMax("codigo", "suaTabela") + 1
    End if

    Este trecho fará com que ao abrir o formulário, o sistema verifique se há algum registro cadastrado na tabela, caso falso o campo código recebe o valor de 1, caso verdadeiro receberá o valor do ultimo código da tabela incrementado de 1.

    Para cadastrar um registro na tabela, eu gosto de utilizar o recordset da seguinte maneira:

    Código:
       Dim db As Database
        Dim rs As Recordset
        
        Set db = CurrentDb
        Set rs = db.OpenRecordset("suaTabela")
        
        rs.AddNew
            rs("campo1") = txtCampo1
            rs("campo2") = txtCampo2
            rs("campon") = txtCampoN
        rs.Update
        rs.Close
        db.Close

    Para editar um registro, basicamente utiliza-se a mesma rotina com uma pequena alteração no select:

    Código:
       Dim db As Database
        Dim rs As Recordset
        
        Set db = CurrentDb
        Set rs = db.OpenRecordset("SELECT * FROM suaTabela WHERE codigo = " & txtCodigo & "")
        
        rs.Edit
            rs("campo1") = txtCampo1
            rs("campo2") = txtCampo2
            rs("campon") = txtCampoN
        rs.Update
        rs.Close
        db.Close

    Para navegar entre os registros, criei aqui agora essa função:

    Código:
    Public Function navegaRegistros(direcao As String)
        Dim db As Database
        Dim rs As Recordset
        Dim primeiroRegistro, ultimoRegistro As Integer
        
        primeiroRegistro = DMin("codigo", "suaTabela")
        ultimoRegistro = DMax("codigo", "suaTabela")
        
        Set db = CurrentDb
        Set rs = db.OpenRecordset("SELECT * FROM suaTabela where codigo = " & txtCodigo & "")
        
        If direcao = "+" Then 'navega para registros posteriores
            If txtCodigo = ultimoRegistro Then
                MsgBox "Este é o último registro cadastrado", vbCritical, "Ultimo Registro"
                Exit Function
            End If
            
            txtCodigo = txtCodigo + 1
        ElseIf direcao = "-" Then 'navega para registros anteriores
            If txtCodigo = primeiroRegistro Then
                MsgBox "Este é o último registro cadastrado", vbCritical, "Ultimo Registro"
                Exit Function
            End If
            
            txtCodigo = txtCodigo - 1
        ElseIf direcao = "ultimo" Then 'navega para ultimo registro
            txtCodigo = ultimoRegistro
        ElseIf direcao = "primeiro" Then 'navega para primeiro registro
            txtCodigo = primeiroRegistro
        End If

        Set rs = db.OpenRecordset("SELECT * FROM suaTabela where codigo = " & txtCodigo & "")
        txtCampo1 = rs!campo1
        txtCampo2 = rs!campo2
        txtCampoN = rs!campon
        
    End Function

    No evento Ao Clicar do seus botões insira:
    Código:
    Call navegaRegistros(direcao)
    Substituindo "direcao" por "+" no botão que avança ao proximo registro, por "-" quando for anterior e assim sucessivamente.

    Segue em anexo um exemplo com essas funções que descrevi aqui. É basico só pra se ter uma ideia, várias coisas que podem e devem ser alteradas. Qualquer coisa o fórum está aí.

    Abraço.
    Anexos
    Salvar dados de text box não acoplado em tabela Attachmentsalvar.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (59 Kb) Baixado 67 vez(es)
    avatar
    alex.sirod
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2
    Registrado : 22/09/2016

    Salvar dados de text box não acoplado em tabela Empty Re: Salvar dados de text box não acoplado em tabela

    Mensagem  alex.sirod em 2/1/2020, 01:54

    Muito bom esse código.Parabéns.
    Ao implementar essa rotina no meu sistema descobri que caso o campo CÓDIGO tenha algum registro deletado e perda a sequencia numérica o algoritmo dará um erro quando executa a a direção para o registro anterior ou posterior. Consegui contornar inserindo esse tratamento de erro no final da função:

    Código:

    On Error GoTo TrataErro

    'AQUI FICA A FUNÇÃO "navegaRegistros" IMPLEMENTADA

     '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    'Tratamento de Erros
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    sair:
        Exit Function
    TrataErro:
        If Err.Number = -2147352567 Then
         
            If direcao = "-" Then
            btnAnterior_Click
            Else
            btnProximo_Click
            End If
         
            Resume sair:
        End If
        MsgBox "Erro: " & Err.Number & vbCrLf & Err.Description, vbCritical, "Aviso", Err.HelpFile, Err.HelpContext

        Resume sair:
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2219
    Registrado : 22/11/2016

    Salvar dados de text box não acoplado em tabela Empty Re: Salvar dados de text box não acoplado em tabela

    Mensagem  DamascenoJr. em 4/1/2020, 02:03

    Se a dúvida está sanada então falta dar o tópico como resolvido.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

      Data/hora atual: 24/9/2020, 03:46