Altere os nomes de um campo

2

Estou procurando uma maneira de alterar os nomes de campo no Access.

Estou importando dados por meio de uma macro, a partir de arquivos de texto. Que eu, então, reviso através de um relatório de cristal. Agora, às vezes, o relatório precisa ler o campo que importei no campo 7 em vez do campo 5. Então, não quero reestruturar todo o processo de importação porque estou trabalhando frequentemente em importações de 500.000 a 1.000.000 registros e importando muitos registros de um arquivo de texto leva cerca de 5-9 minutos cada. Eu realmente prefiro apenas fazer a importação uma vez e mudar os nomes dos campos, se este for um desses momentos. Até agora eu acabei de clicar com o botão direito de renomear.

Existe uma maneira de eu clicar em uma macro e Renomear campo5 - > FieldTemp, Field7 - > Field5 e FieldTemp - > Field7

Por fim, preciso renomear o Field5 < - > Field7. Sugestões?

UPDATE: encontrei este mas não tenho certeza de como implementar isso. Isso funcionaria como eu acho que vai? Se sim, como faço para que funcione?

    
por PsychoData 11.09.2013 / 20:54

1 resposta

2

Você pode fazer isso com o VBA e um atalho de teclado atribuído ao seu código.

Public Function swapFieldNames(table, name1, name2)

    '## Close & save the table in case its open or else you can't rename fields
    DoCmd.Close acTable, CurrentDb().TableDefs(table).Name, acSaveYes

    '## Save all touched field names to temporarily variables for later use
    temp1 = CurrentDb().TableDefs(table).Fields(name1).Name
    temp2 = CurrentDb().TableDefs(table).Fields(name2).Name

    '## Rename them to unique names because duplicate names are not allowed
    CurrentDb().TableDefs(table).Fields(name1).Name = "#$%temp1%$#"
    CurrentDb().TableDefs(table).Fields(name2).Name = "#$%temp2%$#"

    '## Rename them again and do the switch
    CurrentDb().TableDefs(table).Fields("#$%temp1%$#").Name = temp2
    CurrentDb().TableDefs(table).Fields("#$%temp2%$#").Name = temp1

    '## Open the table to view the result
    DoCmd.OpenTable CurrentDb().TableDefs(table).Name

End Function

Enviei um banco de dados demo , onde você pode pressionar F3 para trocar os nomes dos campos " campo5 "e" campo7 "

Passoapasso

  1. AbraobancodedadosdoAccessepressioneALT+F11paraabriroeditordoVBA
  2. Nopainelesquerdo,cliquecomobotãodireitodomousenonomedoseubancodedadoseinsiraummódulo
  3. Nopaineldadireita,coleocódigoacimaesalve-ocomo,porexemplo,VBAswapmodule
  4. Siga Guia da Microsoft sobre como usar as AutoKeys para uma maneira rápida de executar seu código

    • Na guia Criar, clique em Macro (ou na seta abaixo de Módulo e, em seguida, em Macro)
    • Na guia Design, no grupo Mostrar / ocultar, clique em Nomes de macro para exibir a coluna Nome da macro
    • Na coluna Nome da Macro, insira a chave à qual você deseja atribuir a ação

      Macro Name      Key or keyboard shortcut
      ^A or ^4        CTRL+A or CTRL+4
      {F1}            F1
      ^{F1}           CTRL+F1
      +{F1}           SHIFT+F1
      
    • Na coluna Ação, adicione a ação RunCode que é executada quando sua chave é pressionada
    • Na coluna Argumentos, insira swapFieldNames("table1", "field5", "field7") ou o que você nomeou seu módulo. Aqui você também define qual tabela deve ser usada para renomear e quais nomes de campos devem ser trocados

    • CliqueemSalvaroupressioneCTRL+Senomeieamacro"AutoKeys". Apenas com este nome, o Access saberá que deve atribuir um atalho quando for reaberto

Dica: Não confunda os termos "macro" e "módulo". Para o Access, uma macro não tem nada a ver com o VBA, como você pode pensar. As funções e sub-rotinas do VBA são chamadas de "módulos" e as macros são um container onde você pode definir múltiplas ações como "abra esta tabela, filtre pelo valor XY e delete todas as entradas"

    
por 12.09.2013 / 18:44