ATTENTION : le contenu des ces pages web est soumis aux dispositions légales françaises et internationales en matière de droits d'auteurs et de copyright.
NOTA : La plupart de ces articles ont été publiés dans la revue Point DBF entre 1995 et 1999.

 
 

Paradox cookbook

Couverture de Point DBFVous trouverez dans la présente rubrique une série d'articles et de papier technique du temps ou j'étais "chef de rubrique" Paradox pour Point DBF, un mensuel consacré au bases de données et au développement en général.

Courriel
Par Frédéric BROUARD
 

Supplément
technique n°1
Gérer les événements
    Qu'est ce qu'un événement ?
    Classification des méthodes intégrées
    Activation des méthodes intégrées
    Trajet d'un événement
    Récupération d'un événement
    Vecteur de l'événement (le paquet eventInfo)
    Comportement par défaut d'un UIObject
    Chaînage des événements
    Simuler un événement

Centraliser le code en bibliothèque avec ObjectPal
    Centraliser le MouseEnter
    Centraliser le PushButton
    Centraliser les actions
    Conclusion : centraliser ou non ?

Travailler en multi utilisateurs
    Configuration d'une application Paradox en réseau sous Windows
    Les différentes architectures de mise en réseau d'application
    Éléments à considérer
    Programmer en ObjectPal pour le multi-utilisateurs
    Les verrous
    Méthodes et procédures de gestion des verrous
    Le problème du verrou mortel
    Rafraîchissement des données
    Paramétrage du pilote
    Conseils divers pour la programmation en réseau

Optimiser Paradox
    Matériel
    Système
    IDAPI
    Paradox
    Code ObjectPal
    Requêtes

Recettes de cuisine, sauce ObjectPal... par le Maître queux Brillin Savarat
    Mettre en majuscule dans un champ
    Changement automatique de valeur binaires
    Contraindre la saisie en minuscule
    Derouler la liste dès l'arrivée dans le champs
    Vérifier l'unicité d'un index secondaire

Au secours ! Paradox est en panne..., vite, appelez le Docteur Xann GHEE
    Le filtre récalcitrant
    Vermine mortelle
    Version déverminée de Paradox 5

Les sources...
Supplément
technique n°2
Les actions
    1 Un goulot d'étranglement pour le moteur de Paradox
    2 Les différentes classes d'actions
    3 Générer des actions
    4 Récupérer et traiter les actions
    5 Visibilité des actions
    6 Chainage des actions
    7 Traiter les dataAction
    8 Supprimer en cascade
    9 Créer de nouvelles actions
    10 Diffuser une action - la méthode 'broadcastAction'
    11 Empiler une action - la méthode 'postAction'
    12 Générer des actions par le handle de fiche

Programmer les états
    1 les calculs dans les champs
    2 Opérateurs globaux
    3 Position du champ calculé
    4 Opérateurs globaux spécifiques aux états
    5 Opérateurs spéciaux
    6 Opérations directes sur les champs de la table
    7 Opérations combinées
    8 Utilisation de la structure 'iif' dans un champ calculé
    9 Utilisation de la méthode 'readEnvironmentString'
    10 Faire sciemment une erreur dans un champ calculé
    11 Manipuler les UIObjects dans un handle d'état
    12 Créer une méthode intégrée au niveau de l'état
    13 Lancer une procédure personnalisée programmée dans l'état
    14 Créer une fiche à destination de l'imprimante
        et/ou ouvrir un état en tant que fiche
    15 Noircir des cases
    16 Paramétrer les entêtes d'un état :

Paradox et les fichiers .INI ou configurons Paradox...
    1 Structure d'un fichier .INI
    2 WIN.INI
        Section PDOXWIN
        Section IDAPI
        Section OBEX
    3 PDOXWIN.INI
        Section PROPERTIES
        Section PROJECTVIEWER
        Section EXPERTS
        Section HISTORY
        Section DESIGNER
        Section DESKTOP
        Section WINDOWS
        Section PAL...
        Section IDE
        Section FICHE
        Section ETAT
        Section QUERY
        Section PICTURES
        Section FORMATS

    4 PDOXLITE.INI
    5 PDOXWORK.INI
    6 Les paramètres de la ligne de lancement de Paradox Windows
    7 Exemples

Les sources...
Supplément
technique n°3
Tout sur les Tcursor's
    Assignation d’un Tcursor
    Navigation sur les enregistrements d'un TCursor
        Localisation d'enregistrements
        Déplacement dans les enregistrements
        Test de position d'un enregistrement   
        Recherche de la position d'un enregistrement
        Recherche du nombre d'enregistrements d'une table

    Edition dans un TCursor
        Lecture, assignation et modification d'un champ
            Notation directe
            Notation indirecte
            Annulation des modifications entreprises sur un enregistrement
            Utilisation de FieldValue et setFieldValue
            Mise à jour d'enregistrements
            Vidage d'un enregistrement
            Suppression d'un enregistrement
            Insertion d'un enregistrement
            Validation d'un enregistrement

    Copie d'enregistrement entre TCursor
        assignation directe
        Utilisation des méthodes CopyToArray et CopyFromArray
        Utilisation de copyRecord

    Le balayage des tables
        Balayage à l'aide de la stucture SCAN
        Balayage manuel
        Balayage horizontal d'une table

    Gestion des données dans le modèle relationnel
    Commutation d'index
    Filtrage des données à l'aide d'un TCursor
        Filtrage sur l'index actif
        Filtrage général

    méthodes communes aux tables et aux TCursors
        Manipulations globales
        Calculs
        Énumération diverses
        Manipulation des index
        Vérouillage
        Manipulation des champs
        Propriété de la table
        méthodes diverses et leur emploi


Les erreurs / Comment protéger le code
    INTRODUCTION
    Rappel sur la gestion des événements
    Type d'erreurs
        Les avertissements
        Les erreurs critiques

    MÉCANISME DE GESTION DES ERREURS
    OUTILS DE MANIPULATION DES ERREURS
    SÉCURISATION DU CODE
        Détection des erreurs
            Dans les methodes et procédures personnalisées
            Dans les méthodes intégrées

        Traitement des erreurs
    VERS UNE GESTION CENTRALISÉE DES. ERREURS

Redimensionner les fiches
    Le problème des twips et des pixels   
    Les bonnes dimensions des fiches
    Les fiches à redimensionnement automatique
    Moulinette à redimensionner les fiches
        Premier essais
        Second essais
        Troisème essais
        Conclusion

    Figer les dimensions du bureau

Recette de cuisine sauce Objectpal
    ajout d'une clef valuée
    position au premier nom correspondant à la lettre frappée
    détournement du message standard d'appel à la table de référence

Au secours ! Paradox est en panne
    1 Les actions de menu de Paradox Windows qui ne marchent pas
    2 Les boutons Windows 'min' et 'max' déjantés
    3 Corrections apportées par la version 'transparente' 5.02

Les sources...
Supplément
technique n°4

1    LES EXPERTS

2    LE NOUVEL EXPLORATEUR D’OBJETS

3    INDEX SECONDAIRE UNIQUE ET/OU DÉCROISSANT

4    MÉTHODE INTÉGRÉE INIT

5    NOUVEAUX TYPES DE DONNÉES
    5.1    type dataTransfer
    5.2    type OLEauto
    5.3    type mail
    5.4    type toolBar

6    NOUVELLES MÉTHODES
    6.1    type dataBase
    6.2    type filesystem
    6.3    type form
    6.4    type memo
    6.5    type Query
    6.6    type string
    6.7    type system
    6.8    type TCursor

7    PROGRAMMATION DES OCX
    7.1    Boîte liste
    7.2    Boîte à option
    7.3    Incrémenteur
    7.4    Barre de progression
    7.5    Barre graduée

8    BUGG Paradox 7 : l’expert de texte

9    REQUETES

10    GESTION DE SECTION CRITIQUE

Les sources...
Supplément
technique n°5

Le Paradox du Client/Serveur
        Un peu d'histoire
            Les travaux du docteur CODD
            Base de données micro

        Intérêt du concept client /serveur
            serveur de fichier versus serveur SQL
            Procédures stockées
            Déclencheurs (ou triggers)

        L'architecture client/serveur SQL
        Le SQL
            Définition des données (DDL)
            Manipulation des données (DML)
            Variables dans une requête SQL
            Controle des données (DCL)
            La notion de transactions

        La connexion
        Verrouillage optimiste versus verrouillage pessimiste
        Au travail !
            Les outils
        Le code
            Instruction ObjectPal utilisées dans le SQL
            Un exemple de traitement SQL


Un outil de prévisualisation d'états
        La palette de boutons
        Le principe
        Code de la fiche REP_VIEW
            variables globales
            méthode intégrée Open
            méthode personnalisée BuildMenuReport
            Traitement centralisé des boutons
            Aide contextuelle et centralisé des boutons
            A quoi sert le timer ?
            il faut rester cohérent
            Au fait comment lancer le prévisualisateur ?


Le MDI
        Le MDI, quésaco ?
        Le MDI dans Paradox
        Création de la fiche Père
        Méthode personnalisée BuildPopFile
        Code de la méthode BuildPopFile
        Traitement des actions de menu de la fiche MDI Père
        ouvrir une fiche à travers la méthode personnalisée OpenForm
        Fermeture de la fiche MDI Père
        Fiche enfant

Recette de cuisine sauce Objectpal
    Sélectionner des clients homonymes par clic dans le popUp prénom
    Aide à la saisie par référence de table externe
    Contrôle de saisie avec chois dans une liste
    Saisie contrôle par code
    Saisie contrôle par code et libellé

Au secours ! Paradox est en panne
    Le monstrueux bug de la taille de la fenêtre qui tue !

Les sources...
Supplément
technique n°6


la version authentique et originale en pdf !

Le QBE, en long en large et en travers
    Requêtes monotabulaires
        Le système QBE
        Interogation par égalité
        Correspondance approchée
        Les différents types de coches
        Les opérateurs logiques
        opérateurs de comparaison
        Les calculs dans les requêtes
        Utilisation de valeur exemple
        Renommer un champ calculé

    Paramétrage de l’exécution de la requête
        Paramétrage de la réponse
        Option de la table réponse
        Tri de la table réponse
        Options de requête
        Les blancs vallent-ils zéro ?
        Obtenir le SQL équivalent

    Requêtes multi tables
        Lier les tables (le modèle relationnel dans une requête)
        Jointure externe
        Utiliser un modèle relationnel pré-défini   

    Requêtes de mise à jour
        INSÉRER
        SUPPRIMER
        REMPLACERPAR
    Requêtes sur des ensembles de valeurs
        Opérateur ENSEMBLE
        Coche GrouperPar

    Quelques requêtes croustillantes...
        Requêtes réflexives
        Requêtes d’exclusion

    Accélérer les requêtes
        Indexation
        Tampon mémoire
        Paramètres de requête
        eviter jokers et champs mémo
        n’extraire que la clef
        Fichier mémoire de Windows
        disque compressé

    Equivalence SQL/QBE des requêtes
    Opérateur en anglais

Programmer les programmes
    Méthodes de manipulation du code
    Un exemple : des chiffres et des lettres...
        Algorithme
        Mise en oeuvre

    Un générateur de formules
        Exécution d’une formule
        Test de compilation
        Test d’exécution de la formule
        Sauvegarde de la formule


recette de cuisine sauce Objectpal
    Cryptage de colonnes
    Filtrage rotatif
    Bouton reste enfoncé
    Ordonnancement du plus récent au plus ancier
    Colorisation séléctive de champs de table

Les sources...
Calculs de delta horaires Le temps, c’est de l’argent… Savoir le gérer est essentiel !
Savez vous dans quel délais moyen votre demande de SAV ou d’assistance est traitée ?
Non ? Pourtant rien de plus simple à mettre en œuvre, même si l’on doit tenir compte des jours et heures ouvrables, des jours fériés et des congés…

Les sources...
Une gestion de parc informatique Tous les PME dont l’informatique est en pleine expansion sont confrontées au même problème : recenser le matériel du parc informatique afin de connaître les équipements à maintenir et à renouveler.

Les sources...
Une loupe à données Il est fréquent, dans les applications de gestion de ne pas pouvoir visualiser tous les champs d’une table, ou de limiter la dimension des champs compte tenu du manque de place. Dès lors il semble opportun de disposer d’un petit outil permettant de visualiser tout le contenu d’un champ ou d’un enregistrement d’une table…

Les sources...
Gestion de planning Gérer un planning, c’est à dire un emploi du temps, est une chose rendue difficile à cause de la structure archaïque des mesures du temps. En effet, comment rendre simple et souple un système basé sur :
·    l’existence de 365 ou 366 jours par ans ?
·    28, 29, 30 ou 31 jours par mois ?
·    des journées de 24 heures ?
·    des heures de 60 minutes ?
etc…
Voici un exemple d’application qui résous une partie de ce problème.

Les sources...
L’état de l’art en matière de requêtes QBE complexes Le mode de requête « Query By Exemple » spécialement utilisé par Paradox, est très très performant. Mais certains se heurtent à quelques difficultés dès que les extractions s’avèrent complexes. Cet article se propose de donner quelques recettes en matière de requêtes QBE et comment optimiser leur exécution…

Les sources...
Paradox l’Euro et l’an 2000...
Tient donc, un sujet à la mode...
Comment donc Paradox va-t-il se comporter avec l’Euro et lors du passage à l’an 2000 ?
Un article qui vient en complément de ceux que vous avez sans aucun doute récemment lu dans les colonnes de Point DBF, plus exactement dans le numéro du mois de juin, où il était question des rustines de Microsoft…

Les sources...

Tous les articles Paradox / Point DBF tels quels...
format image jpeg, 256 niveaux de gris, 300ppp

N° / date
Titre
Pages (*. jpg)
54 / Mars 1995 Mécanisme de recherche incrémental en Objectpal 48, 49, 50
55 / Avril 1995
Paradox, QBE, ObjectPal et les champs date [les sources] 35, 38, 39
Un module de gestion des accès utilisateurs [les sources] 40, 41, 42
56 / Mai 1995
Un calendrier avec Paradox sous Windows [les sources] 42, 43,44, 45
57 / Juin 1995
Un module de sauvegarde des données des tables Paradox en ObjectPal [les sources] 53, 54, 55, 56
58 / Juillet-Août 1995
Compression des données à sauvegarder [les sources] 35, 38
Le "Drag and Drop" avec ObjectPal [les sources] 39, 40
59 / Septembre 1995
Quatre petits contrôles dynamiques [les sources] 54
Une calculette avec ObjectPal [les sources] 55, 56
60 / Octobre 1995
Un compilateur d'objets Paradox (partie 1) [les sources] 48, 49
61 / Novembre 1995
Une bibliothèque de gestion de pile [les sources] 70, 71
Un compilateur d'objets Paradox (partie 2) [les sources] 71, 72, 73
62 / Décembre 1995
Les fonctions cachées de Paradox [les sources] 50, 51
Un outil de recherche de champs de table [les sources] 52, 53, 54
63 / Janvier 1996
Un outil de construction interactif de requêtes SQL [les sources] 51, 52,53, 54
64 / Février 1996
Mon voyage en Paradox 7 ou comment Borland fait une petite révolution en douceur 43, 44
Un descripteur de fiches (partie 1) [les sources] 45, 46, 47
Revue livresque spécial Paradox Windows 48
65 / Mars 1996
Bibliographie Delphi
67, 68
66 / Avril 1996
Un descripteur de fiche (partie 2) [les sources] 25, 26, 27
Un correcteur de champ [les sources] 27, 28, 29
Revue bibliographique spécial méthodologies 30, 31
67 /  Mai 1996
Un module de gestion des erreurs Paradox pour Windows [les sources] 52, 53
68 / Juin 1996
Création et gestion du modèle relationnel Paradox / ObjectPal (partie 1) [les sources] 66, 67
69 / Juillet-Août 1996
Création et gestion du modèle relationnel Paradox / ObjectPal (partie 2) [les sources] 66, 67, 68
70 / Septembre 1996
Un descripteur de tables Paradox (partie 1) [les sources] 42, 43, 44, 45, 46
71 / Octobre 1996
Un descripteur de tables Paradox (partie 2) [les sources] 47, 48, 49
Suivre des modifications de tables et les archiver (nota : voir erratum ci dessous) [les sources] 49, 50, 51
72 / Novembre 1996
Suivre des modifications de tables et les archiver erratum [les sources] 66
Aide à la saisie et à la visualisation des données [les sources] 67
Création et gestion du modèle relationnel Paradox / ObjectPal (partie 3) [les sources] 68, 69
73 / Décembre 1996
Piloter une imprimante depuis Paradox 7 [les sources] 38, 39, 40
Carnetel (une gestion de carnet téléphonique) [les sources] 41, 42




D'autres articles sont à venir... en tout une cinquantaine !   

Attention, les codes sources ont été réalisés avec les versions 5 ou 7 (16 bits et 32 bits) de Paradox pour Windows de Borland. L'auteur comme l'entreprise Borland ne peut être tenu pour responsable des erreurs et mauvaises utilisation du code, comme de leur conséquence.