I. Résumé▲
L'objectif de cette note est de décrire une interface simple qui liste des fichiers d'États Rapides dans un dossier et qui explore les différents types de sorties disponibles avec ces États Rapides : Texte, 4D View (Tableur), 4D Chart (Graphe), HTML et XML.
II. Interface▲
L'interface est une base de données simple offrant les fonctionnalités suivantes :
- elle liste les fichiers d'États Rapides dans un répertoire donné ;
- elle permet de sélectionner un nouveau répertoire ;
- elle affiche des informations basiques sur l'État Rapide sélectionné dans la liste ;
- elle permet d'ouvrir un État Rapide dans un process séparé, par un double-clic dans cette liste.
Par défaut, le dialogue affiche la liste des États Rapides localisés dans le dossier États. Vous pouvez choisir un dossier différent en cliquant sur le bouton Mise à jour du dossier.
Note : Lorsque vous ouvrez la base exemple pour la première fois, il n'existe pas de fichier de données. En Menus Créés, choisissez « Créer 1 000 enregistrements ». Les données ainsi créées vous serviront pour les États.
III. Composition de la liste▲
La liste est composée à l'affichage du formulaire ou quand une mise à jour du dossier est choisie. La méthode M_Update_List met à jour le tableau aScroll1. Un filtre est mis en place pour éliminer tout ce qui n'est pas Etats Rapides. Sous Windows, la règle est simple : si l'extension n'est pas « .4qr », ce n'est pas un État Rapide. Sous Mac, le problème est plus complexe : un État Rapide peut avoir une extension « .4qr » ou avoir un type de fichier « 4DQR » ou « 4DSE », en fonction de sa plateforme de création. Les deux plateformes sont traitées séparément, dans une variable interprocess (<>
Platform), qui est initialisée à l'ouverture de la base.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
TABLEAU ALPHA(
80
;
aScroll1;
0
)
LISTE DES DOCUMENTS
(<>
Folder;
aScroll1)
Si
(<>
Platform=
3
)
` windows
Boucle
(
$i
;
Taille tableau
(
aScroll1);
1
;-
1
)
Si
(
Non
(
Sous chaine
(
aScroll1{$i
};
Longueur
(
aScroll1{$i
})-
3
;
Longueur
(
aScroll1{$i
}))=
".4qr"
))
SUPPRIMER LIGNES(
aScroll1;
$i
)
` on supprime tous les fichiers qui n'ont pas comme extension .4qr
` basically removing any file whose extension is not .4qr
Fin de si
Fin de boucle
Sinon
Boucle
(
$i
;
Taille tableau
(
aScroll1);
1
;-
1
)
Si
(
Non
(
Sous chaine
(
aScroll1{$i
};
Longueur
(
aScroll1{$i
})-
3
;
Longueur
(
aScroll1{$i
}))=
".4qr"
))
` si les fichiers n'ont pas la bonne extension
` if it does not have the right extension
Si
(<>
vAbsPath)
Path:=<>
Folder+<>
Separator+
aScroll1{$i
}
Sinon
Path:=<>
MacOS+<>
Folder+<>
Separator+
aScroll1{$i
}
Fin de si
Si
(
Non
((
Type
document(
Path)=
"4DQR"
)
|
(
Type
document(
Path)=
"4DSE"
)))
`si l'extension n'est pas correcte, on vérifie le type qui doit être soit 4DSE, soit 4DQR
`it does not have the right extension so it MUST have the types 4DSE or 4DQR
SUPPRIMER LIGNES(
aScroll1;
$i
)
Fin de si
Fin de si
Fin de boucle
Fin de si
IV. Visualiser les informations sur les États▲
Vous noterez que lorsque l'État est sélectionné, son type (Liste ou Tableau Croisé) et son format de sortie sont affichés dans une zone séparée. Ces informations additionnelles sont là juste pour indiquer les données disponibles au premier coup d'œil :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
` Method M_Update_QR_Data
` retrieve the form's basic information
` when it is clicked in the list
`affichage des informations basiques sur l'État rapide lorsque l'on clique dessus.
C_TEXTE
(
vQrStatus)
Si
(
$1
=
""
)
Sinon
Si
(<>
vAbsPath)
Path:=<>
Folder+<>
Separator+
$1
Sinon
Path:=<>
MacOS+<>
Folder+<>
Separator+
$1
Fin de si
$QR_Area
:=
QR Creer zone hors ecran
C_BLOB
(
$vTemp
)
DOCUMENT VERS BLOB
(
Path;
$vTemp
)
QR BLOB VERS ETAT
(
$QR_Area
;
$vTemp
)
$QrType
:=
QR Lire type etat
(
$QR_Area
)
Au cas ou
: (
$QrType
=
1
)
vQrStatus:=
"Type État : Liste"
: (
$QrType
=
2
)
vQrStatus:=
"Type État : Tableau croisé"
Fin de cas
QR LIRE DESTINATION
(
$QR_Area
;
$output
)
Au cas ou
: (
$output
=
1
)
vQrStatus:=(
vQrStatus+
Caractere
(
13
)+
"Type sortie : Imprimante"
)
: (
$output
=
2
)
vQrStatus:=(
vQrStatus+
Caractere
(
13
)+
"Type sortie : Fichier Texte"
)
: (
$output
=
3
)
vQrStatus:=(
vQrStatus+
Caractere
(
13
)+
"Type sortie : 4D View"
)
: (
$output
=
4
)
vQrStatus:=(
vQrStatus+
Caractere
(
13
)+
"Type sortie : 4D Chart"
)
: (
$output
=
5
)
vQrStatus:=(
vQrStatus+
Caractere
(
13
)+
"Type sortie : Fichier HTML"
)
Sinon
vQrStatus:=(
vQrStatus+
Caractere
(
13
)+
"Type sortie : Type inconnu - Erreur"
)
Fin de cas
QR SUPPRIMER ZONE HORS ECRAN
(
$QR_Area
)
Fin de si
V. Choisir un nouveau dossier▲
Vous pouvez choisir un nouveau dossier à n'importe quel moment. Quand la base est lancée, une variable (<>
Folder) est mise en place sur le dossier des États qui se trouve près de la structure de la base exemple. À ce moment, le chemin utilisé est un chemin relatif (<>
vAbsPath est passé à Faux). Si un dossier différent est utilisé plus tard, <>vAbsPath passe à Vrai.
Chaque fois qu'un chemin est nécessaire, le code suivant est utilisé pour déterminer quelle méthode doit être utilisée pour pointer sur le dossier :
2.
3.
4.
5.
Si
(<>
vAbsPath)
Path:=<>
Folder+<>
Separator+
aScroll1{$i
}
Sinon
Path:=<>
MacOS+<>
Folder+<>
Separator+
aScroll1{$i
}
Fin de si
Ce morceau de code est nécessaire, car sur Mac, un chemin relatif doit commencer par le caractère « : » (stockée dans <>
MacOS).
La mise à jour du dossier est faite par la méthode suivante :
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
`method M_Update_Folder
`called to update the folder
`Mise à jour du dossier
C_TEXTE
(
$tmpFolder
)
$tmpFolder
:=
Selectionner dossier
(
"Sélectionnez un dossier."
)
Si
(
$tmpFolder
=
""
)
` No folder selected. No update needed
` pas de dossier ou répertoire sélectionné, donc pas de mise à jour.
Sinon
<>
Folder:=
$tmpFolder
Si
(<>
MacOs=
":"
)
<>
Folder:=
Sous chaine
(<>
Folder;
1
;
Longueur
(<>
Folder)-
1
)
` removing the endng :
` on supprime le dernier :
<>
vAbsPath:=
Vrai
Fin de si
M_Update_List
` updating the list of reports
` Mise à jour de la liste des États
vQrStatus:=
""
` resetting the report summary
` Remise à chaine vide des infos
Fin de si
Le principe est de laisser l'utilisateur choisir un nouveau dossier et de mettre à jour la variable interprocess <>
Folder.
VI. Types de Sorties▲
Fichier Texte▲
Des fichiers textes peuvent être générés en utilisant l'éditeur d'États Rapides. Les fichiers générés respectent le format TAB-TAB-RETURN, où une tabulation est insérée entre chaque cellule et un retour chariot est inséré à la fin de chaque ligne.
Par exemple, examinons l'état suivant :
Voici l'état imprimé :
En fichier texte, il apparaît comme ceci :
4D View▲
Un des formats de sortie disponible est 4D View. Lorsque vous choisissez ce type de sortie, l'État est présenté dans une fenêtre externe 4D View. Chaque cellule générée par le rapport est placée dans une cellule séparée 4D View. Ce principe est appliqué pour les États Listes ou Tableaux croisés.
Dans l'état ci-dessous, la ligne de Détail a été rendue invisible et une somme est faite lorsque l'on change de produits et de pays.
Lorsque l'État est généré, la fenêtre 4D View ressemble à ceci :
Graphe 2D▲
Une fois généré, le graphe peut être manipulé comme n'importe quel graphe avec 4D Chart.
Graphe 3D▲
Pour créer un graphe en 3 dimensions, on a besoin d'un tableau croisé. En principe, l'état définira deux catégories et une valeur. Dans l'État ci-dessous, les catégories sont Produits et Pays, et les valeurs sont les sommes des factures.
Le résultat en graphe 3D :
Fichier HTML▲
La génération de fichier HTML à partir d'un État Rapide fonctionne comme un mécanisme d'export avec tags. Le résultat final dépendra du contenu du modèle HTML que vous utilisez. Avec le modèle par défaut, le fichier HTML inclura, avec les données, les styles de polices et les couleurs d'arrière-plan que vous assignerez aux différentes zones de l'État.
Le modèle par défaut ressemblera à ceci :
Pour plus d'informations sur les tags, reportez-vous à la description de la commande QR FIXER MODELE HTML (https://4d.developpez.com/documentation/4DDoc2004/CMF/CMF00750.HTM).
Tableau croisé▲
Voici un exemple de tableau croisé :
Export XML▲
Un exemple en XML :
Le format de sortie HTML fonctionne donc comme un export texte qui inclut un système de tag. Considérant les similitudes entre le format HTML et le format XML, exporter au format XML ne devrait pas présenter trop de difficultés. Dans cette partie, nous allons construire un état qui exportera nos données au format XML, compatible avec le propre format d'export XML de 4D.
Voici un exemple d'export XML de notre base exemple :
Créons un modèle à utiliser avec l'état :
Lorsque vous créez un état, vous avez simplement besoin de placer les cinq champs dans le même ordre que celui utilisé dans l'export et assigner le modèle HTML (en utilisant QR FIXER MODELE HTML) :
En générant le fichier, changez son extension en « .xml », c'est identique à un export XML et peut être importé dans une base de données :
VII. Conclusion▲
Cette note technique décrit une interface simple et multiplateforme qui liste les fichiers d'États Rapides d'un dossier donné et présente un aperçu des formats de sortie disponibles avec l'Éditeur d'États Rapides.
VIII. Base exemple▲
Téléchargez la base exemple :
Base pour Windows
Base pour Mac OS