J'utilise DoCmd.TransferText
pour importer des données du fichier .cvs. J'ai besoin d'ajouter une autre colonne avec la date actuelle aux informations importées. Y a-t-il un moyen simple de le faire?Colonne supplémentaire Microsoft Access DoCmd.TransferText
Répondre
Il y a quelques approches que vous pouvez utiliser:
-Parse le fichier et créer des instructions INSERT via VBA au lieu d'utiliser TransferText. -Si la table existe déjà, vous ajoutez des données à une table existante et vous disposez d'un champ d'ID de numéro automatique ou d'un autre moyen pour distinguer les nouvelles données des anciennes données. Vous pouvez ensuite ajouter la date actuelle après l'importation. via une instruction UPDATE:
Dim latestID As Long
latestID = DMax("yourIDField", "yourTable")
DoCmd.TransferText acImportDelim, , "yourTable", "c:\import.csv", True
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE yourTable SET importedDate = #" & Date & "# WHERE yourIDField > " & latestID
DoCmd.SetWarnings True
-Si une nouvelle table est créée chaque fois que vous importez, vous pouvez utiliser une instruction ALTER pour ajouter la colonne puis un UPDATE pour entrer la date actuelle:
DoCmd.TransferText acImportDelim, , "yourTable", "c:\import.csv"
DoCmd.SetWarnings False
DoCmd.RunSQL "ALTER TABLE yourTable ADD COLUMN importDate DATE"
DoCmd.RunSQL "UPDATE yourTable SET importDate = #" & Date & "#"
DoCmd.SetWarnings True
Une autre méthode consiste à créer une table liée pour le fichier .csv (se indiquez le type de fichier correct dans le formulaire contextuel Ouvrir une boîte de dialogue lors de la création d'une nouvelle table liée) et créez une requête Ajout avec le champ supplémentaire contenant Date()
ou Now()
comme valeur par défaut.
Vous pouvez utiliser schema.ini au lieu de transférer la méthode de texte.
Vérifiez le blog suivant décrit plus sur schema.ini https://officeaccelerators.wordpress.com/2015/02/08/exporting-text-file-from-access/
Set cn = CreateObject("ADODB.Connection")
Set cn = CurrentProject.Connection
sSQL = "insert into TanleName(Field1,Field2,Date) select tab1.Field1,tab1.Field2,date() from "
sSQL = sSQL & "[text;database=FilePath\;HDR=Yes].[Test.csv] as Tab1"
cn.Execute sSQL
- 1. chaîne Microsoft Access analyse
- 2. Microsoft Access Query
- 3. SCOPE_IDENTITY() dans Microsoft Access
- 4. Microsoft Office Access erreur
- 5. Adhésion à Microsoft Access
- 6. Microsoft Access 2010
- 7. PDO Microsoft Access
- 8. Requête Microsoft Access SQL
- 9. question Microsoft Access
- 10. Microsoft Access 2007 Connection
- 11. Microsoft Access Erreur 2482
- 12. table Microsoft Access conception
- 13. question Microsoft Access
- 14. Microsoft Access 2003 SQL Question
- 15. Formulaires Microsoft Access et application Microsoft Windows
- 16. Fonction Microsoft Access TransferText: problème avec la page de codes
- 17. Microsoft Access arrondit automatiquement les nombres
- 18. Microsoft Access - Si Null puis
- 19. Touches concaténées séquentielles Microsoft Access
- 20. Aide requête dans Microsoft Access
- 21. Générateur aléatoire Microsoft Access VB
- 22. Microsoft Access cacher 0 du champ
- 23. Comment insérer une colonne supplémentaire
- 24. Colonne supplémentaire Datagrid
- 25. Colonne supplémentaire dans GridView
- 26. write.table colonne supplémentaire
- 27. Association EF, colonne supplémentaire
- 28. Microsoft Access Désactive l'entrée utilisateur pour l'automatisation
- 29. Bulk Insert avec colonne supplémentaire
- 30. Microsoft Access requête Création de table SQL
Si la table existe déjà, il n'y a pas de problème, car une valeur par défaut de date et l'heure peut être réglée sur le terrain. – Fionnuala
Vous pourriez envisager d'utiliser currentdb.execute plutôt que docmd.runsql, vous n'avez pas besoin d'utiliser les instructions SetWarnings avec cette approche – ChrisPadgham