Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/10/2011, 07h31   #1
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : octobre 2011
Messages : 3
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Conseil

Informations forums :
Inscription : octobre 2011
Messages : 3
Points : 0
Points : 0
Par défaut Export Table en fichier Txt : Access 2003 et Windows 7

Bonjour à tous,

Je viens de migrer sous Seven. J'utilisais sous XP un bout de code pour exporter une table en fichier Txt qui marchait très bien :

Code :
1
2
 
DoCmd.TransferText acExportDelim, , NomTable,NomChemin,True
Sous Seven, j'ai une message d'erreur :

Erreur 3441 : Le séparateur du champ de spécification du fichier texte est
identique au séparateur décimal ou au délimitateur de texte.

Donc, j'ai créé une export manuelle pour enregistrer une spécification d'exportation.

Code :
1
2
 
DoCmd.TransferText acExportDelim, NomSpec, NomTable,NomChemin,True
Par contre, j'ai un programme qui créé des dizaines de tables de structure différentes, impossible de faire des exports manuels pour sauvegarder les spécifications d'exportation.

J'ai donc trouvé sur le net, qu'avec Seven, il fallait créer un schema.ini dans le même répertoire qui recevra le fichier exporter.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
 
Option Explicit
Option Compare Database
 
Public Function CreateSchemaFile(bIncFldNames As Boolean, _
                                       sPath As String, _
                                       sSectionName As String, _
                                       sTblQryName As String) As Boolean
         Dim Msg As String ' For error handling.
         On Local Error GoTo CreateSchemaFile_Err
         Dim ws As Workspace, db As Database
         Dim tblDef As TableDef, fldDef As Field
         Dim i As Integer, Handle As Integer
         Dim fldName As String, fldDataInfo As String
         ' -----------------------------------------------
         ' Set DAO objects.
         ' -----------------------------------------------
         Set db = CurrentDb()
         ' -----------------------------------------------
         ' Open schema file for append.
         ' -----------------------------------------------
         Handle = FreeFile
         Open sPath & "schema.ini" For Output Access Write As #Handle
         ' -----------------------------------------------
         ' Write schema header.
         ' -----------------------------------------------
         Print #Handle, "[" & sSectionName & "]"
 
 
         'Print #Handle, "Format = TabDelimited"
         'Print #Handle, "Format = Delimited(;)"
         Print #Handle, "Format = CSVDelimited"
 
         Print #Handle, "TextDelimeter = ;"
         Print #Handle, "DecimalSymbol = ."
         Print #Handle, "ColNameHeader = " & _
                         IIf(bIncFldNames, "True", "False")
         Print #Handle, "CharacterSet = ANSI"
 
 
         ' -----------------------------------------------
         ' Get data concerning schema file.
         ' -----------------------------------------------
         Set tblDef = db.TableDefs(sTblQryName)
         With tblDef
            For i = 0 To .Fields.Count - 1
               Set fldDef = .Fields(i)
               With fldDef
                  fldName = .Name
                  Select Case .Type
                     Case dbBoolean
                        fldDataInfo = "Bit"
                     Case dbByte
                        fldDataInfo = "Byte"
                     Case dbInteger
                        fldDataInfo = "Short"
                     Case dbLong
                        fldDataInfo = "Integer"
                     Case dbCurrency
                        fldDataInfo = "Currency"
                     Case dbSingle
                        fldDataInfo = "Single"
                     Case dbDouble
                        fldDataInfo = "Double"
                     Case dbDate
                        fldDataInfo = "Date"
                     Case dbText
                        fldDataInfo = "Char Width " & Format$(.Size)
                     Case dbLongBinary
                        fldDataInfo = "OLE"
                     Case dbMemo
                        fldDataInfo = "LongChar"
                     Case dbGUID
                        fldDataInfo = "Char Width 16"
                  End Select
                  Print #Handle, "Col" & Format$(i + 1) _
                                  & "=" & fldName & Space$(1) _
                                  & fldDataInfo
               End With
            Next i
         End With
         'MsgBox sPath & "SCHEMA.INI has been created."
         CreateSchemaFile = True
CreateSchemaFile_End:
         Close Handle
         Exit Function
CreateSchemaFile_Err:
         Msg = "Error #: " & Format$(Err.Number) & vbCrLf
         Msg = Msg & Err.Description
         'MsgBox Msg
         Resume CreateSchemaFile_End
      End Function
J'appelle cette fonction avant chaque export en utilisant cette ligne de code :

Code :
1
2
 
DoCmd.TransferText acExportDelim, , NomTable,NomChemin,True

L'export marche, mais il ne prend pas en compte ces deux instructions :
TextDelimeter = ; (Il me met des ,)
DecimalSymbol = . (Il me met des , si je suis en , dans mes options régionales)

Après plusieurs heures passé sur le problème, je bloque!

Quelqu'un a-t-il une idée?

Merci

Julien
cquad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/11/2011, 14h27   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 756
Points : 1 756
Bonjour,
ce bout de code semble la solution, associé à CreateSchemaFile
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
Public Sub ExportTable()
 Dim NomChemin As String
 Dim NomFichier As String
 Dim sql As String
 Dim Exporter As QueryDef
 
 NomChemin= "c:\export\"
 NomFichier = "test.txt"
 NomTable = "Table1"
 
 CreateSchemaFile True, NomChemin, NomFichier , NomTable
 sql = "SELECT * INTO [Text;DATABASE=" + NomChemin+ "].[" + NomFichier + "] FROM [" & NomTable & "]"
 Set Exporter = CurrentDb.CreateQueryDef("", sql)
 Exporter.Execute
End Sub
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h03.


 
 
 
 
Partenaires

Hébergement Web