(Français) Téléchargement

Sorry, this entry is only available in French. For the sake of viewer convenience, the content is shown below in the alternative language. You may click the link to switch the active language.

Malgré son intégration dans une poignée de projets, gardez à l’esprit que Betula reste en cours de développement, de test et d’optimisation. Revenez donc régulièrement sur cette page pour voir son évolution.

Téléchargements : Composant 0.20 – Source 0.20 – Exemple 0.20

Pour utiliser Betula, télécharger le composant ci-dessus et ajoutez le à votre projet. Pour personnaliser Betula :

  • Téléchargez les sources les plus récentes ci-dessus
  • Décompressez l’archive, par exemple, dans C:\Mes projets\Betula
  • Si vous voulez modifier Betula, créez une autre classe qui hérite de la classe de Betula à modifier. Ainsi, à la prochaine mise à jour de Betula, décompressez l’archive dans C:\Mes projets\Betula mais n’écrasez pas vos modifications !
  • Cas particulier des classes cUtilisateur, cAppParamètres, cLog et cTrace utilisées par la classe principale cApplication. Selon le même principe qu’énoncé ci-dessus, il ne faut pas modifier cApplication pour éviter son écrasement et donc créer un cApplication_Perso qui hérite de cApplication. Dans le constructeur de cApplication_Perso, appelez le constructeur de cApplication en lui passant en paramètre votre(vos) classe(s) modifiée(s), par exemple cUtilisateur_Perso. Le tour est joué, vous garder les fichiers de Betula intacts et vous pouvez personnaliser cUtilisateur grâce à votre classe héritée cUtilisateur_Perso. Ceci est possible depuis la version 0.18.
 

Historique de modification

VersionDate de sortieRemarque / Log de modification
0.207 octobre 2020Cette version est principalement axée sur l'optimisation de l'accès aux données. Les classes cColonne et cIndex ont été ajoutées, ce qui a permis une simplification/restructuration de cSQL et cTable. Les requêtes effectuées contiennent maintenant le nom de la table en avant du nom de la colonne (elle même entourée de caractères spécifiques pour éviter les problèmes des noms de colonne qui sont des mots clés). Betula reste néanmoins compatible avec les versions précédentes.
La gestion des erreurs a également été simplifiée. Exemple : m_pclErreur.AjouteErreur(m_pclErreur.MsgErreur()) devient m_pclErreur.AjouteErreurWx()
Ajouts
– StructureVersJSON : Trace de toutes les membres d’une variable email et interception d’une exception
– Méthode TypeVersWD dans toutes les classes des bases de données (centralise la transformation d’un type de colonne de la base de données concernée vers le type WinDev)
– Gestion de ROWID dans Oracle
– Conversion de date julienne en grégorienne et inversément (en DateEnCours dans COL_PCS)
– COL_PCS.gVersTexte : permet plus de flexibilité en supprimant certains types d’éléments (ex : on enlève la couleur rouge et le gras, mais l’italique est gardé)
– COL_Conversion.DateHeureVersEntier, COL_Conversion.ChiffresSeulement, cHTTPServeur.FonctionSupprimeTout, COL_GUI.EstComboOuverte
– cBaseDeDonnéesSQLServer : prise en charge de nouveaux types de colonne
– COL_Téléphone : permet de formater des numéros de téléphone brut pour l’écran (pays reconnus : France, Belgique, Canada, USA, Dom-Tom). Aussi LettreVersTéléphone (transforme une lettre d’un numéro de téléphone vers le chiffre correspondant)
– Fonctions HashVersBinaire et BinaireVersHash (quand on veut passer d’une colonne contenant le hash vers une colonne n’en utilisant pas, ref : https://wlplus.org/fr/betula/db/)
– cGénérique : constantes des jours de la semaine (pour fonction DateVersJour)
– cBaseDeDonnéesHyperFile.TransactionAnnuleSiInterrompue et cBaseDeDonnées.TransactionAnnuleTout (appelé d’ailleurs dans le destructeur de cApplication
Modifications
– cCourriel : gestion du port et du type de synchronisation. Modification de la méthode “envoi”
– Messages courriel mis en chaîne ANSI
– Meilleure prise en charge des fichier HFCS 5.5
– Simplification du code de LanceAppliWin
– cEnregistrement.CopieMembres devient cEnregistrement.CopieMembresDepuis (pour préciser que les membres sont copiés depuis l’objet donné en paramètre jusque dans l’objet courant)
– COL_Vérification.NomFichierValide devient COL_Vérification.EstNomFichierValide
– cCommandeDOS.ExécuteCommande
– Amélioration de la gestion des jauges (et son utilisation dans cHTTP et cFTP)
Corrections
– cOracle.SQLColonneMemoVide
– cBaseDonnéesSQLServeur.Sauvegarde modifiée et Restauration lancé de manière différente (pour accepter une grande quantité de données)
– cEnregistrement.Ajoute, cEnregistrement.Modifie, cEnregistrement.Dernier
– cLog.LogCrash (il manquait des fichiers dans l’archive)
0.1916 mars 2020
Ajouts
– Log des appels aux méthodes de cBaseDeDonnéesLDAP
– Fonction RéelVersDateHeure (norme IEEE754)
– Mise en mémoire des fichiers temporaires (fonction fFichierTemp) pour suppression de ces derniers quand le programme se ferme (fonction fFichierTempSupprimeTout)
– Collection de procédure pour DDE (pour l’instant pour gérer les messages d’erreur)
– Ajout de la connexion au GPU dans la méthode cUtilisateur.LoginLDAP
– Ajout du membre cEnregistrement.m_sEnregistrement (enregistrement sous format XML) duquel est déduit ensuite le membre m_sHashEnregistrement
– Vérification si un second enregistrement correspond au critère lors de la recherche (cEnregistrement.Recherche)
– Trace d’enregistrement non modifié dans cEnregistrement.Écrit
– cBaseDeDonnées.HashDansBinaire et HashHorsBinaire : permet d’intégrer ou pas le hash d’un mémo au début de celui-ci (pour la gestion du cache). Ces méthodes permettent de passer d’un mode à un autre (il faut pour cela gérer la cache et avoir, ou pas, une colonne ‘hash’ de la colonne ‘mémo’ traitée)
– Répertoire “cache” dans les méthode “connecte” des cBaseDeDonnéesxxx
– cSQL.EstColonneBinaire()
Modifications
– Gestion d’exception dans l’utilisation de la fonction Erreur()
– Boucle dans fFichierTemp pour éviter d’utiliser un fichier temp déjà existant
– Simplification de cErreur.Raz()
– cTrace.TraceInitTexte et cLog.LogInitTexte modifiés pour gérer le dossier utilisateur par défaut (utile en cas d’exécution multiple du même exécutable, exemple sur Citrix)
– cEnregistrement.m_pclTable rendu Public Constant au lieu de Protégé
– Meilleure gestion des mémos dans cEnregistrement.Ajoute, .Modifie, .Télécharge et .Téléverse
– Simplification de cEnregistrement.Liste (d’office sous forme de requête SQL à présent)
– Meilleure gestion des fichiers HyperfileSQL avec et sans analyse
– Retour dans la méthode cTable.SQLColonneMémoVide
– Meilleure gestion des ‘varchar’ et ‘text’ (unicode ou pas) dans cBaseDeDonnéesSQLServer
– Ajout du nom de la colonne traitée dans les méthodes SQLColonneMémoVide
Corrections
– Meilleur traitement de StructureVersJSON pour éviter les exceptions intempestives
– cGénérique.p_sErreurTout, p_sErreurToutJSON, p_sAvertissementTout et p_sAvertissementToutJSON simplifiés et corrigés
– cEnregistrement.Premier et cEnregistrement.Dernier notamment pour la gestion des mémos
– Gestion d’une exception dans cSQL.Requête pour les bases de données HyperfileSQL
0.1827 décembre 2019Cette version est principalement conçue pour personnaliser le framework (voir explication ci-dessus).
Ajouts
– cBaseDeDonnées et cBaseDeDonnéesSQLServer : méthodes ExécuteProcédure et ExécuteFonctionVersJSON (le résultat de la fonction est fournit en format JSON).
Modifications
– Le constructeur de cApplication accepte maintenant des objets cUtilisateur, cAppParamètres, cLog et cTrace
– Le constructeur de cUtilisateur accepte maintenant un objet cEnregistrementLDAP en paramètre
Corrections
– cBaseDeDonnées.Environnement déclenchait des exceptions intempestives
– Contrôle qui manquait dans cBaseDeDonnéesLDAP.Déconnecte
0.1723 décembre 2019
Ajouts
– Gestion du binary, smallint et uniqueidentifier dans cBaseDeDonnéesSQLServer
Modifications
– Mise en mémoire des termes “traduits” pas JSONEncode. Très utilisé dans la trace, ceci évite de transformer tout le temps les mêmes nom de colonnes. Augmentation significative de la réactivité de l’application.
– Parcours des paramètres envoyés à AjouteMéthode plutôt que les indirections
– Ajustements faits dans cEnregistrement.MemoTélécharge et MémoTéléverse
– Sortie de 2 membre de cGénérique de la sérialisation
Corrections
– Interception d’exceptions supplémentaires dans StructureVersJSON
– cTable.CléValeur gère mieux les dates, heures et date/heure
– cBaseDeDonnées.Environnement : mise en minuscule de la référence Serveur+Base de données (voir mise en minuscule dans les versions précédentes)
– Ajout d’un espace dans les méthode dateVersSQL et DateHeureVersSQL de cBaseDeDonnéesOracle
0.1625 octobre 2019933 lignes modifiées ou ajoutées (PCSOFT déteint sur l'équipe de développement de Betula ! 😉 )
Ajouts
– ColonneOptimiseLargeur : ajout d’une largeur maximum (ex : si une colonne texte contenant 5000 caractères, on peut limiter la largeur de la colonne à 600px au lieu d’avoir une colonne de 30.000px !)
– Méthodes SQLUnicodePréfixe et SQLUnicodeSuffixe dans cEnregistrement, cBaseDeDonnées et cBaseDeDonnéesSQLServer permettant d’encadrer une colonne texte du(des) “mot(s) clé” nécessaire(s) pour qu’elle soit comprise comme du texte unicode (ex en SQLServer, mettre “N” avant le quote du début de chaîne)
– cEnregistrement.CopieMembre : copie les membres du même nom dans un autre objet qui n’a pas la même structure (attention, V1 : des limitations s’appliquent)
– cTable : récupération du GUID dans l’information des colonnes (venant d’une analyse HyperFile)
– cBaseDeDonnées.DateVersSQL, HeureVersSQL et DateHeureVersSQL permettant de formater la date et la date/heure dans une requête selon la base de données utilisée
– cFTP.ETypeDateHeure contient les valeurs des constantes FTP (mais pour brider le passage de paramètres dans les méthodes de la classe)
– cFTP.FichierAttributs et cFTP.FichierDateHeure
– cRéseau : ajout du protocole SMTP sécurisé sur port 993
– cBaseDeDonnéesSQL : trace lors de la dernière déconnexion à une base de données
Modifications
– La procédure AnsiVersUnicodeAnsi devient JSONEncode et les caractères sont maintenant codés en double octets (unicode)
– La procédure UnicodeAnsiVersAnsi devient JSONDécode
– Traitement des exceptions dans ChampNomComplet
– La méthode cEnregistrement.TableVersObjet devient SourceVersObjet
– La méthode cEnregistrement.ObjetVersTable devient ObjetVersSource
– cEnregistrement : amélioration de la gestion du NULL lors de l’écriture (méthode Ajoute et Modifie)
– cEnregistrement : amélioration de la recherche utilisant une clé composée contenant une valeur NULL
– cTable : meilleur gestion de la création de table si inexistante (dans le cas de l’utilisation d’une analyse)
– cBaseDeDonnées.ObjetBaseDeDonnées : vérification que la connexion avait été déclarée au préalable
– cFTP.p_sRepEnCours ne s’exécute pas si le répertoire passé en paramètre est vide ou correspond au répertoire courant
– La méthode cBaseDeDonnéesSQLServer.DateVersColonne et DateHeureVersColonne deviennent respectivement DateVersSQL et DateHeureVersSQL (voir ajouts)
Corrections
– Ajustement de la conversion de la livre impériale de 0.45359243 à 0.45359237
– cEnregistrement.m_stConnexion n’apparaît plus dans la sérialisation
– cEnregistrement et cSourceDeDonnées : meilleur gestion des mémos (binaires) en lecture et écriture
– Méthode cApplication.p_SupportCourriel : nom de la variable “sAdresseCourriel” au lien de “Valeur” (bug non signalé par le compilateur !)
– cTable.Constructeur : hDéclareExterne utilisé pour toutes les tables qui ne font pas partie de l’analyse en cours
– cTable : Amélioration de la gestion des colonnes et des clés en minuscule (pour éviter des problèmes liés à la casse)
– cBaseDeDonnées.m_bConnexionODBC devient mg_bConnexionODBC (normalisation du nom)
– cBaseDeDonnées.Connecte.ChangeConnexion amélioré pour traiter différente configuration (avec et sans analyse)
0.1518 juillet 2019
Ajouts
– StructureVersJSON : Les valeurs de références d’un tableau associatif sont maintenant transformés en unicode
– ColonneOptimiseLargeur : gère les positions X utilisé dans gCoord ((et enlève les formatages gras, soulignés, italique et barré) pour calculer la bonne largeur
– cApplication.Constructeur : ajout du répertoire des traces
– cAppParamètres.ParamètresCharge : priorité du fichier INI s’il existe dans le répertoire de l’application ou dans C:\Users\NomUtilisateur\AppData\Roaming\ ou dans C:\Users\NomUtilisateur\AppData\Roaming\NomApplication
– cSourceDeDonnées : mise en mémoire de la dernière requête et ajout de la méthode ListeRafraichi pour réexécuter la requête initiale (faite préalablement avec la méthode Liste ou ListeRequête)
– cTable : ajout des nom d’origine dans les colonnes et les clés pour être utilisée dans ColonnesCléVersClé et CléVersColonnesClé
– cLog : nouvelles propriétés : p_sFichierLogChemin, p_coFichierNiveaux, p_coEventLogNiveaux, p_coBDNiveaux et p_coCourrielNiveaux
– cLog.LogCrash : ajout de ExeInfo(ExeVersionFormatWindows) et ajout de l’objet cBaseDeDonnées en JSON
– cBaseDeDonnéesSQLServer.Colonnes : utilisation du bigint
Modifications
– Les fichiers de trace et de log sont mis, par défaut, dans SysRep(srAppData) (= C:\Users\NomUtilisateur\AppData\Roaming\NomApplication) au lieu du répertoire des données SysRep(srAppDataCommun) ( = C:\ProgramData\NomApplication). Ceci pour assurer que si l’application est lancée par plusieurs utilisateurs (ex : environnement Citrix ou RDP), chaque utilisateur a ses propres log et trace. Le fichier INI reste dans SysRep(srAppData)
– cEnregistrement.MémoTélécharge : création du répertoire temporaire si inexistant (qui sert à extraire le mémo)
– cFichier.Ouvrir : anti-bouclage si l’ouverture du fichier de trace ne peut pas être fait
– cSQL : utilisation des noms de colonnes en minuscule dans les méthodes EstColonneXXX (car les tableaux associatifs sont sensibles à la casse)
Corrections
– StructureVersJSON : des accolades étaient en trop dans la désérialisation des connexions
– cEnregistrement.Ajoute : retour d’une clé composée en cas d’ajout d’enregistrement
– cLog : utilisation des logs quand plusieurs niveaux sont demandés (ex : coLogNiveauInformation+coLogNiveauAvertissement)
– cFichier.Postionne : correction sur la gestion du positionnement depuis la fin du fichier
0.1412 juin 2019
Ajouts
– cBaseDeDonnéesSQL.Colonnes : ajout de nouveaux types
Modifications
– COL_Log.iImprimeÉtat : une valeur de retour n’est plus obligatoire
– COL_Conversion.StructureVersJSON : vérification d’un objet vide pour éviter d’intercepter des exceptions
– cFichier : amélioration de l’ouverture des fichiers texte
Corrections
– cGénérique.p_sErreurTout et p_sErreurToutJSON et p_sAvertissementToutJSON et p_sAvertissementTout : plus de bouclage sur l’élément cTableReliée
– cTrace : meilleur gestion des traces en Unicode
– cApplication.Contructeur : le 3eme paramètre passe de booléen en cTrace.ETraceFormat pour choisir une trace en ANSI, en Unicode ou aucune trace
– cSourceDeDonnées.Ajoute : correction sur la mise en mémoire de clés composées
– cTable.CléValeur : correction permettant la recherche sur des champs ne faisant pas partie d’une clé
– cBaseDeDonnéesOracle.Connecte : correction sur le mot clé “schema”
0.1317 mai 2019
Ajouts
– Conversion des énergies;
– Conversion des consommations de carburant (voiture);
– Conversion de coordonnées WGS84 vers Lambert93;
– Conversion de Lambert (I, II, III, IV, II étendu et 93) vers WGS84;
– cBaseDeDonnéesSQLServer : détection des type de colonnes ‘float’.
Modifications
– JSONVersVariant : traitement des tableaux vides.
Corrections
– Interception de fin programme dans COL_Log (la trace faisait une sur-exception si l’objet cApplication n’était pas disponible);
– cGénérique.p_sErreurTout et cGénérique.p_sErreurToutJSON : pas de traitement de l’objet _Application (sinon bouclage).
0.1202 mai 2019
Ajouts
– Interception de FinProgramme pour l’ajouter dans le log (inspiré de Erreur);
– cFTP.Connecte : ajout d’un paramètre pour les erreurs ignorées;
– cFTP.Constructeur : ajout d’un paramètre pour mettre un / (ou pas) au début des chemins sur FTP (voir cFTP.FormateChemin);
– cFTP.RépertoireExiste : nouvelle méthode. La méthode Existe devient FichierExiste;
– cFTP.Liste : nouvelle méthode (liste des répertoires ou les fichiers).
Modifications
– COL_Conversion.CheminVersURL : peut traiter des chemins sans protocole (ex : “wlplus.org” au lieu de “http://wlplus.org”) car le protocole peut être géré autrement dans le code appelant (ex : cFTP);
– cEnregistrement.Ajoute : applique les mêmes règles pour les valeurs nulles que la méthode Modifie.
Corrections
– Memos lors de l’ajout d’enregistrement en Hyperfile;
– Recherche sur des clés composées contenant un booléen (qui peuvent être “null”);
– cSourceDeDonnées.ListeRequête : test de l’existence du paramètre sJaugeOuCallBack avant de l’exécuter.
0.1123 avril 2019
Modifications
– le membre cTable.m_sNomUnique passe de “Public constant” à “Privé”. La valeur peut être lue par la propriété cTable.p_sNomUnique (ajout aussi de la propriété p_sAlias).
– cTrace.StructureVersJSON : meilleure prise en charge des membres pas encore instanciés
Corrections
– Accès à des membres objet d’une instance de classe (problème de cTable.m_sNomUnique mal affecté).
– cTable.Colonnes : mauvais nom de table
– cTable.Constructeur : passage de l’objet cTable à son ancètre cSQL et appel de cSQL.p_sNomUnique après l’affectation du nom
Exemple
– Mise à jour de l’exemple pour être compatible avec la version 0.11
0.10d15 avril 2019Cette version a essentiellement modifié plusieurs objets pour une meilleure compatibilité avec Android.
Modifications
– cErreur : niveaux d’erreur mis en membres globaux et ajout de sur certains membres
– Compatibilité Android : cJauge, cEnregistrement, cLog, cFTP, cFichierTexte, COL_Réseau, COL_GUI, COL_PCS et COL_Win
0.10c07 avril 2019
Corrections
– ChampNomComplet et ColonneOptimiseLargeur
– Le membre _Application de cApplication devient un objet non typé pour les cas où un autre objet “Application” est créé en héritant de cApplication
– cGénérique.p_sErreurTout et cGénérique.p_sErreurToutJSON
– cUtilisateur.bSuperviseur et cUtilisateur.Lit suite à la séparation du module Groupware utilisateur (devenu un projet à part)
– Nom de la méthode SQLLimiteRequêteA
– Méthode cBaseDeDonnéesSQLServer.Tables peut lister des tables dans une base de données contenant des caractères spéciaux
Modifications
– Méthodes EstColonnexxx (et quelques membres) passent de cTable à cSQL pour les utiliser dans les appels directs à cSQL. Transparent puisque cTable hérite de cSQL.
Ajouts
– Paramètre “Lecture seule” dans cEnregistrement et cSourceDeDonnées (évite de calculer le hash de l’enregistrement inutilement > gain en performance). Constructeurs et plusieurs méthodes impactées.
– Méthode “Colonnes” dans cSQL pour connaître les colonnes d’une requête SQL faite en direct via cSQL
– Méthode “Occurrence” pour connaître le nombre d’enregistrement d’une requête SQL faite en direct via cSQL
0.10b01 avril 2019
Corrections
– cGénérique.p_sErreurTout et cGénérique.p_sErreurToutJSON
– cSQL, cBaseDeDonnéesSQLServer, cBaseDeDonnées, cTable, cEnregistrement et cSourceDeDonnées suite à la mise en évidence d’un problème de compilation en WD24.
– Correction dans COL_WIN.AfficheÉcranVeille et COL_GUI.ColonneHauteur
Ajouts
– SQLLimiteRésultatA dans cBaseDeDonnéesAS400
0.10a30 mars 2019Première version publique. Téléchargez aussi un projet d'exemple
Ce site n'a aucun lien avec la société PC SOFT®. Les marques "WinDev" et "WebDev" sont des marques déposées de la société PC SOFT.