IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

SQLITE - XML Blob [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Par défaut SQLITE - XML Blob
    Bonjour à tous,

    Je cherche comment insérer des données XML dans une base de données SQLite depuis une macro VBA.
    J'ai choisir d'insérer mes données dans un champs BLOB.

    Voici un extrait de mon code, la fonction insert fonctionne correctement (j'insère une String).
    Par contre la fonction get_five_last_record me retourne tous les champs sauf le BLOB. Est-ce que quelqu'un peut m'aider?

    D'avance, merci beaucoup de votre aide.
    Très bonne journée et meilleures salutations.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    'insert mesure proof
    'this function insert a XML document, the id is the current date
    Public Function insert(docXML As MSXML2.DOMDocument30) As ADODB.Recordset
        Dim sql_str As String
        Dim currente_date As Date
        Dim result As ADODB.Recordset
        currente_date = Now
        sql_str = "INSERT INTO proof_mesures ('due_date', 'xml_data') VALUES ('" & currente_date & "', '" & docXML.XML & "')"
        Set result = pConn.Execute(sql_str)
        Set insert = result
    End Function
     
     
    'get 5 last mesure proof
    Public Function get_five_last_record() As ADODB.Recordset
        Dim result As ADODB.Recordset
        Dim sql_str As String
        sql_str = "SELECT xml_data FROM proof_mesures ORDER BY due_date DESC LIMIT 5"
        Set result = pConn.Execute(sql_str)
     
        Set get_five_last_record = result
    End Function

  2. #2
    Invité
    Invité(e)
    Par défaut
    bonjour,
    que n'arrive tu pas à faire?
    te connecter a la base de données?
    ou Insérer le xml?

  3. #3
    Membre confirmé
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Par défaut merci
    Bonjour,

    Merci pour ta réponse. Je n'arrive pas à récupérer le XML!
    De plus, je ne sais pas si c'est correct de faire "docXML.XML" avant l'enregistrement dans le bob?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sql_str = "INSERT INTO proof_mesures ('due_date', 'xml_data') VALUES ('" & currente_date & "', '" & docXML.XML & "')"

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim oXML As MSXML2.DOMDocument
    Dim oNode As MSXML2.IXMLDOMNode
    Set oXML = New MSXML2.DOMDocument
    Dim xm As XMLHTTP
    oXML.async = False
    oXML.Load "C:\OEAT\compiled.xml"
    insert oXML
    End Sub
    http://arkham46.developpez.com/artic...b/?page=page_4

  5. #5
    Membre confirmé
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Par défaut Merci
    Hello,

    Merci beaucoup pour ta réponse. J'arrive à insérer le XML dans la base de données. Si je fais une requête SQL j'obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "<?xml version=""1.0"" encoding=""UTF-16""?>
    <network><node>one</node><nodes><node>1</node><node>2</node></nodes><node>two</node></network>
    "
    Par contre quand j'utilise la fonction "get_five_last_record", je reçois ça:
    : Bookmark : <Le jeu d'enregistrements en cours ne prend pas en charge les signets. Il s'agit peut-être d'une limitation du fournisseur ou du type de curseur sélectionné.> : Variant

    Et je comprends pas ce que ça veut dire. Même avec des recherches
    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function get_five_last_record() As ADODB.Recordset
     
        Dim sql_str As String
        Set get_five_last_record = New ADODB.Recordset
        sql_str = "SELECT xml_data FROM proof_mesures ORDER BY due_date DESC LIMIT 5"
        get_five_last_record.Open sql_str, pConn, adOpenDynamic, adLockReadOnly
     
     
    End Function
    à toi de gérer les paramètres: adOpenDynamic,adOpenForwardOnly...,adLockReadOnly...

  7. #7
    Membre confirmé
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Par défaut merci j'ai fait des recherches
    Bonjour,

    Merci beaucoup pour vos réponses, j'ai lus de la documentation là-dessus.
    Mais je n'arrive toujours pas à relire le XML que j'ai stocké dans la base de données. Je reçois une chaîne qui contient que des points d'intégorations, le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Do Until result2.EOF
            For i = 0 To result2.Fields.Count
            str_return = result2(0).value
            Debug.Print str_return
            Set XML = New MSXML2.DOMDocument30
            XML.LoadXML (str_return)
            Debug.Print XML.Text
     
        Next i
        result2.MoveNext
        Loop
    Me donne ce résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    ?????????•??????????????????????????????????????????????????????????
     
     
    ?????????•??????????????????????????????????????????????????????????
     
    ?????????•??????????????????????????????????????????????????????????
     
    ?????????•??????????????????????????????????????????????????????????
    Merci beaucoup!

  8. #8
    Invité
    Invité(e)
    Par défaut
    bonjour,
    peux tu me donner un fichier Sqlite avec que la table sans data pour que je face des test?

  9. #9
    Membre confirmé
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Par défaut Merci
    Bonjour,

    Merci beaucoup.
    Le code SQL que j'ai exécuté pour avoir ma base de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE TABLE "proof_mesures" ("due_date" DATETIME PRIMARY KEY  NOT NULL  UNIQUE , "xml_data" BLOB NOT NULL )
    Je ne sais pas vraiment comment te donner le fichier sans data mais il est très léger et il n'y a rien d'utile c'est juste des tests.

    Merci infiniment pour ton aide!
    Fichiers attachés Fichiers attachés

  10. #10
    Invité
    Invité(e)
    Par défaut
    personnellement j'ai jamais réussie à utiliser les champ BLOB je prends le texte.
    c'est la même chose.
    j'arrive a entrer des valeur mais pas à les lires rs.eof toujours à true??
    ça vient de mon driver je supposes !!

  11. #11
    Membre confirmé
    Homme Profil pro
    graphisme & impression
    Inscrit en
    Mars 2011
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : graphisme & impression

    Informations forums :
    Inscription : Mars 2011
    Messages : 118
    Par défaut ok
    Bonjour,

    Merci beaucoup pour ton aide… Effectivement, ça marche avec un champs TEXT. Il faudra vraiment que je fasse des recherches sur les BLOB car il me semblait que c'était une bonne manière de stocker des fichiers…
    Mais pour du XML c'est plus simple en TEXT

    Merci pour ton aide, tu m'as mis sur la bonne voie.

    Meilleures salutations.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quel SGBD choisir : Mysql VS sqlite VS XML ?
    Par rafik3615 dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 06/02/2008, 08h39
  2. Insertion de BLOB,CLOB,xml avec oracle 10g
    Par Dx_ter dans le forum Coldfusion
    Réponses: 1
    Dernier message: 10/07/2007, 11h34
  3. Réponses: 2
    Dernier message: 29/05/2007, 08h31
  4. [SQLite] Comment lire un champ BLOB ?
    Par Pierre8r dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/06/2006, 10h20
  5. Réponses: 1
    Dernier message: 09/06/2006, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo