HOWTO développement Sashipa
Vous avez un listForm et vous souhaitez modifier son comportement, ajouter une colonne d'une table liée, afficher un agrégat...
Pour ne pas afficher la barre des titres de colonnes, ne pas afficher le nombre de lignes, autoriser ou non les suppressions de lignes, autoriser ou non les ajouts :
<listForm db='dbContact' delete='no' displayColumnTitles='no' displayRowCount='no'>
<!-- ... -->
<doubleClicScreen screen='SCContactAdresse' />
<insertScreen screen='SCContactAdresse' schemaFk='fk_adr_Contact' />
<!-- ... -->
|
Remarques :
Voici un exemple :
<listForm db='dbContact' delete='yes'>
<bounds x='10' y='90' w='600' h='350' />
<schemaTableRef schemaTable='tableContact' />
<instanceColumnList>
<instanceColumn schemaColumn='cta_ContactNom' />
<instanceColumn schemaColumn='cta_ContactPrenom' />
<instanceFkColumns join='inner'>
<instanceFk schemaFk='fk_cta_Profession' />
</instanceFkColumns>
<agregatInstanceColumn schemaFk='fk_adr_Contact' letterCount='4'
sort='desc' type='count'>
<title>Nb Adr</title>
</agregatInstanceColumn>
</instanceColumnList>
<doubleClicScreen screen='SCContact' />
<insertScreen screen='SCContact' schemaFk='fk_cta_Profession' />
</listForm>
<!-- ... -->
|
L'élément instanceFkColumns affiche les colonnes de la clef utilisateur (élément userKey dans l'environnement) de la table référencée.
Note : l'attribut join='inner' signifie que la jointure sera interne. Ceci permet d'optimiser la requête sous-jacente. Mais si la clef étrangère n'est pas obligatoire, il faut utiliser join='left'. Autrement les lignes qui ne référencent pas de valeur dans la table liée (ici Profession) seront ignorées.
L'élément agregatInstanceColumn affiche ici le nombre de lignes de la table ContactAdresse qui référencent le contact. Notez que la jointure dans la requête sous-jacente sera une jointure externe gauche (left join).
Les attributs d'une instanceColumn sont facultatifs. Ils prennent comme valeur par défaut, celle définie au niveau de la schemaColumn. Voici une instanceColumn avec tous les attributs de définis :
<instanceColumn schemaColumn='cta_ContactNom' letterCount='20' sort='asc' order='0' /> |
Signification des attributs :
L'attribut letterCount précise la taille de la colonne en nombre de lettres. Cette taille ne concerne que l'affichage de la colonne. Dans l'export, la donnée est prise à sa taille sans être tronquée. La valeur '-1' signifie que la taille de la colonne n'est pas définie (la taille est différente à chaque ligne, en s'adaptant à la donnée).
L'attribut sort spécifie si le tri est ascendant ('asc') ou descendant ('desc').
L'attribut order précise le numéro d'ordre dans le tri de la liste. Par défaut, la liste est triée sur les colonnes de gauche à droite. Vous pouvez utiliser les valeurs que vous souhaitez : le tri se fera relativement les order de colonnes par rapport aux autres. Par exemple si trois colonnes ont pour order '50', '54' et '45' respectivement, alors le tri se fera : d'abord colonne 3, puis colonne 1, puis colonne 2. Une exception pour la valeur '-1' qui signifie "par défaut".
Il s'agit de l'élément doubleClicScreen. Le plus souvent on définit une fiche qui sera filtrée sur la clef primaire de la ligne sélectionnée, comme ceci :
<listForm db='dbContact' delete='yes'>
...
<schemaTableRef schemaTable='tblContact' />
...
<doubleClicScreen screen='SCtblContact' />
<insertScreen screen='SCtblContact' schemaFk='fk_tblContact_tblProfession' />
</listForm>
<!-- ... -->
|
Ici on utilise la même fiche 'SCtblContact' pour l'ajout où la visualisation. Mais on peut vouloir ouvrir une fiche filtrée avec la valeur d'une clef étrangère de la ligne (et non celle de la clef primaire). Par exemple si la listForm affiche le contenu d'une table ne contenant que deux clefs étrangères : il est inutile de proposer la modification de son contenu. Un exemple :
<listForm db='dbContact' delete='yes'>
...
<schemaTableRef schemaTable='tblInscritAuGroupe' />
...
<doubleClicScreen screen='SCtblIndividu'>
<filterWithInstanceFk schemaFk='fk_tblInscritAuGroupe_tblIndividu' />
</doubleClicScreen>
<insertScreen screen='SCtblInscritAuGroupe' schemaFk='fk_tblInscritAuGroupe_tblGroupe' />
</listForm>
<!-- ... -->
|
Ici on a des "Groupes" composés d'"Individus", les individus pouvant s'inscrire à plusieurs groupes. Cette listForm est dans l'écran de la fiche de "Groupe", elle affiche les individus inscrits au groupe. Lors d'un ajout on affiche bien la fiche de l'inscription (SCtblInscritAuGroupe). Lors du double-clic en revanche, on affiche directement la fiche de l'individu référencé par l'inscription.
On pourra aussi voir le cas d'une schemaTable qui est en fait une vue SQL.
© Copyright 2003 Sashipa-Melba Team. Ce document de la technologie Sashipa-Melba est sous licence GNU FDL Vous pouvez le copier et modifier librement les copies tant que cette mention apparaît clairement.