Fichiers xml et ado creation, lecture

Contenu du snippet

Crée un fichier XML (VB) en local ,
Ouverture de ce fichier avec ADO, Mise à jour d'enregistrements.
Son utilisation est par exemple la récupération de données sur un serveur, leur mise en forme... afin d'éviter de laisser traîner ces données en collection ( liste trop longue donc mémoire dispo réduite) .
Cela évite les allez et retour sur le serveur. Les possibilités de filtrer le fichier etc…
Je mets cette source à votre dispo ( Et votre indulgence, le code est extrait d'une source et simplifié )

Source / Exemple :


Option Explicit

Private Const NomDirTmpXml  As String = "C:\temp\XMLFichier.xml"

Private ObjRecClients       As ADODB.Recordset

Private IdentIDT As Long

Private Sub CreerLeRec()

    Set ObjRecClients = New ADODB.Recordset

    With ObjRecClients.Fields
        .Append ("NumId"), adWChar, 25, adFldRowID
        .Append ("Nom"), adWChar, 65, adFldLong
        .Append ("Prenom"), adWChar, 65, adFldLong
        .Append ("Titre"), adWChar, 60, adFldLong
        ObjRecClients.Open
    End With
    
End Sub

Private Sub AjoutAuRecordSetXml(Nom As String, Prenom As String, Titre As String, Optional MiseAjour As Boolean)
            
    If MiseAjour Then
        If ObjRecClients Is Nothing Then Set ObjRecClients = OuvreXMLSeul
    End If
    
    With ObjRecClients
        
        IdentIDT = IdentIDT + 1
        
        .AddNew
        .Fields("NumId").Value = CStr(IdentIDT)
        .Fields("Nom").Value = Nom
        .Fields("Prenom").Value = Prenom
        .Fields("Titre").Value = Titre
        
        If MiseAjour Then
            .UpdateBatch
             EnregistreXML ObjRecClients
        End If
    
    End With
    
End Sub

Private Sub EnregistreXML(LeRecordSet As ADODB.Recordset)
    
    'Le fichier étant présent dans NomDirTmpXml il est impératif en cas de
    'rechargement complet de supprimer ce fichier avant de le créer.
    
    On Error Resume Next
        Kill NomDirTmpXml
    On Error GoTo 0
    
    'L'option adPersistXML est simplement à préciser
    LeRecordSet.Save NomDirTmpXml, adPersistXML
    LeRecordSet.Close
    Set LeRecordSet = Nothing
    
End Sub

Private Function OuvreXMLSeul() As Recordset
Dim LeRecordSet As New ADODB.Recordset
    
    'Ouvrir tout simplement en passant en param le chemin
    LeRecordSet.Open NomDirTmpXml
    Set OuvreXMLSeul = LeRecordSet
       
End Function

Private Sub Cmdadd_Click()
    AjoutAuRecordSetXml Me.TextNom, Me.TextPrenom, Me.TextTitre, True
End Sub

Private Sub Form_Load()
    CreerLeRec 'En 1°)
    EnregistreXML ObjRecClients ' en 2°) l'enregistrer en local
End Sub

Conclusion :


ce code est extrait d'une de mes sources, il est réduit et simplifié afin d'en expliquer son fonctionnement ( ps : excusez la gesion de l'id : IdentIDT , j'avais rien d'autre en stock ).

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.