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

Résolu
artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   -  
artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   -
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...
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   7
     
    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
  2. artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   7
     
    Trouvé
    1
  3. artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   7
     
    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
  4. artamys Messages postés 122 Date d'inscription   Statut Membre Dernière intervention   7
     
    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