2009-09-29 4 views
0

J'ai cet ancien MS Acceess db plein de données utiles, mais la version plus récente du logiciel nécessite une version plus récente de db (plus récentes que les différences dans la conception de DB et quelques corrections). Avec Sql Server ou il n'y a aucun problème, j'écrirais un script et j'aurais un DB amélioré. Avec Access J'ai des problèmes quand j'essaie d'écrire un script moi-même et quand j'utilise des outils pour générer des scripts.Est-il possible de mettre à niveau l'ancienne base de données d'accès MS avec le script?

Aidez-nous s'il vous plaît. Pourquoi ne pas vous connecter à votre base de données d'accès ole avec un autre outil pour extraire les données?

+0

est-ce une opération unique ou quelque chose qui doit être exécuté fréquemment? Si l'ancien, je ne l'ai jamais trouvé la peine le temps de quelque chose de script que je peux faire manuellement, car il faut beaucoup plus de temps pour écrire le code et le tester que pour faire les changements manuellement –

Répondre

0

Pourquoi ne pas vous connecter à votre base de données d'accès ole avec un autre outil pour extraire les données? Excel peut faire le travail, et je suppose que beaucoup d'autres outils (plus ou moins) libres peuvent transférer toutes ces données vers votre serveur préféré.

+0

Il me semble que la question implique que les données doivent rester dans le magasin de données Jet/ACE. –

1

Compare'Em Cet utilitaire va créer le VBA nécessaire (ou DDL si vous lui payez les 10 $) pour générer les différences entre deux MDB backend. Bien qu'il ait ses bizarreries, il fait un travail raisonnablement bon. Je l'utilise tout le temps pour mes propres applications "shrink wrap".

Je conserve un numéro de version dans un champ spécifique d'une table et j'exécute le code approprié lors de la première liaison à la BE MDB pour mettre à jour la BEBB BE dans la nouvelle structure de fichier. Chaque mise à jour de version est dans son propre sous-programme. J'utilise ce qui suit pour mettre à jour le numéro de version au numéro de version suivant.

' Update VersionNumberData on table 
strSQL = "UPDATE zDataVersionNumberApp IN '" & strDatabasePathandName & "' SET zDataVersionNumber = " & _ 
    CurrentVersionNumber 
CurrentDb.Execute strSQL, dbFailOnError 

Bien sûr, après l'exécution de la mi-chemin de code à travers pour créer les nouvelles tables, des champs, des index et des relations que je puis exécuter différentes requêtes mise à jour/insertion pour nettoyer les données. Continuez ensuite à exécuter le code généré pour supprimer les anciens champs/tables. La syntaxe pour les requêtes de mise à jour/insertion utilisant la clause IN est un peu complexe, par exemple je vais inclure un exemple: déplacer un nom de technicien de service tapé dans une autre table pour que le système puisse utiliser une zone de liste déroulante , affecter les taux horaires technologie et ainsi de suite.

' Append records to ServiceRecords table 
strSQL = "INSERT INTO ServiceTech (stServiceTech) " & _ 
    " IN '" & strDatabasePathandName & "' " & _ 
    "SELECT srServicePerson FROM ServiceRecords " & _ 
    " IN '" & strDatabasePathandName & "' " & _ 
    "GROUP BY srServicePerson " & _ 
    "HAVING (srServicePerson Is Not Null);" 
CurrentDb.Execute strSQL, dbFailOnError 
Questions connexes