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]Renomear campo via VBA

    avatar
    ivandetomini
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 29/01/2012

    [Resolvido]Renomear campo via VBA Empty [Resolvido]Renomear campo via VBA

    Mensagem  ivandetomini Qui 17 Ago - 11:25

    Bom dia!

    Peço ajuda dos colegas:

    Estou com a seguinte necessidade: preciso renomear as colunas de uma tabelas com base nas informações nos campos.
    Pesquisando por aqui encontrei o seguinte código

    CurrentDb.TableDefs("dbo_Precos").Fields("DataColeta").Name = "DataColeta2"

    Isso atende parcialmente minha necessidade, nos campos cujos valores são fixos; porém o novo nome, no exemplo aqui citado "DataColeta2", deve ser informação colhida no campo. Isso porque cada vez que a tabela é atualizada as informações também são atualizadas
    Não consegui carregar essa informação, portanto peço ajuda dos colegas para resolver isso, se possivel.

    Abraços,

    Ivan
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Renomear campo via VBA Empty Re: [Resolvido]Renomear campo via VBA

    Mensagem  Alexandre Neves Sex 18 Ago - 10:31

    Boa tarde, e bem-vindo ao fórum
    As informações podem estar actualizadas sem alterar nome do campo. Não entendi a necessidade de alteração
    Pode explicar?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    ivandetomini
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 29/01/2012

    [Resolvido]Renomear campo via VBA Empty Re: Renomear campo via VBA

    Mensagem  ivandetomini Sex 18 Ago - 11:24

    Bom dia.

    A tabela possui os campos "Campo1", "Campo2", "Campo3".
    Preciso que os novos nomes sejam o conteúdo desses campos, que mudam a cada vez que a tabela é atualizada.
    Se eu usar o código abaixo, por exemplo:
    [i]CurrentDb.TableDefs("dbo_Precos").Fields("DataColeta").Name = "DataColeta2"[i]
    O novo nome será o que eu definir  = que não pode ser fixo, já que essas informações mudam com frequencia.
    O anexo tem o exemplo dessa necessidade.

    Obrigado pela ajuda.
    Anexos
    [Resolvido]Renomear campo via VBA AttachmentBD_Tst.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (39 Kb) Baixado 14 vez(es)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Renomear campo via VBA Empty Re: [Resolvido]Renomear campo via VBA

    Mensagem  Alexandre Neves Sex 18 Ago - 11:31

    Continuo a não ver necessidade de renomear os campos
    Pelo uso de apenas uma linha, desperdiça espaço e basta ter um array para guardar as informações. Neste exemplo, nem é adequada a nomeação de campos com número inicial
    Porque não cria um array e tem toda a flexibilidade de uso?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  good guy Sex 18 Ago - 11:31

    Olá ivan,

    Não entendi exatamente o que você pretende, mas vou disponibilizar aqui este código que serve para alterar valores de um determinado campo da sua tabela.

    Código:

    Private Sub cmdLocalizar_Click()
    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim Trans As Boolean
    Dim sMens As String
    Dim sNome As String
    Dim tNome As String

    On Error GoTo Erro

    Trans = False
    Set ws = DBEngine.Workspaces(0) ‘Referir-se ao Workspace padrão
    Set db = CurrentDb ‘Banco de Dados corrente
    Set rs = db.OpenRecordset(“Teste”, dbOpenDynaset) ‘Verificar sempre na propriedade do formulário qual é o tipo de conjunto de registros e utilizar o acesso apropriado, caso contrário ocorrerá um erro indicado por uma mensagem de texto

    ws.BeginTrans
    Trans = True

    sNome = InputBox(“Digite o nome a alterar:”, “Alterar?”)  ‘Substituir por uma caixa de texto
    tNome = InputBox(“Digite o novo nome: “, “Alterar?”)
    ‘Substituir por uma caixa de texto como alternativa

    rs.MoveFirst ‘Garantir que iniciará no primeiro registro

    Do Until rs.EOF’Faça enquanto não chegar ao final da Tabela
    If rs.Fields(“Cidade”) = sNome Then
    ‘Me!Cidade = rs.Fields(“Cidade”) ‘ Ou rs!Cidade

    sMens = MsgBox(“Confirma alteração?”, vbYesNo, “Confirmação”)

    If sMens = vbYes Then
    rs.Edit ‘Abre para alterações
    rs.Fields(“Cidade”) = tNome
    rs.Update
    End If
    End If
    rs.MoveNext ‘Mover para o próximo registro
    Loop

    If MsgBox(“Salvar alterações?”, vbQuestion + vbYesNo, “Salvar”) = vbYes Then
    ws.CommitTrans ‘Salva alterações
    Me.Requery
    Else
    ws.Rollback ‘Desfaz alterações
    End If

    Sair:
    rs.Close
    Set db = Nothing
    Set ws = Nothing
    Exit Sub

    Erro:
    MsgBox “Erro”
    If Trans = True Then
    Exit Sub
    End If

    Resume Sair
    End Sub
    avatar
    ivandetomini
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 29/01/2012

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  ivandetomini Sex 18 Ago - 12:00

    Obrigado pelo Código,
    Não é o valor do campo que preciso trocar, é o nome:

    CAMPO1 CAMPO2 CAMPO3 CAMPO4 CAMPO5
    Material DESCR. 01.08.17 02.08.17 03.08.17

    O nome do campo1 passaria a ser Material, campo2 = DESCR. campo3 = 01.08.17 e assim por diante.

    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  good guy Sex 18 Ago - 12:41

    Ok Ivan,

    Uma solução muito usada é criar uma consulta ao renomear o campo com Alias (Apelido) pelo modo SQL:

    Ex: SELECT CABEÇALHO.Campo1 AS Material, CABEÇALHO.Campo2 AS DESCR ...
    FROM CABEÇALHO;


    Uma segunda solução é a que você já preparou, mas vou apenas dar uma pincelada no código com o método Array citado pelo Alexandre que funfará muito bem.

    Código:

    Private Sub cmdRenomear_Click()
    Call RenomearTabela       'Chame a sub-rotina que faz a alteração na tabela de cada campo
    Me.RecordSource = "SELECT * FROM CABEÇALHO"     'Deixe o formulário desacoplado da tabela para com o método recordsource trazer a tabela

    'Renomeie os rótulos de cada campo no formulário e com VBA renomeie cada campo com o nome que você deseja
    With Me
    .lblCampo1.Caption = "Material"
    .lblCampo2.Caption = "Descrição"
    ....
    End With
    End Sub

    Sub RenomearTabela()
    On Error GoTo TrataErro
    Dim varTrata As Variant
    Dim varCampo1 As Variant
    Dim varCampo2 As Variant
    Dim intI As Integer
    Dim frm As Form

    varCampo1 = "Material"
    varCampo2 = "TxtBreveMaterial"
    .....

    varTrata = Array(varCampo1, varCampo2)

    Set frm = Forms!CABEÇALHO

    For intI = LBound(varTrata) To UBound(varTrata)
          frm!txtNomedoCampo = varTrata(intI)                       'Coloquei uma caixa de texto no formulário para verificar a mudança do nome do campo.
          CurrentDb.TableDefs("CABEÇALHO").Fields("Campo1").Name = varCampo1
          CurrentDb.TableDefs("CABEÇALHO").Fields("Campo2").Name = varCampo2
    Next intI



    Exit Sub
    TrataErro:
    MsgBox Err.Description, vbCritical, "Você já renomeou este campo"
    End Sub





    Última edição por good guy em Sex 18 Ago - 13:27, editado 3 vez(es)
    avatar
    ivandetomini
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 29/01/2012

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  ivandetomini Sex 18 Ago - 13:01

    O raciocinio é esse mesmo. Consegui esse codigo para fazer isso via VBA:

    CurrentDb.TableDefs("CABEÇALHO").Fields("Campo6").Name = "aqui deve ser o valor que estiver no campo6, que muda diariamente"

    Não quero toda vez que atualizar a tabela ter que mudar o valor depois de =
    Acho que deve ser algo simples, mas me falta experiencia.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  good guy Sex 18 Ago - 13:25

    Olá Ivan,

    Veja como deve ficar a sub-rotina com a função Array:

    Código:

    Sub RenomearTabela()
    On Error GoTo TrataErro
    Dim varTrata As Variant
    Dim varCampo1 As Variant
    Dim varCampo2 As Variant
    Dim intI As Integer
    Dim frm As Form

    varCampo1 = "Material"
    varCampo2 = "TxtBreveMaterial"
    .....

    varTrata = Array(varCampo1, varCampo2)

    Set frm = Forms!CABEÇALHO

    For intI = LBound(varTrata) To UBound(varTrata)
          frm!txtNomedoCampo = varTrata(intI)                       'Coloquei uma caixa de texto no formulário para verificar a mudança do nome do campo. Deixe-a com a propriedade visible = False
          CurrentDb.TableDefs("CABEÇALHO").Fields("Campo1").Name = varCampo1
          CurrentDb.TableDefs("CABEÇALHO").Fields("Campo2").Name = varCampo2
    Next intI



    Exit Sub
    TrataErro:
    MsgBox Err.Description, vbCritical, "Você já renomeou este campo"
    End Sub
    avatar
    ivandetomini
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 29/01/2012

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  ivandetomini Sex 18 Ago - 13:51

    Quase la...
    Deu um erro dizendo que o Access não pode localizar o formulario CABEÇALHO.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  good guy Sex 18 Ago - 14:03

    Por isso mesmo vc deve criar um formulário com os campos justificados, com acesso à tabela CABEÇALHO e nomeie este formulário como CABEÇALHO a título de teste temporariamente e depois desacople este formulário à tabela. Preste atenção quanto às orientações de criação de controles que eu passei acima no código da sub-rotina. Em seguida, crie um segundo formulário com outro nome a seu gosto acoplado à tabela agora com os campos renomeados.


    Última edição por good guy em Sex 18 Ago - 14:50, editado 1 vez(es)
    avatar
    ivandetomini
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 29/01/2012

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  ivandetomini Sex 18 Ago - 14:10

    Sim eu criei o formulario, mas mesmo assim da erro.
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1304
    Registrado : 05/02/2010

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  good guy Sex 18 Ago - 15:12

    Olá Ivan,

    Trata-se de uma importação de dados, não é? Teste agora pelo arquivo. Abra o formulário "CABEÇALHO" que acionará a sub-rotina RenomearTabela. Após a renomeação dos campos na tabela, adicione os campos pela barra de ferramentas, Adicionar Campos Existentes, no formulário "cabeçalho".
    Anexos
    [Resolvido]Renomear campo via VBA AttachmentBD_Tst.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (41 Kb) Baixado 21 vez(es)
    avatar
    ivandetomini
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 29/01/2012

    [Resolvido]Renomear campo via VBA Empty Re: [Resolvido]Renomear campo via VBA

    Mensagem  ivandetomini Sex 18 Ago - 20:47

    Prezados.
    Acho que está ficando complicado para este ser.
    Toda semana baixo um arquivo de texto, em que as datas são diferentes. Eu achei que seria fácil pegar a primeira linha da tabela e transformar em títulos de coluna, mas ficou demasiado complicado para mim
    Eu achei melhor tratar o arquivo no Excel e depois importar para o access, aí a primeira linha fica como cabeçalho no formato que eu desejo.
    Agradeço imensamente a ajuda aqui prestada, e vou guardar os códigos, tenho certeza que me serão úteis
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Renomear campo via VBA Empty Re: [Resolvido]Renomear campo via VBA

    Mensagem  Alexandre Neves Sáb 19 Ago - 14:42

    Boa tarde,
    Se tiver dado por concluída a dúvida, marque o "Resolvido" na zona inferior direita do formulário do fórum


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    ivandetomini
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 29/01/2012

    [Resolvido]Renomear campo via VBA Empty Renomear campo via VBA

    Mensagem  ivandetomini Seg 21 Ago - 12:25

    Boa tarde,
    Mais uma vez agradeço a ajuda.
    Saudações

    Conteúdo patrocinado


    [Resolvido]Renomear campo via VBA Empty Re: [Resolvido]Renomear campo via VBA

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Sex 22 Nov - 10:43