[access-VBA] Créer un modele de champs import

Résolu/Fermé
artamys Messages postés 120 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 9 mars 2018 - 11 sept. 2008 à 14:01
artamys Messages postés 120 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 9 mars 2018 - 12 sept. 2008 à 11:31
Bonjour,

Je dois importer en automatique plusieurs fichiers dont les caratéristiques (délimitateur ou longueur de champs, champs) ont été enregistrés dans des tables.

Le problème est que certaine catégorie de fichiers sont sans délimitateur et avec une longueur fixe pour chaque champs.

comme c'est de l'automatique, il va falloir que je crée un modèle de champs dans la table MSysIMEXSpecs et que je puisse aller le chercher pour importer ce type de fichier.

Et la petite question :

Comment fait ton pour le créer en VBA ?

une autre possibilité serait de créer un fichier schema.ini a chaque import et le supprimer ensuite.
les recherches sont en cours mais c'est pas évident...
A voir également:

4 réponses

artamys Messages postés 120 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 9 mars 2018 7
12 sept. 2008 à 11:05
bon encore un probleme, tout marche, je crée en automatique le fichier schema.ini

il a tout de bon sauf le format qui est delimite et qui faut mettre en longueur fixe, il faut donc que je puisse ouvrir en VBA le .ini et changer le format ?
Quelqu'un a une iidée ?

Après c'est JACKPOT !!!!!
1
artamys Messages postés 120 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 9 mars 2018 7
12 sept. 2008 à 11:31
Trouvé
1
artamys Messages postés 120 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 9 mars 2018 7
11 sept. 2008 à 16:16
bonjour,
A priori existe une fonction developpé sur le site microsoft, qui donne le moyen de créer un schema.ini qui permettrai de connaitre les caractériqtiques necessaire pour importer un fichier sur mesure a partir des caractéristiques d'une table.
ça tombe bien, je créé autmatiquement les tables hotes avec les caractéristiques adaptées.

donc si j'arrive a faire marcher cette fonction, je crée un schéma ini et je peux charger mon fichier ?
allez travaillons encore et encore...


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, "ColNameHeader = " & _
IIf(bIncFldNames, "True", "False")
Print #Handle, "CharacterSet = ANSI"
Print #Handle, "Format = TabDelimited"
' -----------------------------------------------
' 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
0
artamys Messages postés 120 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 9 mars 2018 7
11 sept. 2008 à 17:29
ok, la fonction marchesi on fait z=fonction mais maintenant je n'ai plus qu'une petite question, comment on utilise le fichier schema.ini dans une procédure d'import.


merci.
0