Estou envolvido na atualização de uma solução do Access. Possui uma boa quantidade de VBA, várias consultas, uma pequena quantidade de tabelas e alguns formulários para entrada de dados e geração de relatórios. É um candidato ideal para o Access.
Quero fazer alterações no design da tabela, no VBA, nas consultas e nos formulários. Como posso acompanhar minhas alterações com o controle de versão? (usamos o Subversion, mas isso vale para qualquer sabor). Posso colocar o mdb inteiro no subversion, mas isso armazenará um arquivo binário e não poderei dizer que mudei apenas uma linha do código VBA.
Pensei em copiar o código VBA para separar arquivos e salvá-los, mas pude ver aqueles ficando rapidamente fora de sincronia com o conteúdo do banco de dados.
fonte
Respostas:
Escrevemos nosso próprio script no VBScript, que usa o Application.SaveAsText () não documentado no Access para exportar todos os módulos de código, formulário, macro e relatório. Aqui está, ele deve fornecer algumas dicas. (Cuidado: algumas das mensagens estão em alemão, mas você pode facilmente mudar isso.)
EDIT: Para resumir vários comentários abaixo:
Nosso projeto assume um arquivo .adp. Para obter esse trabalho com .mdb / .accdb, você deve alterar o OpenAccessProject () para OpenCurrentDatabase (). (Atualizado para usarOpenAccessProject()
se houver uma extensão .adp, use outraOpenCurrentDatabase()
.)decompose.vbs:
Se você precisar de um comando clicável, em vez de usar a linha de comando, crie um arquivo chamado "decompose.cmd" com
Por padrão, todos os arquivos exportados entram em uma subpasta "Scripts" do seu aplicativo Access. O arquivo .adp / mdb também é copiado para esse local (com um sufixo "stub") e removido de todos os módulos exportados, tornando-o muito pequeno.
Você DEVE verificar este esboço com os arquivos de origem, porque a maioria das configurações de acesso e barras de menus personalizadas não podem ser exportadas de nenhuma outra maneira. Apenas certifique-se de confirmar as alterações neste arquivo apenas se você realmente alterou alguma configuração ou menu.
Nota: Se você tiver qualquer Autoexec-Makros definido em seu Aplicativo, poderá ser necessário manter a tecla Shift pressionada ao chamar a decomposição para impedir que seja executada e interfira na exportação!
Obviamente, também existe o script reverso, para criar o Aplicativo no Diretório "Origem":
compose.vbs:
Novamente, isso acompanha um companheiro "compose.cmd" que contém:
Ele solicita que você confirme a substituição do aplicativo atual e primeiro crie um backup, se o fizer. Em seguida, ele coleta todos os arquivos de origem no Diretório de origem e os reinsere no stub.
Diverta-se!
fonte
Parece ser algo bastante disponível no Access:
Este link do msdn explica como instalar um suplemento de controle de origem para o Microsoft Access. Ele foi enviado como um download gratuito como parte das Extensões de Desenvolvedor do Access para Access 2007 e como um suplemento gratuito separado para o Access 2003.
Fico feliz que você tenha feito essa pergunta e dediquei um tempo para procurá-la, pois também gostaria dessa capacidade. O link acima tem mais informações sobre isso e links para os suplementos.
Atualizar:
instalei o suplemento para o Access 2003. Ele funcionará apenas com o VSS, mas me permite colocar objetos do Access (formulários, consultas, tabelas, módulos, ect) no repositório. Ao editar qualquer item no repositório, você é solicitado a fazer o check-out, mas não precisa. Em seguida, vou verificar como ele lida com a abertura e alteração de sistemas sem o suplemento. Não sou fã do VSS, mas realmente gosto do pensamento de armazenar objetos de acesso em um repositório.
Atualização 2:
Máquinas sem o suplemento não podem fazer alterações na estrutura do banco de dados (adicionar campos da tabela, parâmetros de consulta, etc.). No começo, pensei que isso poderia ser um problema se alguém precisasse, pois não havia uma maneira aparente de remover o banco de dados do Access do controle de origem se o Access não tivesse o suplemento carregado.
O ID descobriu que a execução do banco de dados "compactar e reparar" solicita que você deseje remover o banco de dados do controle de origem. Optei sim e consegui editar o banco de dados sem o suplemento. O artigo no link acima também fornece instruções sobre como configurar o Access 2003 e 2007 para usar o Team System. Se você puder encontrar um provedor MSSCCI para SVN, há uma boa chance de fazê-lo funcionar.
fonte
A solução de composição / decomposição postada por Oliver é ótima, mas tem alguns problemas:
Eu estava planejando consertar isso sozinho, mas descobri que já existe uma boa solução disponível: timabell / msaccess-vcs-integration no GitHub. Eu testei a integração msaccess-vcs-e funciona muito bem.
Atualizado em 3 de março de 2015 : o projeto foi originalmente mantido / de propriedade da bkidwell no Github, mas foi transferido para timabell - o link acima para o projeto é atualizado de acordo. Existem alguns garfos do projeto original da bkidwell, por exemplo, da ArminBra e da matonb , que o AFAICT não deve ser usado.
A desvantagem de usar a integração msaccess-vcs-comparado à solução de decomposição da Olivers:
De qualquer forma, minha recomendação clara é msaccess-vcs-integration. Resolveu todos os problemas que tive ao usar o Git nos arquivos exportados.
fonte
Os olivers respondem rochas, mas a
CurrentProject
referência não estava funcionando para mim. Acabei arrancando as tripas do meio de suas exportações e substituindo-as por isso, com base em uma solução semelhante de Arvin Meyer . Tem a vantagem de exportar consultas se você estiver usando um mdb em vez de um adp.fonte
Desenvolvemos nossa própria ferramenta interna, onde:
Todo o sistema é inteligente o suficiente para permitir a produção de versões em "tempo de execução" do aplicativo Access, geradas automaticamente a partir de arquivos txt (módulos e formulários sendo recriados com o comando application.loadFromText) e arquivos mdb (tabelas).
Pode parecer estranho, mas funciona.
fonte
Com base nas idéias deste post e em entradas semelhantes em alguns blogs, escrevi um aplicativo que funciona com os formatos de arquivo mdb e adp. Ele importa / exporta todos os objetos do banco de dados (incluindo tabelas, referências, relações e propriedades do banco de dados) para arquivos de texto sem formatação. Com esses arquivos, você pode trabalhar com qualquer controle de versão de origem. A próxima versão permitirá importar de volta os arquivos de texto sem formatação para o banco de dados. Também haverá uma ferramenta de linha de comando
Você pode baixar o aplicativo ou o código-fonte em: http://accesssvn.codeplex.com/
Saudações
fonte
Ressuscitando um thread antigo, mas este é um bom. Eu implementei os dois scripts (compose.vbs / decompose.vbs) para o meu próprio projeto e tive um problema com arquivos .mdb antigos:
Ele pára quando chega a um formulário que inclui o código:
O Access diz que tem um problema e esse é o fim da história. Fiz alguns testes e tentei contornar esse problema e encontrei esse tópico com uma solução alternativa no final:
Não é possível criar o banco de dados
Basicamente (caso o encadeamento fique inoperante), você pega o .mdb e faz um "Salvar como" no novo formato .accdb. Então a fonte segura ou o material de composição / decomposição funcionará. Eu também tive que brincar por 10 minutos para obter a sintaxe correta da linha de comando para que os scripts (de) compor funcionassem corretamente, então aqui estão essas informações:
Para compor (diga que seu material está localizado em C: \ SControl (crie uma subpasta chamada Origem para armazenar os arquivos extraídos):
É isso aí!
As versões do Access em que eu tive o problema acima incluem os bancos de dados ".mdb" do Access 2000-2003 e corrigimos o problema, salvando-os nos formatos ".accdb" 2007-2010 antes de executar os scripts de composição / decomposição. Após a conversão, os scripts funcionam muito bem!
fonte
Solução apenas de arquivo de texto (consultas, tabelas e relacionamentos incluídos)
Alterei o par de scripts do Oliver para que eles exportem / importem relacionamentos, tabelas e consultas , além de módulos, classes, formulários e macros. Tudo é salvo em arquivos de texto sem formatação, portanto, não há arquivo de banco de dados criado para ser armazenado com os arquivos de texto no controle de versão.
Exportar para arquivos de texto (decompose.vbs)
Você pode executar esse script chamando
cscript decompose.vbs <path to file to decompose> <folder to store text files>
. Caso você omita o segundo parâmetro, ele criará a pasta 'Source' onde o banco de dados está localizado. Observe que a pasta de destino será apagada se já existir.Incluir dados nas tabelas exportadas
Substitua a linha 93:
oApplication.ExportXML acExportTable, myObj.Name, , sExportpath & "\" & myObj.Name & ".table.txt"
com linha
oApplication.ExportXML acExportTable, myObj.Name, sExportpath & "\" & myObj.Name & ".table.txt"
Importar paraCriar arquivo de banco de dados (compose.vbs)Você pode executar esse script chamando
cscript compose.vbs <path to file which should be created> <folder with text files>
. Caso você omita o segundo parâmetro, ele procurará na pasta 'Source' onde o banco de dados deve ser criado.Importar dados do arquivo de texto
Substitua a linha 14:
const acStructureOnly = 0
porconst acStructureOnly = 1
. Isso funcionará apenas se você tiver incluído os dados na tabela exportada.Coisas que não são cobertas
Um dos meus outros recursos enquanto trabalhava nesse script era essa resposta , que me ajudou a descobrir como exportar relacionamentos.
fonte
Há um problema: o VSS 6.0 só pode aceitar MDBs usando o suplemento em um certo número de objetos, o que inclui todas as tabelas, consultas, módulos e formulários locais. Não sabe o limite exato do objeto.
Para criar nosso aplicativo de produto de 10 anos, que é enorme, somos obrigados a combinar 3 ou 4 MDBs separados do SS em um MDB, o que complica as compilações automatizadas a ponto de não perdermos tempo fazendo isso.
Acho que vou tentar o script acima para espalhar esse MDb no SVN e simplificar as compilações para todos.
fonte
Para aqueles que usam o Access 2010, o SaveAsText não é um método visível no Intellisense, mas parece ser um método válido, pois o script de Arvin Meyer mencionado anteriormente funcionou bem para mim.
Curiosamente, SaveAsAXL é novo em 2010 e tem a mesma assinatura que SaveAsText, embora pareça que funcionará apenas com bancos de dados da Web, que exigem o SharePoint Server 2010.
fonte
Tivemos o mesmo problema há um tempo atrás.
Nossa primeira tentativa foi uma ferramenta de terceiros que oferece um proxy da API SourceSafe para Subversion a ser usado com o MS Access e o VB 6. A ferramenta pode ser encontrada aqui .
Como não estávamos tão satisfeitos com essa ferramenta, passamos para o Visual SourceSafe e o VSS Acces Plugin.
fonte
Estou usando o Oasis-Svn http://dev2dev.de/
Só posso dizer que me salvou pelo menos uma vez. Meu mdb estava crescendo além de 2 GB e isso quebrou. Eu poderia voltar para uma versão antiga e importar os formulários e apenas perdi um dia de trabalho.
fonte
Encontrei esta ferramenta no SourceForge: http://sourceforge.net/projects/avc/
Eu não o usei, mas pode ser um começo para você. Pode haver outras ferramentas de terceiros integradas ao VSS ou SVN que fazem o que você precisa.
Pessoalmente, apenas mantenho um arquivo de texto simples à mão para manter um registro de alterações. Quando confirmo o MDB binário, uso as entradas no log de alterações como meu comentário de confirmação.
fonte
Para completar...
Sempre há "Ferramentas do Visual Studio [YEAR] para o Microsoft Office System" ( http://msdn.microsoft.com/en-us/vs2005/aa718673.aspx ), mas isso parece exigir o VSS. Para mim, o VSS (auto-corrompimento) é pior do que os meus 347 pontos de salvamento no meu compartilhamento de rede com backup superior.
fonte
estou usando o suplemento do Access 2003: controle de código-fonte . Funciona bem. Um problema são caracteres inválidos como um ":".
Estou entrando e saindo. Internamente, o suplemento faz o mesmo que o código lá em cima, mas com mais suporte de ferramenta. Eu posso ver se um objeto está com check-out e atualizá-lo.
fonte
Você também pode conectar seu MS Access ao Team Foundation Server. Há também uma variante Express gratuita para até 5 desenvolvedores. Funciona muito bem!
Editar: link fixo
fonte
A resposta de Oliver funciona muito bem. Encontre minha versão estendida abaixo que adiciona suporte para consultas do Access.
( consulte a resposta de Oliver para obter mais informações / uso)
decompose.vbs:
compose.vbs:
fonte
Tentei ajudar a contribuir com sua resposta adicionando uma opção de exportação para consultas no banco de dados de acesso. (Com ampla ajuda de outras respostas do SO )
Não consigo trabalhar com isso de volta no recurso 'compor', mas não é isso que eu preciso fazer agora.
Nota: Também adicionei ".txt" a cada um dos nomes de arquivo exportados em decompose.vbs para que o controle de origem me mostrasse imediatamente as diferenças de arquivo.
Espero que ajude!
fonte
Esta entrada descreve uma abordagem totalmente diferente das outras entradas e pode não ser o que você está procurando. Portanto, não ficarei ofendido se você ignorar isso. Mas pelo menos é alimento para reflexão.
Em alguns ambientes profissionais de desenvolvimento de software comercial, o gerenciamento de configuração (CM) das entregas de software normalmente não é feito dentro próprio aplicativo ou no próprio projeto de software. O CM é imposto aos produtos finais a serem entregues, salvando o software em uma pasta especial do CM, onde o arquivo e sua pasta são marcados com a identificação da versão. Por exemplo, o Clearcase permite que o gerenciador de dados "faça check-in" de um arquivo de software, atribua a ele uma "ramificação", atribua a ele uma "bolha" e aplique "rótulos". Quando você deseja ver e baixar um arquivo, é necessário configurar sua "config spec" para apontar para a versão desejada e, em seguida, colocar o CD na pasta e pronto.
Apenas uma ideia.
fonte
Para quem ficou com o Access 97, não consegui que as outras respostas funcionassem. Usando uma combinação das excelentes respostas de Oliver e DaveParillo e fazendo algumas modificações, consegui que os scripts funcionassem com nossos bancos de dados do Access 97. Também é um pouco mais amigável, pois pergunta qual pasta colocar os arquivos.
AccessExport.vbs:
E para importar arquivos para o banco de dados, você deve recriá-lo do zero ou deseja modificar os arquivos fora do Access por algum motivo.
AccessImport.vbs:
fonte