Quantcast
Channel: Xojo Programming Forum - Latest topics
Viewing all articles
Browse latest Browse all 3699

_VariantString cannot be cast to Dictionary

$
0
0

Hello all,

a problem that drive me crazy

It’s work :

var SagePrixSpec as RecordSet = SageSQLServer.SQLSelect("SELECT CT_Num as Client, AR_Ref as Ref, AC_PrixVen as PrixVente from F_ARTCLIENT WHERE AC_Categorie=0 AND AC_QteMont=0 ORDER BY CT_Num")

if SagePrixSpec <> NIL then
  
  AddMessageToListbox(DateTime.Now,"Extraction des Prix client")
  Var PrixSpecsJSON As New JSONItem
  
  while not SagePrixSpec.eof
    Var PrixSpecJSON As New JSONItem
    PrixSpecJSON.Value("client")= SagePrixSpec.Field("Client").StringValue.DefineEncoding(Encodings.UTF8)
    PrixSpecJSON.Value("ref")= SagePrixSpec.Field("Ref").StringValue.DefineEncoding(Encodings.UTF8)
    PrixSpecJSON.Value("prixvente") = SagePrixSpec.Field("PrixVente").StringValue.DefineEncoding(Encodings.UTF8)
    
    PrixSpecsJSON.Add(PrixSpecJSON)
    SagePrixSpec.moveNext
  wend
  SagePrixSpec.Close
  
  Var purifiedPrixSpecs as string = MakeValidUTF8(PrixSpecsJSON.ToString)
  Var PrixSpecs() as Variant = ParseJSON(purifiedPrixSpecs)
  
 
  For Each PrixSpec As Dictionary In PrixSpecs
    dbMysql.ExecuteSQL("INSERT INTO PrixSpec (Client,Ref,PrixVente) VALUES(?,?,?)",PrixSpec.Value("client"),PrixSpec.Value("ref"),PrixSpec.Value("prixvente"))
    
  Next
  
end if

Not working :

var SageContact as RecordSet = SageSQLServer.SQLSelect("SELECT "_
+"C.CT_Num AS Client,"_
+"ISNULL(C.CT_NOM, ' ') AS Nom,"_
+"ISNULL(C.CT_Prenom, ' ') AS Prenom,"_
+"ISNULL(C.CT_Telephone, ' ') AS Telephone,"_
+"ISNULL(C.CT_TelPortable, ' ') AS Portable,"_
+"ISNULL(C.CT_Email, ' ') AS Email,"_
+"ISNULL(C.CT_Fonction, ' ') AS Fonction "_
+"FROM F_CONTACTT C "_
+"JOIN F_COMPTET F ON C.CT_Num = F.CT_Num "_
+"WHERE F.CT_TYPE = 0 "_
+"ORDER BY C.CT_Num;")

if SageContact <> NIL then
  
  AddMessageToListbox(DateTime.Now,"Extraction des Contacts")
  Var ContactsClientJSON As New JSONItem
  
  while not SageContact.eof
    Var ContactJSON As New JSONItem
    ContactJSON.Value("client")= SageContact.Field("Client").StringValue.DefineEncoding(Encodings.UTF8)
    ContactJSON.Value("nom")= SageContact.Field("Nom").StringValue.DefineEncoding(Encodings.UTF8)
    ContactJSON.Value("prenom")= SageContact.Field("Prenom").StringValue.DefineEncoding(Encodings.UTF8)
    ContactJSON.Value("telephone")= SageContact.Field("Telephone").StringValue.DefineEncoding(Encodings.UTF8)
    ContactJSON.Value("portable")= SageContact.Field("Portable").StringValue.DefineEncoding(Encodings.UTF8)
    ContactJSON.Value("email")= SageContact.Field("Email").StringValue.DefineEncoding(Encodings.UTF8)
    ContactJSON.Value("fonction")= SageContact.Field("Fonction").StringValue.DefineEncoding(Encodings.UTF8)
    

    ContactsClientJSON.add(ContactJSON.ToString)
    
    SageContact.moveNext
  wend
  SageContact.Close
  
  Var purifiedContacts as string = MakeValidUTF8(ContactsClientJSON.ToString)
  Var ContactsClient() as Variant = ParseJSON(purifiedContacts)
  

  For Each Contact As Dictionary In ContactsClient
    dbMysql.ExecuteSQL("INSERT INTO Contact (Client,Nom,Prenom,Telephone,Portable,Email,Fonction) VALUES(?,?,?,?,?,?,?)",Contact.Value("client"),Contact.Value("nom"),Contact.Value("prenom"),Contact.Value("telephone"),Contact.Value("portable"),Contact.Value("email"),Contact.Value("fonction"))
    
  Next
  
  
end if

I use this code for other SQL request, and that’s work. But for the second code here, i got a IllegalCastException “_VariantString cannot be cast to Dictionary

If you have an idea :slight_smile:

6 posts - 3 participants

Read full topic


Viewing all articles
Browse latest Browse all 3699

Trending Articles