web-dev-qa-db-fra.com

Comment modifier une spécification d'importation Microsoft Access 2007 ou 2010 enregistrée?

Quelqu'un sait-il comment modifier une spécification d'importation existante dans Microsoft Access 2007 ou 2010? Dans les anciennes versions, il existait un bouton Avancé présenté lors de l'assistant d'importation qui vous permettait de sélectionner et de modifier une spécification existante. Je ne vois plus cette fonctionnalité mais j'espère qu'elle existe toujours et qu'elle vient d'être déplacée ailleurs.

38
L G

Je peux utiliser cette fonctionnalité sur ma machine avec MS Access 2007.

  • Sur le ruban, sélectionnez Données externes. 
  • Sélectionnez l'option "Fichier texte" 
  • Ceci affiche le message Obtenir des données externes Wizard 
  • Spécifiez l'emplacement du fichier que vous souhaitez importer 
  • Cliquez sur OK. Ceci affiche le "Assistant d'importation de texte" 
  • Au bas de cette boîte de dialogue se trouve le bouton Avancé que vous avez référencé. 
  • Un clic sur ce bouton devrait afficher l'écran Spécification d'importation et vous permettre de sélectionner et de modifier une spécification d'importation existante. 

Pour ce que ça vaut, j'utilise Access 2007 SP1

39
Tim Lentine

Je ne crois pas qu'il existe un moyen de soutien direct. Toutefois, si vous êtes désespéré, sélectionnez Options d'affichage pour afficher les objets système dans les options de navigation. Ensuite, dans votre liste de tables, les tables système apparaîtront. Deux tables sont intéressantes ici: MSysIMEXspecs et MSysIMEXColumns. Vous pourrez modifier les informations d'importation et d'exportation. Bonne chance!

14
Knox

La réponse de Tim Lentine semble être vraie, même dans la version complète. Il y a juste une autre chose que je voudrais mentionner.

Si vous terminez votre importation sans passer par "Avancé ..." et en enregistrant la spécification, mais que vous sauvegardez l'importation pour la réutiliser à la fin de l'Assistant (nouvelle fonctionnalité AFAIK), vous ne pourrez plus revenir en arrière et l'éditer. spec. Il est intégré à "l’importation enregistrée". C’est peut-être à cela que Knox faisait allusion.

Vous pouvez cependant faire un travail partiel autour de:

  1. Importer un nouveau fichier (ou le même fichier à nouveau) mais,
  2. Cette fois, choisissez d'ajouter, au lieu de faire une nouvelle 
  3. Cliquez sur OK.
  4. Allez dans "avancé" Tous vos en-têtes de colonnes et types de données seront là.
  5. Maintenant, vous pouvez apporter les modifications dont vous avez besoin et enregistrer la spécification dans cette boîte de dialogue. Puis annulez cette importation (ce n'est pas ce que vous vouliez quand même, non?)
  6. Vous pouvez ensuite utiliser cette spécification pour d'autres importations. Ce n'est pas une solution complète, mais enregistre une partie du travail.
7
Luke Gedeon

Vous trouverez ci-dessous trois fonctions que vous pouvez utiliser pour modifier et utiliser la spécification d'importation MS Access 2010. Le troisième sous change le nom d'une spécification d'importation existante. Le second sous vous permet de changer n'importe quel texte XML dans la spécification d'importation. Ceci est utile si vous devez modifier les noms des colonnes, les types de données, ajouter des colonnes, modifier l'emplacement du fichier d'importation, etc. Tout ce que vous souhaitez modifier pour une spécification existante est essentiellement essentiel. Le premier sous-programme est une routine qui vous permet d'appeler une spécification d'importation existante, de la modifier pour un fichier spécifique que vous tentez d'importer, d'importer ce fichier, puis de supprimer la spécification modifiée, en conservant la spécification d'importation "modèle" intacte et intacte. Prendre plaisir.

Public Sub MyExcelTransfer(myTempTable As String, myPath As String)
On Error GoTo ERR_Handler:
    Dim mySpec As ImportExportSpecification
    Dim myNewSpec As ImportExportSpecification
    Dim x As Integer

    For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
    If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
        CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
        x = CurrentProject.ImportExportSpecifications.Count
    End If
    Next x
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(myTempTable)
    CurrentProject.ImportExportSpecifications.Add "TemporaryImport", mySpec.XML
    Set myNewSpec = CurrentProject.ImportExportSpecifications.Item("TemporaryImport")

    myNewSpec.XML = Replace(myNewSpec.XML, "\\MyComputer\ChangeThis", myPath)
    myNewSpec.Execute
    myNewSpec.Delete
    Set mySpec = Nothing
    Set myNewSpec = Nothing
    exit_ErrHandler:
    For x = 0 To CurrentProject.ImportExportSpecifications.Count - 1
    If CurrentProject.ImportExportSpecifications.Item(x).Name = "TemporaryImport" Then
        CurrentProject.ImportExportSpecifications.Item("TemporaryImport").Delete
        x = CurrentProject.ImportExportSpecifications.Count
    End If
    Next x
Exit Sub    
ERR_Handler:
    MsgBox Err.Description
    Resume exit_ErrHandler
End Sub

Public Sub fixImportSpecs(myTable As String, strFind As String, strRepl As String)
    Dim mySpec As ImportExportSpecification    
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(myTable)    
    mySpec.XML = Replace(mySpec.XML, strFind, strRepl)
    Set mySpec = Nothing
End Sub


Public Sub MyExcelChangeName(OldName As String, NewName As String)
    Dim mySpec As ImportExportSpecification
    Dim myNewSpec As ImportExportSpecification
    Set mySpec = CurrentProject.ImportExportSpecifications.Item(OldName)    
    CurrentProject.ImportExportSpecifications.Add NewName, mySpec.XML
    mySpec.Delete
    Set mySpec = Nothing
    Set myNewSpec = Nothing
End Sub
5
Mike Hansen

Lorsque je souhaite examiner ou modifier une spécification d'importation/exportation, j'interroge les tables dans MS Access où la spécification est définie.

SELECT 
    MSysIMEXSpecs.SpecName,
    MSysIMexColumns.*
FROM 
    MSysIMEXSpecs
    LEFT JOIN MSysIMEXColumns 
    ON MSysIMEXSpecs.SpecID = MSysIMEXColumns.SpecID
WHERE
    SpecName = 'MySpecName'
ORDER BY
    MSysIMEXSpecs.SpecID, MSysIMEXColumns.Start;

Vous pouvez également utiliser une instruction UPDATE ou INSERT pour modifier des colonnes existantes ou insérer et ajouter de nouvelles colonnes à une spécification existante. Vous pouvez créer des spécifications entièrement nouvelles à l'aide de cette méthodologie.

2
Andrew

Une autre bonne option est le logiciel gratuit V-Tools addin pour Microsoft Access. Parmi d'autres outils utiles, il dispose d'un formulaire pour éditer et sauvegarder les spécifications d'importation/exportation.

 enter image description here

 enter image description here

Remarque: Depuis la version 1.83, il existe un bogue dans l'énumération des pages de code sous Windows 10. (Apparemment, en raison d'une fonction API manquante/modifiée dans Windows 10). Les outils fonctionnent toujours très bien, il vous suffit de commenter quelques lignes de code ou pas après elle dans la fenêtre de débogage.

Cela a été une véritable bouée de sauvetage pour moi en modifiant une spécification d'importation complexe pour nos commandes en ligne.

1
AdamsTips

Pourquoi si compliqué?

Il suffit de vérifier les objets système dans Access-Options/Base de données actuelle/Options de navigation/Afficher les objets système

Ouvrez la table "MSysIMEXSpecs" et changez selon vos besoins - facile à lire ...

1
JustMakeItSimple

Je viens de découvrir un bogue apparent dans l'ensemble de la configuration d'importation/XML enregistrée dans Access. Également frustré par la rigidité du système d'importation sauvegardée, j'ai créé des formulaires et écrit du code pour séparer le XML dans lequel les spécifications d'importation sauvegardée sont stockées, au point que je pouvais utiliser cet outil pour créer une importation enregistrée à partir de zéro via codé. examen d'un classeur Excel source.

Ce que j’ai découvert, c’est que même si Access importe correctement une feuille de calcul en fonction des modifications apportées aux paramètres par défaut de l’utilisateur (par exemple, il aime prendre n'importe quelle colonne dont le nom d’en-tête se termine par "ID" et en faire un champ indexé dans la liste). la table résultante, mais vous pouvez l'annuler pendant le processus d'importation), et s'il crée également correctement le XML en fonction des modifications apportées par l'utilisateur, si vous supprimez la table et utilisez Importation enregistrée pour réimporter la feuille de calcul, le fichier XML est ignoré. import spec et revient à utiliser ses propres valeurs par défaut, du moins dans le cas des colonnes "ID".

Vous pouvez l'essayer vous-même: importez une feuille de calcul Excel avec au moins un nom d'en-tête de colonne se terminant par "ID" ("ID de commande", "ID d'utilisateur" ou tout simplement "ID"). Au cours du processus, assurez-vous de définir "Indexé" sur Non pour ces colonnes. Exécutez l'importation et cochez la case "Enregistrer les étapes d'importation" dans la fenêtre de dialogue finale. Si vous inspectez la conception de la table résultante, vous verrez qu'il n'y a pas d'index sur le (s) champ (s) en question. Supprimez ensuite la table, recherchez l’importation sauvegardée et exécutez-la à nouveau. Cette fois, ces champs seront définis comme étant indexés dans la conception de la table, même si le XML ne spécifie toujours pas d'index.

Je me tirais les cheveux jusqu'à ce que je découvre ce qui se passait, en comparant le XML que j'ai construit à partir de rien avec des exemples créés avec l'outil Access.

0
Dennis Flory

La réponse de Tim Lentine fonctionne si vous avez vos spécifications sauvegardées. Votre question ne spécifiait pas cela, elle indiquait seulement que vous aviez importé les données. Sa méthode ne sauverait pas vos spécifications de cette façon. 

Pour sauvegarder les spécifications de cette importation actuelle, vous devez rouvrir l’importation en appuyant sur "apend", ce qui vous permettra d’utiliser vos paramètres d’importation actuels que MS Access a récupérés. ( Ceci est utile si vous souhaitez conserver les spécifications d'importation d'un format Excel sur lequel vous avez travaillé avant l'importation dans MS Access.

Une fois que vous êtes dans l'option apend, utilisez les instructions de Tim, qui utilise l'option avancée et "Enregistrer sous". À partir de là, il vous suffit de cliquer sur Annuler pour importer toutes les données similaires dans différentes tables, etc. 

0
Jesse Hernandez