Aide-mémoire pour créer un rapport papier avec un JavaBean de code-barres
S'APPLIQUE À : Oracle Reports Developer
Oracle Reports Developer - Version 10.1.2.0.0 à 11.1.2.2.0 [Release 10gr2 à 11g]
Les informations de ce document s'appliquent à toutes les plateformes.
"Pertinence vérifiée le 7 avril 2014"
OBJECTIF : rapport papier, JavaBean de code-barres
Cette note est un aide-mémoire pour créer un rapport papier avec un JavaBean de code-barres.
Information importante pour la version 11g : les étapes de ce document concernent le JavaBean de code-barres. Reports 11g apporte une amélioration très importante dans ce domaine, et ces étapes ne sont pas nécessaires si vous utilisez la version 11g (ou si vous passez à cette version). Sur les plateformes Linux/Unix, Reports 11g peut lire les métriques des polices directement dans les fichiers ttf, comme sur les plateformes Windows ; des polices de codes-barres au format ttf pour Windows peuvent alors être utilisées à la place. Pour plus de détails, consultez :
Note:852698.1 "How to Use TTF Fonts for Font Metrics On Unix With Reports 11g?"
Si vous utilisez Reports 10gR2 ou une version antérieure
ou
si vous utilisez Reports 11g et souhaitez utiliser le bean de code-barres comme en 10.1.2.x ,
suivez les étapes ci-dessous
SOLUTION : démo du JavaBean de code-barres
Téléchargez la démo Barcode Javabean depuis OTN.
1) Décompressez le contenu du fichier zip dans un répertoire.
2) Modifiez le fichier reports.sh et ajoutez le chemin d'oraclebarcode.jar à la variable REPORTS_CLASSPATH du
fichier reports.sh.
Par exemple :
REPORTS_CLASSPATH = /oracle/usupport/dev9i/reports/barcode/scripts/oraclebarcode.jar
3) Créez un rapport simple basé sur la table emp à l'aide du bean de code-barres.
Voici les étapes :
a) Lancez Report Builder et cliquez sur Program -> Import Java classes.
b) Sélectionnez oracle.apps.barcode.util.BarCodeConstants, puis cliquez sur Import. Une fois les packages créés,
importez le second JavaBean : oracle.apps.barcode.BarCodeMaker.
c) Vérifiez que les unités de programme correspondantes ont été créées.
d) Créez un package nommé Globals, comme suit :
PACKAGE globals IS
bcobj ora_java.jobject;
barcode_to_use varchar2(256);
tempdir varchar2(100);
directory_sep varchar2(2);
END;
e) Enregistrez le rapport, puis créez un trigger BeforeReport, comme suit :
begin
globals.barcode_to_use := BarCodeConstants.BAR_CODE_128;
globals.bcobj := barcodemaker.new();
return (TRUE);
end;
f) Enregistrez le rapport, puis créez dans le modèle de données une requête avec l'instruction SQL "select * from emp" sur le schéma scott.
g) Faites glisser la colonne deptno vers le bas, dans un groupe de détail.
4) Créez une colonne de formule (CF_1) dans le groupe maître, comme suit :
a) Dans la vue Data Model, cliquez sur l'outil Formula Column de la palette d'outils.
b) Cliquez dans le groupe maître (le groupe principal, qui contient encore la plupart des noms de colonnes)
pour créer une nouvelle colonne de formule.
c) Double-cliquez sur le nouvel objet colonne de formule (CF_1) pour afficher le PropertyInspector, puis définissez les propriétés :
Sous Column, réglez la propriété Datatype sur Character.
Sous Placeholder/Formula, cliquez dans le champ de la propriété PL/SQL Formula pour afficher le PL/SQL Editor.
d) Dans le PL/SQL Editor, utilisez le modèle pour saisir le code PL/SQL suivant :
function CF_1Formula return VarChar2 is
myFileName varchar2(500);
result varchar2(500);
barcodeData VarChar2(50) := :empno || :deptno;
begin
myFileName := srw.create_temporary_filename;
barcodemaker.setBarWidthInch(globals.bcobj, 0.005);
barcodemaker.setBaseCodeData(globals.bcobj,barcodeData);
barcodemaker.setBarCodeType(globals.bcobj,globals.barcode_to_use);
barcodemaker.setFullPath(globals.bcobj, myFileName);
barcodemaker.renderBarCode(globals.bcobj);
return(myFileName);
end;
e) Sous Column, réglez la propriété Read from File sur Yes et la propriété File Format sur Image.
5) Créez maintenant une mise en page papier (Paper layout) avec le Report Wizard. Choisissez l'option Group above comme style.
Enregistrez le rapport et exécutez-le depuis Builder pour vérifier qu'il fonctionne.
Dans le fichier repserv.conf, ajoutez le classPath comme suit :
<engine id="rwEng" class="oracle.reports.engine.EngineImpl" initEngine="1"
maxEngine="1" minEngine="0" engLife="50" maxIdle="30" callbackTimeOut="60000"
classPath="/oracle/usupport/dev9i/reports/barcode/scripts/oraclebarcode.jar">
Redémarrez le Report Server. Exécutez le rapport avec le Report Server
6) Pour Reports 10g (9.0.4), réglez REPORTS_DEFAULT_DISPLAY=NO et définissez la variable DISPLAY
dans les environnements Unix, car le JavaBean de code-barres a besoin d'un affichage valide.