MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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


3 participantes

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    avatar
    tchelo1
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 08/05/2023

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  tchelo1 24/5/2023, 14:31

    Olá, ótimo dia a todos.
    Tenho o código abaixo que grava o ctl.name na tabela de log, e preciso que grave o nome(label) do rótulo associado ao ctl

    Por exemplo: Tenho o campo texto127 com o dado DATAINICIAL, associado a este campo está o Rótulo128, cujo nome (label) é DATA INICIAL, no código abaixo está gravando (ctl.name)texto127 no log e eu gostaria que gravasse DATA INICIAL(label do Rótulo128).

    Linha de gravação:
    strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & Screen.ActiveForm.Form.Name & "','" & ctl.Name & "','" & ctl.OldValue & "','" & ctl.Value & "','" & "Registro Alterado" & "')"


    Código inteiro:
    Public Sub gravalog()
    Dim strChekaDiferente As Boolean
    Dim strSQL As String
    Dim ctl As Control
    Dim strUser As String
    'Importante: Todos os botões de navegação devem conter a
    'chamada de toda esta instrução.
    'O form não deve ter o botão fechar ativo, deve colocar um botão para esse efeito e chamar a instrução.

    strChekaDiferente = False
    strUser = GetUserName_TSB
    If NewRecord Then 'verifica se é um novo registro, se for registra com novo
    strChekaDiferente = True

    For Each ctl In Screen.ActiveForm.Form.Controls
    ' Percorre todos os tipos de controles
    Select Case ctl.ControlType
    Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
    If ctl.Locked = False Then
    DoCmd.SetWarnings False
    If Nz(ctl.Value, "") <> Nz(ctl.OldValue, "") Then

    strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & Screen.ActiveForm.Form.Name & "','" & ctl.Name & "','" & "" & "','" & ctl & "','" & "Novo Registro" & "')"
    DoCmd.RunSQL strSQL

    strChekaDiferente = False
    End If
    End If
    End Select
    Next ctl

    Else
    ' se não for um novo registro, coloca a variável de chekar alterações como False
    strChekaDiferente = False

    For Each ctl In Screen.ActiveForm.Form.Controls
    ' Percorre todos os tipos de controles
    Select Case ctl.ControlType
    Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
    If ctl.Locked = False Then
    'On Error Resume Next
    If Nz(ctl.Value, "") <> Nz(ctl.OldValue, "") Then
    ' se algum valor foi alterado ou deletado, coloca a variável de chekar alterações como True
    strChekaDiferente = True
    'e registra na tabela do Log
    DoCmd.SetWarnings False
    strSQL = "INSERT INTO tblLog (Utilizador, LogData, NomeForm, NomeCampo, ValorAntigo, ValorAtual, Status) Values('" & strUser & "', Now(),'" & Screen.ActiveForm.Form.Name & "','" & ctl.Name & "','" & ctl.OldValue & "','" & ctl.Value & "','" & "Registro Alterado" & "')"
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
    'termina e volta a colocar a variável de chekar alterações como False
    strChekaDiferente = False
    Else
    Cancel = True
    End If
    End If
    End Select
    Next ctl
    End If
    'Salva tudo o que foi feito
    DoCmd.RunCommand acCmdSaveRecord

    End Sub
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty Re: [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  Alexandre Fim 24/5/2023, 16:49

    Marcelo,

    Mude de ctl.Name para ctl.Caption e veja se funciona.

    Att,

    Alexandre Fim


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Setinf11
    Sistemas e Tecnologia Ltda
    avatar
    tchelo1
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 08/05/2023

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty Re: [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  tchelo1 24/5/2023, 17:14

    Não funcionou diz que não aceita. Mas tentei este abaixo:
    ctl.Properties("LabelName")
    e gravou o rótulo correspondente no form, Rótulo128, porém preciso gravar o Label ou caption deste rótulo128
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty Re: [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  Alexandre Fim 24/5/2023, 18:40

    Marcelo,

    Inclua o tipo label nesta linha:

    Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox, acLabel

    Para obter o valor do label, utilize a propriedade "Caption".

    Só para tirar dúvida, faça um teste com essa rotina:

    Código:


    Public Sub teste()
    Dim ctl As Control
    Dim vDados As String
       
        For Each ctl In Me.Controls
            Select Case ctl.ControlType
                Case acTextBox
                    ctl.SetFocus
                    vDados = ctl.Text
                    MsgBox "TextBox = " & vDados & ""
                Case acComboBox
                    ctl.SetFocus
                    vDados = ctl.Text
                    MsgBox "ComboBox = " & vDados & ""
                Case acListBox
                    vDados = ctl.Text
                    MsgBox "ListBox = " & vDados & ""
                Case acOptionGroup
                    vDados = ctl.Name
                    MsgBox "OptionGroup = " & vDados & ""
                Case acCheckBox
                    vDados = ctl.Text
                    MsgBox "CheckBox = " & vDados & ""
                Case acLabel
                    vDados = ctl.Caption
                    MsgBox "Label = " & vDados & ""
            End Select
        Next

    End Sub


    Copie e cole no seu form, e no Evento Load coloque:

    Call teste


    O Access irá exibir mensagens com os valores de cada controle.

    Espero ter ajudado.

    Att,

    FIM





    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Setinf11
    Sistemas e Tecnologia Ltda
    avatar
    tchelo1
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 08/05/2023

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty Re: [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  tchelo1 25/5/2023, 12:12

    O Código Teste funcionou, só alterei a primeira linha para
    For Each ctl In SCreen.ActiveForm.Controls
    porém ele passa separadamente pelo AcLabel,
    e o que Preciso é do Caption do acLabel que está na ctl.Properties("LabelName"), sendo que no meu caso o ctl é um AcTextBox, para colocar no log
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty Re: [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  DamascenoJr. 2/7/2023, 21:18

    Não testei, mas teste

    ctl.controls(0).caption
    ou
    ctl.controls(1).caption


    .................................................................................
    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.
    avatar
    tchelo1
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11
    Registrado : 08/05/2023

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty Re: [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  tchelo1 5/7/2023, 13:15

    Resolvido. Muito obrigado.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty Re: [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  DamascenoJr. 7/7/2023, 00:15

    O fórum agradece o retorno. Sucesso.


    .................................................................................
    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.

    Conteúdo patrocinado


    [Resolvido]Gravar o Nome do Rótulo em vez do nome do control Empty Re: [Resolvido]Gravar o Nome do Rótulo em vez do nome do control

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 25/11/2024, 00:59