COMPLEMENTS SUR LES DATAWINDOWS
Transcription
COMPLEMENTS SUR LES DATAWINDOWS
CHAPITRE 1 COMPLEMENTS SUR LES DATAWINDOWS COMPLEMENTS SUR LES DATAWINDOWS ......................... 1 Chapitre 1 1.1 Les principales méthodes........................................................................... 2 1.2 Les assistants de création des dwo............................................................. 4 1.2.1 Group................................................................................................. 4 1.2.2 Graph ................................................................................................. 6 1.2.3 OLE 2.0 ............................................................................................. 7 1.2.4 N-UP.................................................................................................. 8 1.2.5 CrossTab............................................................................................ 9 1.2.6 Composite........................................................................................ 11 1.2.7 Richtext ........................................................................................... 12 1.2.7.1 Présentation .................................................................................. 12 1.2.7.2 Application ................................................................................... 12 1.3 Les Dwo External .................................................................................... 15 1.3.1.1 Premier exemple : Une dwo pour une fenêtre de tri. ................... 15 1.3.1.2 Deuxième exemple : Une dwo pour récupérer le contenu d'un fichier texte. ................................................................................................ 17 1.4 Compléments sur la mise en forme ......................................................... 19 1.5 Les styles d'édition des colonnes ............................................................. 22 1.5.1 Edit .................................................................................................. 22 1.5.2 CheckBox ........................................................................................ 22 1.5.3 RadioButton .................................................................................... 23 1.5.4 DropDownListBox .......................................................................... 24 1.5.5 DropDownDataWindow ................................................................. 24 1.5.6 EditMask ......................................................................................... 24 1.6 La validation ............................................................................................ 25 1.7 Les expressions ........................................................................................ 27 1.8 La manipulation des enregistrements ...................................................... 29 1.8.1 Sort .................................................................................................. 29 1.8.2 Filter ................................................................................................ 29 1.8.3 Retrieve Options.............................................................................. 30 1.8.4 Suppress Repeating Values ............................................................. 30 1.8.5 Update properties ............................................................................ 31 1.8.6 Stored Procedure Update................................................................. 33 1.8.7 Create group .................................................................................... 34 1.9 La méthode DESCRIBE .......................................................................... 35 1.10 La méthode MODIFY........................................................................... 37 PowerBuilder – Les DataWindows - Suppléments 1.1 LES PRINCIPALES METHODES Méthodes dw_.SetTransObject(SQLCA) dw_.Retrieve() dw_.Update() dw_.GetSQLSelect() dw_.InsertRow(n) dw_.DeleteRow(n) dw_.RowCount() dw_.ScrollNextRow() dw_.ScrollPriorRow() dw_.ScrollNextPage() dw_.ScrollPriorPage() dw_.ScrollToRow(n) dw_.Reset() dw_.SetItem(l,c,v) dw_.SetText(texte) dw_.GetText() dw_.GetItemDate(l,c) dw_.GetItemDateTime(l,c) dw_.GetItemTime(l,c) dw_.GetItemDecimal(l,c) dw_.GetItemNumber(l,c) dw_.GetItemString(l,c) dw_.GetSelectedRow(numéro) dw_.SelectRow(numéro,booléan) © Pascal Buguet Fonction Assignation d’un objet de transaction (SQLCA en strandard) à une DataWindow Permet de retrouver les données (select.....) correspondant à la DataWindow Met à jour dans la BD ; renvoie 1 si ok Renvoie l’ordre Select base de la DW Insert une ligne dans la DW ; 0 en fin de DW Supprime une ligne ; 0 si ligne courante Renvoie le nombre de tuples dans la DW Ligne suivante Ligne précédente Page suivante Page précédente Se positionne sur l’enregistrement n Efface le contenu de la DW Affecte une valeur à une cellule Affecte un texte à la cellule courante Renvoie le texte de la cellule courante Renvoie une valeur dans une cellule de type Date Renvoie une valeur dans une cellule de type DateTime Renvoie une valeur dans une cellule de type Time Renvoie une valeur dans une cellule de type Decimal Renvoie une valeur dans une cellule de type Number Renvoie une valeur dans une cellule de type string Renvoie la ligne sélectionnée Sélectionne une ligne avec mise en Imprimé le 19 août 2004 Page 2 PowerBuilder – Les DataWindows - Suppléments dw_.GetRow() dw_.SetRow(n) dw_.SetColumn(n) dw_.Find(Expression, début, fin) dw_.FindNext() dw_.SetSort("col1 ordre de tri") dw_.Sort() dw_.SetFilter("condition where") dw_.Filter() surbrillance (true ou false) Renvoie le numéro de l’enregistrement actif La ligne n est la ligne courante La colonne n est la colonne courante Trouve la première occurrence correspondante Trouve l’occurrence suivante pour une colonne RTE (Rich Text Edit) Prépare le tri Trie Positionne un filtre Active le filtre courant Remarque : La plupart de ces fonctions renvoient -1 si elles échouent © Pascal Buguet Imprimé le 19 août 2004 Page 3 PowerBuilder – Les DataWindows - Suppléments 1.2 LES ASSISTANTS DE CREATION DES DWO Le but de ce sous-chapitre est de montrer les étapes particulières de certains assistants. 1.2.1 Group Cet assistant permet de créer un Dwo qui regroupe les enregistrements selon une ou plusieurs valeurs. Il peut être basé sur une ou plusieurs tables ou une requête. A titre d'exemple nous allons construire une version simplifiée de factures. Le Dwo est basé sur un SQL Select (Villes, Clients, Cdes, Ligcdes, Produits). Certains champs sont sélectionnées (Id_cde,….) Les premières étapes sont standards ( Vous sélectionnez Group bien entendu ) Après le choix des champs vous cliquez sur Return Et cette fenêtre apparaît; elle permet de choisir le ou les champs de regroupement. Vous glissez id_cde. © Pascal Buguet Imprimé le 19 août 2004 Page 4 PowerBuilder – Les DataWindows - Suppléments Vous cliquez sur Next, vous changez l'en-tête de rapport, et cochez les deux cases à cocher si nécessaire ( Nouvelle page pour chaque groupe, Nouvelle numérotation de pages pour chaque groupe ) A partir de là, et selon les cas, mais ici c'est la cas, vous devez réorganiser l'ensemble. Tout ce qui ne doit pas être répété doit passer de la zone Detail à la zone Header Group, certaines sommes doivent être supprimées,…. En conception vous devez avoir ceci Pour avoir ceci en exécution. Remarques : renommez les champs calculés. © Pascal Buguet Imprimé le 19 août 2004 Page 5 PowerBuilder – Les DataWindows - Suppléments 1.2.2 Graph Etapes particulières : Après avoir sélectionnées la table et les colonnes, vous spécifiez les abscisses et les ordonnées ( Catagory et Value) Vous saisissez un titre et choisissez la type de graphique Vous modifiez certaines propriétés ( Titre des axes, Légendes,…) © Pascal Buguet Imprimé le 19 août 2004 Page 6 PowerBuilder – Les DataWindows - Suppléments 1.2.3 OLE 2.0 Etape particulière : vous sélectionnez ou créez l'objet OLE à insérer dans le dwo. © Pascal Buguet Imprimé le 19 août 2004 Page 7 PowerBuilder – Les DataWindows - Suppléments 1.2.4 N-UP Etape particulière : Vous spécifiez le nombre d'enregistrements que vous voulez avoir de front. Résultat en conception Résultat en exécution © Pascal Buguet Imprimé le 19 août 2004 Page 8 PowerBuilder – Les DataWindows - Suppléments 1.2.5 CrossTab • Première étape : Construction d'une requête Il s'agit de calculer le CA par Villes / Produits. La requête est basée sur les tables Villes, Clients, Cdes, Ligcdes, Produits. Les colonnes sélectionnées sont Nom_ville et Designation. Le CA est la Sommes des quantités commandées par les prix facturés. Le regroupement se fait sur les deux colonnes sélectionnées. Vous obtenez ceci en mode Prévisualisation. • Deuxième étape : Le dwo Etape particulière Vous spécifiez les données en ligne, en colonne et à l'intersection par un cliquéglissé. © Pascal Buguet Imprimé le 19 août 2004 Page 9 PowerBuilder – Les DataWindows - Suppléments Vous obtenez ceci dans le painter Vous supprimez, éventuellement, un certain nombre de champs… pour obtenir ceci. Ce qui donne ceci en exécution. © Pascal Buguet Imprimé le 19 août 2004 Page 10 PowerBuilder – Les DataWindows - Suppléments 1.2.6 Composite Un Dwo composite est tout simplement composé de plusieurs dwo. Etape particulière : Le choix des dwo à inclure dans le composite. En conception En exécution © Pascal Buguet Imprimé le 19 août 2004 Page 11 PowerBuilder – Les DataWindows - Suppléments 1.2.7 Richtext 1.2.7.1 Présentation Un dwo RichText (RTF) permet de formater un texte pour l'imprimer ou le stocker dans un fichier ou récupérer un fichier RTF. Le format RTF est un standard (cf Word) ascii. Ce format est utilisable dans un contrôle ou dans une DataWindow. Dans un dwo vous pouvez combiner du texte et des champs. Ce type de dwo est utile pour des mailings. Le dwo fonctionne comme un modèle. Vous pouvez ajouter du texte dans le dwo, répéter plusieurs fois le même champ,… A titre d'exemple nous prendrons comme source la table catégories mais nous aurions pu prendre la table clients pour effectuer un mailing publicitaire.. 1.2.7.2 Application • L'étape particulière Propriété Tool Tab Ruler Header/Footer PopupMenu Display Only © Pascal Buguet Description Boîte à outils Règlette des Tabulations Règlettes En-tête/Pied de page Affichage d'une fenêtre Popup. Affichage seulement Imprimé le 19 août 2004 Page 12 PowerBuilder – Les DataWindows - Suppléments Par défaut les cases à cocher Tool, Tab, Ruler et Display Only ne sont pas cochées. Vous pouvez après la création modifier certaines caractéristiques en affichant la fenêtre des propriétés. Ce menu s'affiche en exécution si vous avez cochez PopupMenu © Pascal Buguet Imprimé le 19 août 2004 Page 13 PowerBuilder – Les DataWindows - Suppléments • L'écran en conception Texte ajouté • Script d'impression // Clicked sur cb_imprimer dw_richtext.print( ) © Pascal Buguet Imprimé le 19 août 2004 Page 14 PowerBuilder – Les DataWindows - Suppléments 1.3 LES DWO EXTERNAL Un Dwo basé sur External permet de récupérer des données provenant d'autres sources que d'une table d'une BD ou de créer des dwo qui vont être remplies par du code. 1.3.1.1 Premier exemple : Une dwo pour une fenêtre de tri. • Création du dwo A titre d'exemple vous allez créer une fenêtre générique pour trier une autre datawindow qui aura cet aspect-ci. Vous sélectionnez le format d'affichage (Grid, FreeForm,…) et comme source vous choisissez External. A partir de là vous créez vos "colonnes" en précisant nom, type et longueur. Vous changez les caractéristiques des colonnes. La colonne Tri est une case à cocher. Onglet Edit / Style Type / Check Box puis les valeurs pour On et Off. La colonne Ordre est une DropDownListBox. Onglet Edit / Style Type / DropDownListBox. © Pascal Buguet Imprimé le 19 août 2004 Page 15 PowerBuilder – Les DataWindows - Suppléments Vous cochez Always Show Arrow et vous remplissez la table de code. • En exécution La datawindow est remplie par script – sur le constructor - avec une boucle sur un curseur qui va insérer les noms des colonnes dans le premier champ. © Pascal Buguet Imprimé le 19 août 2004 Page 16 PowerBuilder – Les DataWindows - Suppléments 1.3.1.2 Deuxième exemple : Une dwo pour récupérer le contenu d'un fichier texte. • Le fichier Le fichier – fichier_noms.txt - est un fichier texte avec trois champs (Nom 10, Prénom 10, Cp 5) • Le Dwo Le dwo contient trois colonnes de type string. © Pascal Buguet Imprimé le 19 août 2004 Page 17 PowerBuilder – Les DataWindows - Suppléments • La fenêtre d'exécution • Le script // Constructor de dw_fichier integer li_NumFichier string ls_chemin, ls_ligne pointer l_curseur_actif long ll_taille_enr, ll_row l_curseur_actif = SetPointer(HourGlass!) ls_chemin = "C:\pascal\pb8\dw\fichier_noms.txt" li_NumFichier = FileOpen(ls_chemin, LineMode!, Read!, LockRead!) ll_taille_enr = FileRead(li_NumFichier,ls_ligne) do while ll_taille_enr > 0 ll_row = this.InsertRow(0) this.setItem(ll_row,1,left(ls_ligne,10)) this.setItem(ll_row,2,mid(ls_ligne,11,10)) this.setItem(ll_row,3,right(ls_ligne,5)) ll_taille_enr = FileRead(li_NumFichier,ls_ligne) loop FileClose(li_NumFichier) SetPointer(l_curseur_actif) © Pascal Buguet Imprimé le 19 août 2004 Page 18 PowerBuilder – Les DataWindows - Suppléments 1.4 COMPLEMENTS SUR LA MISE EN FORME Général Description Pointer Description Le pointeur utilisé © Pascal Buguet Imprimé le 19 août 2004 Page 19 PowerBuilder – Les DataWindows - Suppléments Position Description Edit Description © Pascal Buguet Imprimé le 19 août 2004 Page 20 PowerBuilder – Les DataWindows - Suppléments Format Description Font Description © Pascal Buguet Imprimé le 19 août 2004 Page 21 PowerBuilder – Les DataWindows - Suppléments 1.5 LES STYLES D'EDITION DES COLONNES • Fenêtre exemple 1.5.1 Edit C'est le style standard. Il correspond à un champ non formaté : Nom_salarie 1.5.2 CheckBox Case à cocher : CDI Vous précisez l'apparence et les valeurs pour cochée et vide (Data Value). © Pascal Buguet Imprimé le 19 août 2004 Page 22 PowerBuilder – Les DataWindows - Suppléments 1.5.3 RadioButton Bouton Radio : Sexe Vous précisez l'apparence et les valeurs à afficher (Display Value) et à conserver ( Data Value) . © Pascal Buguet Imprimé le 19 août 2004 Page 23 PowerBuilder – Les DataWindows - Suppléments 1.5.4 DropDownListBox Liste déroulante : Fonction A la différence d'une DDDW les valeurs de la liste sont saisies dans le dwo. Ceci est valable pour des valeurs de référence qui ne changent que très rarement. Vous précisez les propriétés d'édition et les valeurs de la liste. 1.5.5 DropDownDataWindow Cf le sous-chapitre qui lui est consacré. 1.5.6 EditMask Champ formaté. © Pascal Buguet Imprimé le 19 août 2004 Page 24 PowerBuilder – Les DataWindows - Suppléments 1.6 LA VALIDATION • Objectif Effectuer un contrôle de validation au niveau du Dwo pour ne pas avoir à le coder dans un script, ni au niveau de la BD. Ce contrôle de validation est souvent un contrôle supplémentaire par rapport aux contrôles standards déjà pris en charge par le dwo. Ce contrôle est effectué, non pas au moment de la saisie dans le texte, mais au moment de la validation de surface, quand vous tabulez ou quitter le champ par un autre moyen, et avant de solliciter la méthode Update(). Vous pouvez aussi coder dans ItemError lorsque les règles de validation sont complexes (cf le paragraphe traitant de cet événement). Pendant l'exécution la fonction GetValidate() permet de récupérer la règle de validation et la fonction SetValidate() permet de la changer. • Syntaxe L'expression à saisir, de type booléenne, doit renvoyer Vrai pour que le test de validation soit correct. Vous la saisissez dans la vue "Column Specifications". Dans la colonne Validation Expression vous saisissez l'expression et dans Validation Message le message éventuel que vous voulez voir affiché à la place du message standard. • Exemple Dans la fenêtre qui suit l'utilisateur ne doit saisir que des clients dont l'id_ville est inférieur à 10 (Répartition géographique). L'expression est la suivante : integer(gettext()) <10 Le message est le suivante : "Code supérieur au code autorisé" Ceci est saisi au niveau du champ id_ville. • Remarques Les saisies sont toujours de type texte et doivent donc être transformées si nécessaire pour être testées. © Pascal Buguet Imprimé le 19 août 2004 Page 25 PowerBuilder – Les DataWindows - Suppléments • Les écrans de conception et d'exécution. La règle de validation La saisie erronée Le message © Pascal Buguet Imprimé le 19 août 2004 Page 26 PowerBuilder – Les DataWindows - Suppléments 1.7 LES EXPRESSIONS • Objectif Modifier dynamiquement les caractéristiques des éléments du dwo en exécution et en fonction de certaines valeurs. Vous pouvez changer la couleur du texte, du font, la taille de la police, etc en fonction de la valeur contenue dans un champ ou de l'état d'un enregsitrement. • Syntaxe générale Dans le dwo, dans la fenêtre des propriétés vous avec certaines propriétés qui sont accompagnées d'un petit bouton rouge. C'est sur ce bouton qu'il faut cliquer pour saisir une expression. Le bouton devient vert lorsqu'une expression a été saisie. L'expression est une expression booléenne de type : If ( condition , vrai , faux ) © Pascal Buguet Imprimé le 19 août 2004 Page 27 PowerBuilder – Les DataWindows - Suppléments • Exemples Premier exemple : si la ligne est modifiée la couleur de fond du code client passe au rouge. L'expression est la suivante : if(isRowModified(), rgb(255,0,0),rgb(255,255,255)) Elle est saisie au niveau du champ id_client. Deuxième exemple : si l'année de naissance est supérieure à 1980 alors la date est en gras (700) autrement la police est fine (200). Vous vous positionnez sur bold et vous saisissez cette expression : if(year( date_naissance ) > 1980,700,200) © Pascal Buguet Imprimé le 19 août 2004 Page 28 PowerBuilder – Les DataWindows - Suppléments 1.8 LA MANIPULATION DES ENREGISTREMENTS Ce menu permet de modifier des paramètres de qui n'affectent pas l'ordre SQL. 1.8.1 Sort Permet de trier. Vous Drag/Dropez la(les) colonne(s). 1.8.2 Filter Permet de filtrer. Vous saisissez une expression. © Pascal Buguet Imprimé le 19 août 2004 Page 29 PowerBuilder – Les DataWindows - Suppléments 1.8.3 Retrieve Options Permet de préciser la méthode de remplissage de la datawindow. Par défaut ni l'une ni l'autre. Le tri annule ces deux options. • Rows as Need : les enregistrements sont extraits en fonction des besoins. • Rows to Disk : les enregistrements sont bufferisés sur le disque. 1.8.4 Suppress Repeating Values Permet de n'afficher qu'une seule fois la même valeur. Doit être associé avec un tri. © Pascal Buguet Imprimé le 19 août 2004 Page 30 PowerBuilder – Les DataWindows - Suppléments 1.8.5 Update properties Permet de modifier les capacités de mise à jour d'une table et d'une seule au travers du dwo. • Voici l'écran que l'on a concernant un dwo basé sur une table. Le dwo permet la mise à jour dans la mesure où il est basé sur tous les champs d'une table. La maj est possible si tous les champs obligatoires sont présents. • Et voici l'écran pour un dwo basé sur une jointure (Clients X Villes) Le dwo est basé sur une jointure et donc la case à cocher Allow Updates est vide. Une seule pourra être mise à jour. © Pascal Buguet Imprimé le 19 août 2004 Page 31 PowerBuilder – Les DataWindows - Suppléments • Voici les modifications à effectuer pour pouvoir mettre à jour la table Villes. Les règles: En premier lieu vous devez mettre les tabulations à une autre valeur que 0 pour l'utilisateur puisse saisir. Vous cochez Allow Updates. Vous sélectionnez la table susceptible de MAJ. Vous choisissez la clause de MAJ (Sur la clé, sur la clé et toutes les colonnes modifiables, sur la clé et les colonnes modifiées). Dans un cadre multi-user plus la clause sollicite de colonnes plus les MAJ seront impossibles car il suffit qu'une seule des colonnes impliquées dans la clause soit modifié par une autre utilisateur et la MAJ échoue. Vous sélectionnez le type de MAJ ( Suppression puis insertion ou Modification). Vous sélectionnez les colonnes modifiables. Vous sélectionnez la colonne unique (vous pouvez cliquer sur le bouton Primary Key). • Exemple La table Villes est modifiable via cette jointure. © Pascal Buguet Imprimé le 19 août 2004 Page 32 PowerBuilder – Les DataWindows - Suppléments 1.8.6 Stored Procedure Update • Objectif Cette option permet de préciser la ou les procédures stockées qui seront utilisées pour la mise à jour du dwo. Lorsque vous cliquez sur l'option vous obtenez cette boîte de dialogue. Vous cliquez ensuite sur le bouton Procedures pour avoir la liste des procédures stockées. Vous sélectionnez la procédure. En cliquant sur le bouton More vous affichez le texte de la procédure. Après avoir validé sur OK vous sélectionnez dans les listes les arguments de la procédure pour les faire correspondre avec les colonnes du dwo. © Pascal Buguet Imprimé le 19 août 2004 Page 33 PowerBuilder – Les DataWindows - Suppléments 1.8.7 Create group Permet de créer un groupe à partir d'une ou plusieurs colonnes. © Pascal Buguet Imprimé le 19 août 2004 Page 34 PowerBuilder – Les DataWindows - Suppléments 1.9 LA METHODE DESCRIBE • Objectif Cette méthode, mais aussi la syntaxe dite de DOT NOTATION, permet de récupérer, toujours sous forme de chaîne de caractères, une propriété d'un objet d'un DataWindow Object (Dwo) . • DwSyntax Pour obtenir la syntaxe pour la méthode Describe et la méthode Modify vous allez dans l'aide dans la rubrique Sommaire/ DataWindow Reference / DataWindow Object Properties / Alphbetical Listing of DataWindow Object Properties ou Controls in Dw and their properties. • Exemple Dans cet exemple nous allons récupérer la liste des noms des colonnes du dwo. • Ecran © Pascal Buguet Imprimé le 19 août 2004 Page 35 PowerBuilder – Les DataWindows - Suppléments • Script // Clicked sur cb_describe string ls_col_count, ls_nom_col, ls_describe int li_count, li_ctr ls_col_count = dw_clients.Describe("datawindow.column.count") li_count = integer(ls_col_count) for li_ctr = 1 to li_count ls_describe = "#" + trim(string(li_ctr)) + ".name" ls_nom_col = dw_clients.describe(ls_describe) lb_cols.additem(ls_nom_col) next • Remarques La méthode renvoie une chaîne même s'il s'agit dans le premier usage du nombre de colonnes. Notez que les arguments sont aussi de type chaîne. Lors de la deuxième utilisation nous utilisons #n.name pour parcourir les différentes colonnes du dwo; #n pour le rang de la colonne et name pour récupérer le nom de cette colonne. Comparaison avec la dot.notation ls_col_count = dw_clients.object.datawindow.column.count li_count = integer(ls_col_count) Si ce script remplace l'autre, en aucun la deuxième partie ne pourrait être réalisée avec cette syntaxe. Seule la méthode describe permet donc de récupérer le nom des colonnes. © Pascal Buguet Imprimé le 19 août 2004 Page 36 PowerBuilder – Les DataWindows - Suppléments 1.10LA METHODE MODIFY • Objectif La méthode Modify permet de modifier les caractéristiques des objets d'un DataWindow Object (Dwo). C'est le pendant de la méthode précédente. Certaines propriétés sont en lecture seule; la méthode est donc inapplicable. • Exemple Dans le même écran nous allons changer la couleur du texte, et la couleur du fond du champ id_client. • Scripts // Clicked sur cb_modify string ls_vert, ls_bleu, ls_rouge ls_vert = string(rgb(0,255,0)) ls_bleu = string(rgb(0,0,255)) ls_rouge = string(rgb(255,0,0)) dw_clients.Modify("id_client.Color='" + ls_bleu + "'") dw_clients.Modify("id_client.BackGround.color='" + ls_vert + "'") • Remarques Ici encore l'argument de la méthode est de type chaîne. A titre de comparaison voici le même script avec la dot.notation dw_clients.object.id_client.Color = rgb(0,0,255) dw_clients.object.id_client.BackGround.color = rgb(0,255,0) © Pascal Buguet Imprimé le 19 août 2004 Page 37