Si on sauvegarde dans un fichier JSON, ça veut dire qu'on a peu de données, qu'on charge tout en RAM et donc que l'indexation ne sert à rien.
(Au siècle dernier, FoxPro 2 (DOS) conseillait de ne faire des fichiers d'index qu'à partir de 100 000 enregistrements... et on fonctionnait sur des PC 286 à 12MHz, c'est dire si on sous évalue les possibilités actuelles des PC et on fait des fichiers d'index pour rien le plus souvent, sauf pour gérer les doublons sur les clés)
Bref, si on charge toutes les données en mémoire, dans une liste structurée, il est facile de parcourir tous les champs (avec ForEach)
Pour une recherche LIKE, il suffit d'utiliser Left(), Right(), Ucase(), Lcase()
(C'est par contre plus compliqué pour faire une recherche par phonème.)
(Programmation propre, enfin j’essaye)
Code : Tout sélectionner
EnableExplicit
Structure Type_contact
id.l
nom.s
adresse.s
localite.s
EndStructure
NewList Contact.Type_contact()
With Contact()
AddElement(Contact()) : \id = 1 : \nom = "AAA"
AddElement(Contact()) : \id = 2 : \nom = "BBB"
AddElement(Contact()) : \id = 3 : \nom = "CCC"
AddElement(Contact()) : \id = 4 : \nom = "DDD"
AddElement(Contact()) : \id = 5 : \nom = "EEE"
EndWith
ForEach Contact()
With Contact()
Debug "ID: " + \id + " Nom: " + \nom
EndWith
Next
ForEach Contact()
If Contact()\nom = "DDD"
Debug ""
Debug "Trouvé par nom: " + Contact()\nom + " ID: " + Contact()\id
Break
EndIf
Next
ForEach Contact()
If Left(Contact()\nom, 1) = "C"
Debug ""
Debug "Commence par C: " + Contact()\nom + " ID: " + Contact()\id
Break
EndIf
Next
End
Mais cela dit,
JSON n'est pas une base de données, c'est une
structure qu'on sauvegarde dans un
fichier texte.
C'est comme un fichier XML
C'est même moins bien qu'un fichier pref (fichier INI) qui lui est capable de faire des lectures écritures partielles.
Ça n'a rien à faire dans un programme de gestion de stock, de compta, de facturation qui va vite avoir plusieurs milliers d'enregistrements.