[TUTO débutants] les modules
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [TUTO débutants] les modules
@Micoute : En principe c'est un tutoriel sur les modules et ..... je ne vois pas de module.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [TUTO débutants] les modules
bonsoir falsam, tu as raison, mais c'est très facile a transformer en module, car les procédures sont déclarées donc le plus dur est déjà fait.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: [TUTO débutants] les modules
Bonsoir à tous et merci à Micoute pour le partage, ton programme est magnifique et il m'intéresse beaucoup surtout en relation avec les structures et les bases de données, c'est super. Cependant, j'ai quelques questions importantes à poser (avant que je me décide pour mon nouveau programme commercial version 2018, conformément aux conseils de l'équipe..)
1. Est ce qu'il y a une limite en nombre d'enregistrements (ou en Mo) dans un fichier .Json? Si oui laquelle?
2.
3.
Quelle est la différence entre (2.) et (3.)?
4. Quelle est le type de bases de données préféré pour un logiciel de gestion commerciale?
Fichier.Data? Fichier.Json? .Sqlite?
Merci
1. Est ce qu'il y a une limite en nombre d'enregistrements (ou en Mo) dans un fichier .Json? Si oui laquelle?
2.
Code : Tout sélectionner
InsertJSONList(JSONValue(#FichierJSON), produits())
3.
Code : Tout sélectionner
SaveJSON(#FichierJSON, FichierJson, #PB_JSON_PrettyPrint)
4. Quelle est le type de bases de données préféré pour un logiciel de gestion commerciale?
Fichier.Data? Fichier.Json? .Sqlite?
Merci
Win7 (x64) 64 bits Pb 5.72
Re: [TUTO débutants] les modules
Bonjour à tous,
pour qu'on voit bien la différence avec les modules, j'ai transformé le programme que j'ai posté plus haut en module, sinon à part les DeclareModule, Module et UseModule, je n'ai rien changé:
pour qu'on voit bien la différence avec les modules, j'ai transformé le programme que j'ai posté plus haut en module, sinon à part les DeclareModule, Module et UseModule, je n'ai rien changé:
Code : Tout sélectionner
;Gestion Liste d'achats
; 13 avril 2018
; PB 5.70
; par Micoute
DeclareModule Remplissage
Enumeration Fichiers
#FichierJSON
EndEnumeration
Enumeration Fenetres
#Fenetre_edition
EndEnumeration
Enumeration Gadgets
#Liste_produits
#Txt_Magasin
#Txt_Rayon
#Txt_Nom_Produit
#Txt_CP
#Txt_Ville
#Str_Magasin
#Str_Rayon
#Str_Nom_Produit
#Btn_Nouveau
#Btn_Maj
#Btn_Supprimer
#Btn_Sauvegarder
#Btn_Quitter
#Txt_Nb_Enreg
EndEnumeration
Enumeration Polices
#Police
#Police2
#Police_Txt
EndEnumeration
;Structure d'un produit
Structure Produit
Magasin.s
Rayon.s
Produit.s
EndStructure
Global.l Evenement
;Création d'une liste vierge pour les produits
Global NewList produits.produit()
Global$ FichierJson = "D:\Programmation\Donnees\produits_achats.json"
Declare Quitter()
Declare Charger_produits()
Declare GestionEvenements()
Declare Nouveauproduit()
Declare Selectionproduit()
Declare Supprimerproduit()
Declare Majproduit()
Declare Sauvegardeproduits()
LoadFont(#Police, "Cambria", 16, #PB_Font_Bold)
LoadFont(#Police_Txt, "A_Nefel_Botan", 10, #PB_Font_Bold)
LoadFont(#Police2, "FontAwesome", 18, #PB_Font_Bold)
EndDeclareModule
Module Remplissage
Macro TrierListeStruc(_NomListe_, _Options_, _Champ_Structure_)
; Cette macro simplifie l'utilisation de la fonction intégrée SortStructuredList().
SortStructuredList(_NomListe_, _Options_, OffsetOf(_Champ_Structure_), TypeOf(_Champ_Structure_))
EndMacro
Procedure Quitter()
CloseWindow(#Fenetre_edition)
End
EndProcedure
;Chargement des produits existants
Procedure Charger_produits()
If ReadFile(#FichierJSON, FichierJson)
CloseFile(#FichierJSON)
;Lecture du fichier JSON
LoadJSON(#FichierJSON, FichierJson, #PB_JSON_NoCase)
;Extraction de la chaine JSON vers la liste chainée produits
ExtractJSONList(JSONValue(#FichierJSON), produits())
TrierListeStruc(produits(), #PB_Sort_Ascending, produit\Produit)
TrierListeStruc(produits(), #PB_Sort_Ascending, produit\Rayon)
TrierListeStruc(produits(), #PB_Sort_Ascending, produit\Magasin)
;Affichage de la liste des produits
ForEach(produits())
With produits()
AddGadgetItem(#Liste_produits, -1, \Magasin + #LF$ + \Rayon + #LF$ + \Produit)
SetGadgetItemData(#Liste_produits, CountGadgetItems(#Liste_produits)-1, ListIndex(produits()))
EndWith
Next
EndIf
EndProcedure
;Gestionnaire de contrôle de la saisie
Procedure GestionEvenements()
Protected Evenement = EventType()
Select Evenement
Case #PB_EventType_Change
If Trim(GetGadgetText(#Str_Magasin)) <> ""
DisableGadget(#Btn_Nouveau, #True)
DisableGadget(#Btn_Maj, #False)
DisableGadget(#Btn_Sauvegarder, #False)
Else
DisableGadget(#Btn_Nouveau, #False)
DisableGadget(#Btn_Maj, #True)
DisableGadget(#Btn_Sauvegarder, #True)
EndIf
EndSelect
EndProcedure
;Nouveau produit (Remise à zéro des champs de saisie)
Procedure Nouveauproduit()
SetWindowData(#Fenetre_edition, 0) ;C'est une création
SetGadgetText(#Str_Magasin, "")
SetGadgetText(#Str_Rayon, "")
SetGadgetText(#Str_Nom_Produit, "")
DisableGadget(#Btn_Nouveau, #False)
DisableGadget(#Btn_Maj, #True)
DisableGadget(#Btn_Supprimer, #True)
SetGadgetText(#Btn_Maj, Chr($F067))
SetActiveGadget(#Str_Magasin)
EndProcedure
;Un produit est sélectionné dans la liste
Procedure Selectionproduit()
Protected Item = GetGadgetState(#Liste_produits)
If Item <> -1
SelectElement(produits(), GetGadgetItemData(#Liste_produits, Item))
With produits()
SetGadgetText(#Str_Magasin, \Magasin)
SetGadgetText(#Str_Rayon, \Rayon)
SetGadgetText(#Str_Nom_Produit, \Produit)
EndWith
EndIf
;C'est une modification de produit
SetWindowData(#Fenetre_edition, 1)
DisableGadget(#Btn_Nouveau, #False)
DisableGadget(#Btn_Maj, #False)
DisableGadget(#Btn_Supprimer, #False)
SetGadgetText(#Btn_Maj, Chr($F040))
SetActiveGadget(#Str_Magasin)
EndProcedure
;Suppression d'un produit
Procedure Supprimerproduit()
If MessageRequester("Information", "Etes vous sûr de supprimer un produit ?" + #CRLF$ + "cette action est irrémédiable !", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
SetWindowData(#Fenetre_edition, 3) ;C'est une suppression
Majproduit()
EndIf
EndProcedure
;Gestionnaire de mise à jour des produits
Procedure Majproduit()
Protected.s Magasin = GetGadgetText(#Str_Magasin)
Protected.s Rayon = GetGadgetText(#Str_Rayon)
Protected.s Nom_Produit = GetGadgetText(#Str_Nom_Produit)
DisableGadget(#Btn_Sauvegarder, 0)
Select GetWindowData(#Fenetre_edition)
Case 0 ;Création d'un produit
AddElement(produits())
With produits()
\Magasin = Magasin
\Rayon = Rayon
\Produit = Nom_Produit
AddGadgetItem(#Liste_produits, -1, \Magasin + #LF$ + \Rayon + #LF$ + \Produit)
SetGadgetItemData(#Liste_produits, CountGadgetItems(#Liste_produits)-1, ListIndex(produits()))
EndWith
Case 1 ;Modification d'un produit
With produits()
\Magasin = Magasin
\Rayon = Rayon
\Produit = Nom_Produit
SetGadgetItemText(#Liste_produits, ListIndex(produits()), \Magasin, 0)
SetGadgetItemText(#Liste_produits, ListIndex(produits()), \Rayon, 1)
SetGadgetItemText(#Liste_produits, ListIndex(produits()), \Produit, 2)
EndWith
Nouveauproduit()
Case 3 ;Suppression d'un produit
RemoveGadgetItem(#Liste_produits, ListIndex(produits()))
DeleteElement(produits())
;Mise à jour des index de liaison ListIconGadget <-> produits()
ForEach(produits())
SetGadgetItemData(#Liste_produits, ListIndex(produits()), ListIndex(produits()))
Next
EndSelect
EndProcedure
;Sauvegarde automatique des produits à la fermeture de l'application
Procedure Sauvegardeproduits()
;Création d'un objet JSON
CreateJSON(#FichierJSON)
;Insertion de la liste chainée "produits" dans l'objet JSON
InsertJSONList(JSONValue(#FichierJSON), produits())
;Sauvegarde du fichier
SaveJSON(#FichierJSON, FichierJson, #PB_JSON_PrettyPrint)
MessageRequester("Information", "Le fichier " + #DQUOTE$ + GetFilePart(FichierJson) + #DQUOTE$ + " a été sauvegardé" + #LF$ + #LF$ + "et va se fermer", #PB_MessageRequester_Info)
Quitter()
EndProcedure
EndModule
Procedure Programme_principal()
UseModule Remplissage
If OpenWindow(#Fenetre_edition, 767, 175, 520, 500, "Base de données", #PB_Window_TitleBar|#PB_Window_ScreenCentered)
SetWindowColor(#Fenetre_edition, $F8BFB8)
SetGadgetFont(#PB_Default, FontID(#Police))
ListIconGadget(#Liste_produits, 10, 10, WindowWidth(#Fenetre_edition)-20, 260, "Rayon", 130, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_HeaderDragDrop)
AddGadgetColumn(#Liste_produits, 1, "Produit", 130)
AddGadgetColumn(#Liste_produits, 2, "Nom", 220)
TextGadget(#Txt_Magasin, 10, 280, 140, 25, "Magasin", #PB_Text_Right)
TextGadget(#Txt_Rayon, 10, 310, 140, 25, "Rayon", #PB_Text_Right)
TextGadget(#Txt_Nom_Produit, 10, 340, 140, 25, "Nom produit", #PB_Text_Right)
StringGadget(#Str_Magasin, 160, 280, 350, 25, "")
StringGadget(#Str_Rayon, 160, 310, 350, 25, "")
StringGadget(#Str_Nom_Produit, 160, 340, 350, 25, "")
ButtonGadget(#Btn_Nouveau, 10, 400, 130, 40, "Nouveau")
ButtonGadget(#Btn_Maj, 200, 400, 130, 40, "Mise à jour")
ButtonGadget(#Btn_Supprimer, 380, 400, 130, 40, "Supprimer")
ButtonGadget(#Btn_Sauvegarder, 10, 450, 130, 40, "Sauvegarder")
ButtonGadget(#Btn_Quitter, 380, 450, 130, 40, "Quitter")
TextGadget(#Txt_Nb_Enreg, 180, 460, 200, 25, "")
;Lectures des produits
Charger_produits()
For i = #Btn_Nouveau To #Btn_Quitter
SetGadgetFont(i, FontID(#Police2))
Next i
SetGadgetText(#Txt_Nb_Enreg, Str(ListSize(produits())) + " enregistrements")
SetGadgetColor(#Txt_Nb_Enreg, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_edition))
For i = #Txt_Magasin To #Txt_Nom_Produit
SetGadgetFont(i, FontID(#Police_Txt))
SetGadgetFont(#Txt_Nb_Enreg, FontID(#Police_Txt))
SetGadgetColor(i, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_edition))
Next i
For i = #Str_Magasin To #Str_Nom_Produit
SetGadgetFont(i, FontID(#Police_Txt))
SetGadgetColor(i, #PB_Gadget_BackColor, $B8F7F8)
Next i
For i = 0 To CountGadgetItems(#Liste_produits) ;ListIconGadget
If i%2 = 1 ; si notre compteur est pair
SetGadgetItemColor(#Liste_produits, i, #PB_Gadget_FrontColor, $0000FF)
SetGadgetItemColor(#Liste_produits, i, #PB_Gadget_BackColor, $FFE8FF)
Else ; sinon, s'il est impair
SetGadgetItemColor(#Liste_produits, i, #PB_Gadget_FrontColor, $FF0000)
SetGadgetItemColor(#Liste_produits, i, #PB_Gadget_BackColor, $FFE9E8)
EndIf
Next i
;Contrôle de la saisie (Le Magasin ou la raison sociale est obligatoire)
BindGadgetEvent(#Str_Magasin, @GestionEvenements())
;Mise en place d'un nouveau produit
BindGadgetEvent(#Btn_Nouveau, @Nouveauproduit())
;Un produit est selectionné dans la liste
BindGadgetEvent(#Liste_produits, @Selectionproduit())
;Ajout ou modification d'un produit
BindGadgetEvent(#Btn_Maj, @Majproduit())
;Supression d'un produit
BindGadgetEvent(#Btn_Supprimer, @Supprimerproduit())
;Fermeture de l'application et sauvegarde des produits
BindGadgetEvent(#Btn_Sauvegarder, @Sauvegardeproduits())
;Quitter le programme sans sauvegarder
BindEvent(#PB_Event_CloseWindow, @Quitter())
BindGadgetEvent(#Btn_Quitter, @Quitter())
DisableGadget(#Btn_Sauvegarder, #True)
;DisableGadget(#Btn_Nouveau, #False)
Nouveauproduit()
SetActiveGadget(#Str_Magasin)
EndIf
EndProcedure
Programme_principal()
;- Boucle
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Quitter
Quitter()
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre_edition
Quitter()
Break
EndSelect
EndSelect
ForEver
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [TUTO débutants] les modules
@Micoute : je vais faire mon vilain. ^-^
Utiliser un module avec ce type d'application n'a aucun sens.
Un module est un ensemble cohérents d'outils et de composants éprouvés et réutilisables.
■ Exemple :
Je code un module 3D que je nomme 3DUltimate.pbi dans lequel je trouve les composants suivants :
- CreateCube()
- CreateTube()
- CreateMateriel()
- etc ...
Ce module aura son propre espace de fonctionnement. Les variables par exemple de ce module ne pourront pas interférer avec des variables de mêmes noms que tu pourras utiliser dans d'autres sources faisant appels à ce module.
■ ... dans d'autres sources faisant appels à ce module.
Voila l’intérêt de notre module : Il peut être utilisé avec n'importe quel source ayant besoin de ce type de fonction.C'est tout, c'est simple et facile à lire.
Utiliser un module avec ce type d'application n'a aucun sens.

■ Exemple :
Je code un module 3D que je nomme 3DUltimate.pbi dans lequel je trouve les composants suivants :
- CreateCube()
- CreateTube()
- CreateMateriel()
- etc ...
Ce module aura son propre espace de fonctionnement. Les variables par exemple de ce module ne pourront pas interférer avec des variables de mêmes noms que tu pourras utiliser dans d'autres sources faisant appels à ce module.
■ ... dans d'autres sources faisant appels à ce module.
Voila l’intérêt de notre module : Il peut être utilisé avec n'importe quel source ayant besoin de ce type de fonction.
Code : Tout sélectionner
IncludeFile "3Dultimate.pbi"
UseModule 3D
3D::CreateCube()
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [TUTO débutants] les modules
Une pensée subite : Je pense qu'on pourrait comparer un module à un framework.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: [TUTO débutants] les modules
Les modules sont comme les packages de java ou les espace de nom en c,c++,c#.
Il doivent donc être utiliser dans le même état d'esprit.
Il doivent donc être utiliser dans le même état d'esprit.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [TUTO débutants] les modules
Omega a écrit :Quelle est le type de bases de données préféré pour un logiciel de gestion commerciale?
Fichier.Data? Fichier.Json? .Sqlite?Merci


P.S. Ceci est une remarque ironique (La modération est prié de laisser ce PS)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [TUTO débutants] les modules
@Micoute..
Je rejoints Falsam.
Même si l'intention est bonne, ton 1er code est hors sujet et le second (conversion en module) n'est pas un exemple à suivre du fait qu'un module doit pouvoir être importé par autrui sans que cela ne puis générer de conflits. Et oui c'est censé être une série de fonctions à part entière plutôt qu'un truc autonome.
Même si les données intra modules sont censée être protégées dedans, si un utilisateur mets un
dans son code (car il ne se souviendra pas forcément des constantes de ton module) je me dis que ça peut chinoiser.
Je rejoints Falsam.
Même si l'intention est bonne, ton 1er code est hors sujet et le second (conversion en module) n'est pas un exemple à suivre du fait qu'un module doit pouvoir être importé par autrui sans que cela ne puis générer de conflits. Et oui c'est censé être une série de fonctions à part entière plutôt qu'un truc autonome.
Même si les données intra modules sont censée être protégées dedans, si un utilisateur mets un
Code : Tout sélectionner
Enumeration Fenetres
#Fenetre_edition
EndEnumeration
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: [TUTO débutants] les modules
Bonjour Falsam et merci pour ta proposition.
Je viens de jeter un coup d'oeil sur les fichiers Json. Je voudrais juste savoir pourquoi choisir Json (avantage par rapport à sqlite par exemple)
Merci
Je viens de jeter un coup d'oeil sur les fichiers Json. Je voudrais juste savoir pourquoi choisir Json (avantage par rapport à sqlite par exemple)
Merci
Win7 (x64) 64 bits Pb 5.72
Re: [TUTO débutants] les modules
Parce que c'est simple, c'est un format de données ouvert donc interprété par x langages JavaScript, PHP, Perl, Python, Ruby, Java,...
Permet de stocker des données de différents types : chaînes de caractères (y compris des images en base64), nombres, tableaux (array), objets, booléens (true, false), la valeur null.
Sa structure en arborescence et sa syntaxe simple lui permet de rester très "léger" et efficace.
plus d'infos ici : https://www.alsacreations.com/article/l ... types.html
Permet de stocker des données de différents types : chaînes de caractères (y compris des images en base64), nombres, tableaux (array), objets, booléens (true, false), la valeur null.
Sa structure en arborescence et sa syntaxe simple lui permet de rester très "léger" et efficace.
plus d'infos ici : https://www.alsacreations.com/article/l ... types.html
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: [TUTO débutants] les modules
Savoir que comme pour les fichiers XML, les fichiers JSON au niveau disque, on lit ou écrit tout le fichier à chaque fois.Je viens de jeter un coup d'oeil sur les fichiers Json. Je voudrais juste savoir pourquoi choisir Json (avantage par rapport à sqlite par exemple)
C'est logique, ce sont des flats files (fichiers plats, c'est à dire du texte brut) C'est un avantage (lisibilité) et un inconvénient: il faut "pousser" tout quand on remplace une donnée par une autre de taille différente.
De plus, si on travaille sur plusieurs enregistrements et qu'on ne sauvegarde pas à chaque modification (ou qu'on ne stocke pas les données "modifiées" dans une autre structure), si on fait une erreur sur un enregistrement on perd les autres modifications effectuées depuis à moins de recopier les données validées avant dans la structure à écrire.
Si plusieurs utilisateurs travaillent sur la même source de données, ils ont chacun une copie des données et aucune synchro de données ou alors il faut gérer un verrou en manuel.
Les fichier JSON c'est bien pour sauver un paquet de données disparates ou pour de petites bases type carnet d'adresse, mais pour quelques centaines d’enregistrements ou plus ce n'est pas adapté.

Re: [TUTO débutants] les modules
J'ai besoin au moins de 3000 enregistrements (c'est le contenu de mon fichier livraison (base sqlite).Les fichier JSON c'est bien pour sauver un paquet de données disparates ou pour de petites bases type carnet d'adresse, mais pour quelques centaines d’enregistrements ou plus ce n'est pas adapté.
Win7 (x64) 64 bits Pb 5.72
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: [TUTO débutants] les modules
Le problème avec un fichier Json qui n'est rien d'autre qu'un fichier texte balisé, il faudra charger tous les records en mémoire. Cette opération est faite au lancement du soft donc cela ne se sentira pas.
Par contre chaque recherche va demander de parcourir toute la liste jusqu’à trouvé le bon record et si c'est dernier. Maintenant avec 3000 records cela ne devrais pas prendre trop de temps par contre avec plus.
Par contre chaque recherche va demander de parcourir toute la liste jusqu’à trouvé le bon record et si c'est dernier. Maintenant avec 3000 records cela ne devrais pas prendre trop de temps par contre avec plus.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [TUTO débutants] les modules
Non pas du tout.microdevweb a écrit :Par contre chaque recherche va demander de parcourir toute la liste jusqu’à trouvé le bon record
Un fichier JSON contenant une suite d'enregistrements est obligatoirement associé à une liste chaînée ou une map. Tu auras compris que associée à une map la recherche est ultra rapide.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%