|
Ajouter une table à xShell2002

xShell2002 contient trois
tables :
- la table Forms qui a un champ Empty et aucun enregistrement. Cette table
n'est là que pour recevoir les formulaires génériques.
- la table Index qui possède six champs indexés. Cette table
est liée à la table Data dans une relation de N vers 1,
c'est à dire qu'à un enregistrement de la table Data est
attaché de 1 à N enregistrements de la table Index.
- la table Data qui possède huit champs dont quatre sont indexés.
Sur ces huit champs, quatre sont particuliers : le champ Handle,
le champ State, le champ Link
et le champ prp. La présence
de ces quatres champs dans une table permet de définir la table
comme étant du type "Data".
Une table du type "Data" :
C'est une table qui possède les quatre champs cités ci-dessus
et qui de ce fait va pouvoir utiliser les mécanismes mis en place
dans la librairie rcd_ (Enregistrements). Ces mécanismes permettent
la liaison avec la table Index, le contrôle de l'accès aux
enregistrements par les utilisateurs selon leurs droits, la suppression
et la récupération des enregistrements, le versionning,
la synchronisation entre bases.
Ajouter une table à xShell2002 :
Si vous désirez ajouter une table à xShell2002 et la voir
profiter des possibilités du shell, il faut créer les champs
suivants :
- Handle, champ alpha 8, indexé.
- State, champ alpha 5, indexé.
- Link, champ alpha 12, indexé.
- prp, champ texte.
Ces champs ne doivent pas nécessairement être placé
en début de table, ils peuvent être rajoutés à
une table importé depuis une autre structure. Ils n'ont pas besoin
de se suivre non plus, ils peuvent remplacer des champs existants et n'étant
plus utilisés.
IL est important de respecter le nom des champs. Ne changez pas le nom
des champs de la table Index ou de la table Data.
Vous pouvez ensuite ajouter les champs de votre choix dans cette table.
Avoir créé ces quatre champs particuliers est une première
étape. Il est nécessaire de déclarer la table dans
le code de xShell2002 pour qu'il en tienne compte. Cette déclaration
est simple à réaliser puisqu'elle consiste à appeler
la méthode rcd_StructureDefinition
et de lui passer en pointeur la table que vous voulez déclarer.
Où placer cette déclaration? Vous pouvez le faire dans la
méthode OnStartUp
. Cette méthode est appelée au lancement de la base. Vous
trouverez dans le corps de cette méthode les lignes suivantes :
`________________________________________________________________________________
`traitements spécifique
rcd_DataName:=prp_GetDBPrp
("DefaultDataName")
Au cas ou
: (rcd_DataName="!cos")
cos_LoadCommandList
dsg_LoadPrefix
Fin de cas
C'est à la ligne 53 de la méthode. A ce stade du démarrage
de l'application, xShell2002 charge le nom de données par défaut
tel qu'il est défini dans le fichier DBPrp.TXT
du dossier properties.
Précision particulière :
Sur l'archive que vous avez téléchargé, ce nom est
"!xSh". Ce mécanisme intéresse particulièrement
les développeurs qui veulent avec xShell gérer plusieurs
fichiers de données et des cas spécifiques en ce basant
sur la valeur du nom de données et gérer au sein d'une table
commune des données de type différent. Dans le cas présenté
ici, le nom de données est "!cos". C'est celui de Canal
OpenSource. Le "au cas ou" me permet pour cette base de charger
la liste des commandes 4D, des plug-ins, des méthodes contenues
dans le fichier de données, les constantes et les mots cles. Je
charge aussi avec la méthode dsg_LoadPrefix la liste des préfix
des méthodes de xShell qui me permet de faire un premier classement.
Les enregistrements sont stockés dans la table [Data], les comptes
des abonnés aussi, mais ces enregistrements sont séparés
des autres par leur nom de données.
Vous n'êtes pas obligé de définir un nom de données,
vous pouvez conserver !xSh, vous n'avez pas besoin de le gérer
si votre développement a pour but d'avoir un seul type d'application.
Vous pouvez écrire :
`________________________________________________________________________________
`traitements spécifique
rcd_DataName:=prp_GetDBPrp
("DefaultDataName")
Au cas ou
: (rcd_DataName="!cos")
cos_LoadCommandList
dsg_LoadPrefix
Fin de cas
rcd_StructureDefinition
(->[Patients])
rcd_StructureDefinition
(->[RDV])
Vous pouvez aussi définir votre propre nom de données par
défaut.
Allez dans le dossier Data qui se trouve à coté de xShell2002,
ouvrez le dossier properties et double cliquez sur le fichier DBPrp.TXT.
A la 4ème ligne remplacez
DefaultDataName=!xSh par
DefaultDataName=GestionPatients
J'ai l'habitude d'utiliser la syntaxe ! suivi de trois lettres qui sont
l'abréviation de l'application :
!cos pour Canal OpenSource
!ctc pour Contact Deuxième Edition
!fac pour ma facturation
mais vous pouvez mettre le libellé que vous voulez puisque ce nom
de données est ensuite stocké dans le champ alpha [Index]DataValue
qui est un champ de 80 caractères indexé.
Vous pouvez alors écrire :
`________________________________________________________________________________
`traitements spécifique
rcd_DataName:=prp_GetDBPrp
("DefaultDataName")
Au cas ou
: (rcd_DataName="!cos")
cos_LoadCommandList
dsg_LoadPrefix
: (rcd_DataName="GestionPatients")
rcd_StructureDefinition
(->[Patients])
rcd_StructureDefinition
(->[RDV])
Fin de cas
Il s'agit là de l'initialisation de l'application. Vous pouvez
définir plusieurs nom de données au sein d'une même
application et le définir au lancement d'un process avec la méthode
rcd_SetDataName
("CarnetAdresse") et le récupérer avec la méthode
$nomDonnees:=rcd_GetDataName
Le nom de données que vous avez défini est utilisé
par la méthode rcd_LoadVirgen
qui charge un nouvel enregistrement et crée les entrées
dans la table Index.

Retour | Haut
de page
|