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

VBA Access Discussion :

VBA JSON erreur dans la lecture du Dictionnary [AC-365]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut VBA JSON erreur dans la lecture du Dictionnary
    Bonjour à tous.

    Je suis devant une erreur que je ne comprends pas et pour laquelle je n'ai pas trouvé de solution dans tous les posts traitant du sujet ici (ou même ailleurs du reste).
    Tout d'abords j'ai installé deux chose dans ACCESS :
    - https://github.com/VBA-tools/VBA-JSON/releases VBA JSON
    - https://github.com/VBA-tools/VBA-Dictionary VBA-Dictionnary

    Mon but est de lire une chaine JSON (un retour de l'API IMDB pour info) et extraire les champs pour fabriquer une table correspondant à la structure de la chaine.
    Ensuite, j'importerais les données dans cette table. Comme ça je me conforme au modèle de donnée de IMDB et je suis tranquille.

    Ensuite j'ai trouvé cela pour m'aider à récupérer la structure JSON : https://askcodez.com/analyse-de-flux...ms-access.html
    J'ai fait un formulaire et j'ai posé un bouton dedans. Voici mon code actuel :

    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
    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
    Option Compare Database
    
    Private Sub btnOuvrirJson_Click()
    Dim AppExcel As New Excel.Application
    Dim pathretourne As Variant
     
    pathretourne = AppExcel.GetopenfileName
     
    If pathretourne <> False Then
        JSONImport (pathretourne)
    Else
        MsgBox "Ce n'est pas une chaine JSON valide"
    End If
    End Sub
    
    Private Function JSONImport(CheminJson As String)
        Dim db As Database, qdef As QueryDef
        Dim FileNum As Integer
        Dim DataLine As String, jsonStr As String, strSQL As String
        Dim p As Object, element As Variant
    
        Set db = CurrentDb
    
        ' READ FROM EXTERNAL FILE
        FileNum = FreeFile()
        Open CheminJson For Input As #FileNum
    
        ' PARSE FILE STRING
        jsonStr = ""
        While Not EOF(FileNum)
            Line Input #FileNum, DataLine
    
            jsonStr = jsonStr & DataLine & vbNewLine
        Wend
        Close #FileNum
        Set p = ParseJson(jsonStr)
        
        ' ITERATE THROUGH DATA ROWS, APPENDING TO TABLE
        For Each element In p
            strSQL = "PARAMETERS [col1] Long, [col2] Text(255), [col3] Text(255), " _
                              & "[col4] Text(255), [col5] Text(255); " _
                      & "INSERT INTO TableName (col1, col2, col3, col4, col5) " _
                              & "VALUES([col1], [col2], [col3], [col4], [col5]);"
    
            Set qdef = db.CreateQueryDef("", strSQL)
    
            qdef!col1 = element("col1")
            qdef!col2 = element("col2")
            qdef!col3 = element("col3")
            qdef!col4 = element("col4")
            qdef!col5 = element("col5")
    
            'qdef.Execute
            MsgBox qdef, vbCritical, "on va voir"
        Next element
    
        Set element = Nothing
        Set p = Nothing
    End Function
    Lorsque je clique sur le bouton le programme démarre bien, me demande d'ouvrir la fichier JSON et ensuite il plante sur la ligne que j'ai mis en rouge et me dit :
    Erreur d'exécution '438':
    Propriété ou méthode non gérée par cet objet
    J'en déduit qu'il ne doit pas trouver les 'element' dans p mais je n'arrive pas à comprendre pourquoi parce que je dois bien avouer que je ne comprends pas tout dans le code de VBA-Dictionnary et de VBA-JSON
    Ou alors j'ai un souci de version, mais je sais pas.

    Pourriez-vous m'aider ?
    Merci d'avance.

  2. #2
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 290
    Par défaut
    Salut
    Une piste, les items génériques (col1, col2, coln) ne sont ni dans votre chaine json et ni champs de votre table probablement.

  3. #3
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Merci beaucoup, un peu en retard, mais les vacances et la reprise, tout ça tout ça....

    Entre temps j'ai été obligé de changer de support et passer par du ASP.NET et sur SQL server du coup, j'ai moins de problème d'import de JSON, mais plus de liaison de class en C# !!!

    Bonne continuation.

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

Discussions similaires

  1. Erreur dans la lecture dans fichier M-file
    Par Pedrozito dans le forum MATLAB
    Réponses: 7
    Dernier message: 22/05/2008, 16h16
  2. Erreur dans la lecture d'un blob text
    Par colorid dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/11/2007, 23h25
  3. [VBA][03] Erreur dans une fonction qui vide des tables
    Par NiKoTiNe dans le forum VBA Access
    Réponses: 3
    Dernier message: 20/04/2007, 14h13
  4. VBA-Excel Erreur dans syntaxe requete en utilisant ADO
    Par rafnt dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2006, 14h23
  5. [VBA-A]erreur dans ma date...
    Par matel dans le forum VBA Access
    Réponses: 7
    Dernier message: 03/04/2006, 15h57

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