2016-07-06 2 views
0

ich eine API (Feuerbasis als Backend) nenne und als Antwort bekomme ich die folgenden DatenSpeichern von CSV in Zugriff MS VBA basierend auf Antwort von API

{ 
    "-KLk7i27KUizlqMEnua2": true, 
    "-KLk9uAth59pyDImwjtu": true, 
    "-KLszfh9xdYNqa5LcEvE": true, 
    "-KLt-bCr5Fw9wCIFz9Mc": true 
} 

ich die { und } und dann bin ersetzt mit die Daten als CSV.

Ich mag die Daten in tblStudents unter Spalte soll studentID

Welche Funktion/Methode verwendet werden, speichern diese Daten in Tabellen zu speichern, die ich von API erhalten.

Jede Hilfe wird geschätzt. Oder führe mich zur relevanten Seite.

Antwort

1

Mit der Json-Module von VBA.CVRAPI Sie diese Funktionen ändern können den JSON-String zu lesen, wie ist, und die Daten direkt zu Ihrem Cord-hinzufügen:

Public Sub TestJsonResponseText() 

    Dim ResponseText As String 

    ' For testing only. 
    ResponseText = _ 
     "{" & _ 
     """-KLk7i27KUizlqMEnua2"": true," & _ 
     """-KLk9uAth59pyDImwjtu"": true," & _ 
     """-KLszfh9xdYNqa5LcEvE"": true," & _ 
     """-KLt-bCr5Fw9wCIFz9Mc"": true" & _ 
     "}" 

    Dim DataCollection  As Collection 
    If ResponseText <> "" Then 
     Set DataCollection = CollectJson(ResponseText) 
    End If 

    Call ListFieldNames(DataCollection) 

    Set DataCollection = Nothing 

End Sub 


Public Sub ListFieldNames(_ 
    ByVal DataCollection As Collection) 

    On Error GoTo Err_ListFieldNames 

    Dim Index    As Long 

    For Index = 1 To DataCollection.Count 
     If VarType(DataCollection(Index)(CollectionItem.Data)) = vbObject Then 
      Debug.Print "rs.OpenRecordset" 
      Call ListFieldNames(DataCollection(Index)(CollectionItem.Data)) 
      Debug.Print "rs.Close" 
     Else 
      Debug.Print , "AddNew" 
      Debug.Print , DataCollection(Index)(CollectionItem.Name), DataCollection(Index)(CollectionItem.Data) 
      Debug.Print , "Update" 
     End If 
    Next 

Exit_ListFieldNames: 
    Exit Sub 

Err_ListFieldNames: 
    Debug.Print "Error" & Str(Err.Number) & ": " & Err.Description 
    Resume Exit_ListFieldNames 

End Sub 

Natürlich ersetzen die Debug.Print Linien mit Code mit Ihrem Re-Cord-Set umzugehen.

Zum Testen der Funktion TestJsonResponseText über Rückkehr:

rs.OpenRecordset 
       AddNew 
       -KLk7i27KUizlqMEnua2  True 
       Update 
       AddNew 
       -KLk9uAth59pyDImwjtu  True 
       Update 
       AddNew 
       -KLszfh9xdYNqa5LcEvE  True 
       Update 
       AddNew 
       -KLt-bCr5Fw9wCIFz9Mc  True 
       Update 
rs.Close 
+0

Es gibt nur wenige '.bas' Dateien im Github. Welche '.bas' Datei sollte ich importieren um das zu testen? –

+1

Es sind die _Json * .bas_ Dateien. Das _JsonTest.bas_ ist das zu ändernde (wie oben verwendet) oder durch Ihren eigenen Code zu ersetzen. – Gustav

+0

Wenn ich 'DataCollection (Index) (CollectionItem.Name)' auf meine Konsole drucke, bekomme ich nur 'root'. Ich habe auch versucht, '1' anstelle von' index' hinzuzufügen –