MaximoAccess

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

Obrigado

Administração do MaximoAccess

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


    [Resolvido]Atualização de campos em um formulário desvinculado.

    avatar
    Thel
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 19/06/2012

    [Resolvido]Atualização de campos em um formulário desvinculado. Empty [Resolvido]Atualização de campos em um formulário desvinculado.

    Mensagem  Thel em 27/3/2019, 00:59

    Boa noite ou bom dia!

    O código abaixo atualiza a tabela através de um formulário desvinculado:
    Set db = CurrentDb()
    Set Rs = db.OpenRecordset("Select * from Tbl_MinhaTabela Where Campo1DaMinhaTabela= " & Me.Campo1DoFormulario & " AND Campo2DaMinhaTabela= '" & Me.Campo2DoFormulario & "'")
    Rs.Edit
    Rs("Campo1DaMinhaTabela") = Campo1DoFormulario
    Rs("Campo2DaMinhaTabela") = Campo2DoFormulario
    Rs.Update
    db.Close
    Set db = Nothing
    Set Rs = Nothing

    Eu tenho duas perguntas:
    1. Há como simplificar o código acima, já que meu formulário desvinculado possui 33 campos?

    2. O botão salvar desse formulário desvinculado faz duas coisas: se clicado salva o registro, se clicado novamente atualiza o registro. Estou usando este código abaixo, o botão salva mas quando se clica novamente ele não atualiza o registro, já fiz a depuração total e não aparece nenhum erro:

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("Tbl_MinhaTabela")
    If (IsNull(DLookup("[IDdaTabela]", "Tbl_MinhaTabela", "[IDdaTabela] = " & Me!IDdoForm))) Then
    rs.AddNew
    rs("Campo1DaMinhaTabela") = Campo1DoFormulario
    rs("Campo2DaMinhaTabela") = Campo2DoFormulario
    rs.Update
    db.Close
    Set db = Nothing
    Set rs = Nothing
    Beep
    MsgBox "REGISTRO SALVO COM SUCESSO!", vbInformation, "::: AVISO :::"

    Else
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("Select * from Tbl_MinhaTabela Where Campo1DaMinhaTabela= " & Me.Campo1DoFormulario & " AND Campo2DaMinhaTabela= '" & Me.Campo2DoFormulario & "'")
    rs.Edit
    rs("Campo1DaMinhaTabela") = Campo1DoFormulario
    rs("Campo2DaMinhaTabela") = Campo2DoFormulario
    rs.Update
    db.Close
    Set db = Nothing
    Set rs = Nothing
    MsgBox "REGISTRO ATUALIZADO COM SUCESSO!", vbInformation, "::: AVISO :::"
    End If

    Nota: o campo1 da tabela e do form é numérico e o campo 2 da tabela e do form é texto.


    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4358
    Registrado : 20/04/2011

    [Resolvido]Atualização de campos em um formulário desvinculado. Empty Re: [Resolvido]Atualização de campos em um formulário desvinculado.

    Mensagem  Silvio em 27/3/2019, 11:32

    1. Há como simplificar o código acima, já que meu formulário desvinculado possui 33 campos?

    Em formulário desacoplados, desconheço outra forma de simplificar, pode até ter, mas, desconheço.

    2. O botão salvar desse formulário desvinculado faz duas coisas: se clicado salva o registro, se clicado novamente atualiza o registro. Estou usando este código abaixo, o botão salva mas quando se clica novamente ele não atualiza o registro, já fiz a depuração total e não aparece nenhum erro:


    O teu código começa com um IF e faz rotina depois tem um ELSE.

    Se salva o registro, então suponho eu que os dados serão atualizados e salvos né ? Será que essa rotina não merece um pouco mais de tua atenção ?
    Não está a fazer a mesma coisa ? Pensa um pouco !


    Abraços.



    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 721
    Registrado : 13/12/2016

    [Resolvido]Atualização de campos em um formulário desvinculado. Empty Re: [Resolvido]Atualização de campos em um formulário desvinculado.

    Mensagem  Alexandre Fim em 27/3/2019, 12:31

    Ola Thel,

    Copie e cole o código no seu formulário
    A rotina abaixo verifica o tipo de controle (Textbox, Combobox) do formulário ativo e compara os nomes do controle com os nomes do campo da tabela, e para esta rotina funcionar, o campo do form tem que ter o mesmo nome do campo da tabela.

    E no botão gravar vc deve informar o parâmetro ("A" para alterar, ou "I" para incluir) para rodar essa rotina:

    Ex.: Call GravaDados("A")


    Código:


    Public Sub GravaDados(nTipoAcao As String)
    Dim DB      As DAO.Database
    Dim rs      As DAO.Recordset
    Dim sSQL    As String
    Dim ctl     As Control

        Set DB = CurrentDb()
        
        If nTipoAcao = "A" Then     'Alterar
            sSQL = "SELECT * FROM Tbl_MinhaTabela "
            sSQL = sSQL & " WHERE Campo1DaMinhaTabela= " & Me.Campo1DoFormulario & " "
            sSQL = sSQL & " AND Campo2DaMinhaTabela= '" & Me.Campo2DoFormulario & "'"
            Set rs = DB.OpenRecordset(sSQL, dbOpenDynamic)
            rs.Edit
        ElseIf nTipoAcao = "I" Then  'Incluir
            sSQL = "SELECT  TOP 1 * FROM Tbl_MinhaTabela "
            Set rs = DB.OpenRecordset(sSQL, dbOpenDynamic)
            rs.AddNew
        End If


        For x = 0 To rs.Fields.Count - 1
            'Quando for campo texto
            For Each ctl In Me.Controls
                If TypeOf ctl Is TextBox Then
                    If ctl.Name = rs(x).Field.Name Then
                        rs(x).Value = Trim(ctl.Value)
                    End If
                End If
            Next
            
            'quando for combobox
            For Each ctl In nForm.Controls
                If TypeOf ctl Is ComboBox Then
                    If ctl.Name = rs(x).Field.Name Then
                        rs(x).Value = Trim(ctl.Value)
                    End If
                End If
            Next
        Next x
        
        rs.Update
        rs.Close
        Set rs = Nothing
        
        MsgBox "Registro gravado com sucesso.", vbInformation, "Mensagem"

        Exit Sub

    trata_erro:
        MsgBox "Erro gerado: " & Err.Number & " - " & Err.Description & "", vbCritical, "Erro"
        Exit Sub

    End Sub



    Espero ter ajudado.

    Boa sorte
    Silvio
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4358
    Registrado : 20/04/2011

    [Resolvido]Atualização de campos em um formulário desvinculado. Empty Re: [Resolvido]Atualização de campos em um formulário desvinculado.

    Mensagem  Silvio em 27/3/2019, 13:38

    Grande Alexandre...mais um aprendizado aqui.....vou guardar e usar com carinho essa rotina.

    Abraços.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 721
    Registrado : 13/12/2016

    [Resolvido]Atualização de campos em um formulário desvinculado. Empty Re: [Resolvido]Atualização de campos em um formulário desvinculado.

    Mensagem  Alexandre Fim em 27/3/2019, 19:47

    Valeu Silvio..
    Estamos sempre aprendendo a cada dia..
    cheers
    avatar
    Thel
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 108
    Registrado : 19/06/2012

    [Resolvido]Atualização de campos em um formulário desvinculado. Empty Re: [Resolvido]Atualização de campos em um formulário desvinculado.

    Mensagem  Thel em 28/3/2019, 01:22

    Oi Sílvio!

    Em primeiro lugar, peço desculpa pela demora em responder, tive um dia corrido e não tive tempo nem sequer para acessar a Internet.

    Eu pensei bem na tua colocação e resolvi colocar um código para que assim que o registro for salvo, o botão SALVAR fique desabilitado, evitando assim que o usuário clique novamente nele. Por que eu tinha colocado para salvar e não limpar os campos para a digitação de um novo registro? Porque nesse formulário tem um botão IMPRIMIR que serve para imprimir o registro que está sendo exibido no formulário no momento.

    Te agradeço pela chamada de atenção. rsrsrs


    Oi Alexandre!

    Te agradeço muito por esse código. Obrigado pela colaboração!

    Problemas RESOLVIDOS.
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 721
    Registrado : 13/12/2016

    [Resolvido]Atualização de campos em um formulário desvinculado. Empty Re: [Resolvido]Atualização de campos em um formulário desvinculado.

    Mensagem  Alexandre Fim em 28/3/2019, 12:20

    Valeu Thel cheers cheers
    Boa sorte !!

    Valeu Silvio pela colaboração.

    []'s

    Conteúdo patrocinado

    [Resolvido]Atualização de campos em um formulário desvinculado. Empty Re: [Resolvido]Atualização de campos em um formulário desvinculado.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 25/5/2019, 20:48