2011-09-04 3 views

Répondre

3

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 
+0

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

+0

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

0

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.

1

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