- Lancer Oracle Forms Builder.
- Aller dans le menu Edition - Préférences. La fenêtre suivante s'affiche à l'écran.
Blogue sur les nouvelles technologies d'Oracle, SQL, Forms, Reports, Designer,PL/SQL, APEX, Administration,OCP
mercredi 30 juin 2010
Changer le navigateur dans Forms 10g.
lundi 28 juin 2010
Récupérer une table supprimée.
Pour activer, on va vérifier un paramètre dans la corbeille:
- Connectez-vous avec sys as sysdba avec PL/SQL Developer, TOAD ou bien tout simplement l'interface texte de SQL PLUS.
- Tapez cette commande: SHOW PARAMETER RECYCLEBIN, ce qui nous donne le résultat suivant:
--------- -------- -------
recyclebin string on
On voit bien que la corbeille est ON (ça veut dire que les objets effacés sont stockés dans cette corbeille pour les récupérer). Si le paramètre est OFF, on va faire un ALTER SYSTEM indiqué comme suit:
ALTER SYSTEM SET RECYCLEBIN = ON SCOPE=SPFILE;
Ensuite, on va faire un drop de la table employe (DROP TABLE EMPLOYE). À ce moment là, l'objet employe n'existe pas et pour récupérer cette table, on va utiliser un FLASHBACK:
FLASHBACK TABLE EMPLOYE TO BEFORE DROP;
Si on fait maintenant DESC EMPLOYE, le système va afficher la structure de la table effacée.
Afficher le code source d'un objet de la BD.
SET SERVEROUTPUT ON (important pour afficher les messages en PL/SQL)
create or replace procedure TestMessage(mes varchar2)
is
begin
dbms_output.put_line(mes);
end;
Cette procédure affiche n'importe quel message sur l'écran. On va compiler cette procédure pour créer l'objet. Ensuite, la voici la procédure aff_code_source:
CREATE OR REPLACE PROCEDURE AFF_CODE_SOURCE(NOM_OBJET IN VARCHAR2)
IS
CURSOR CUR_OBJET
IS
SELECT TEXT FROM USER_SOURCE -- SELECT POUR AFFICHER
WHERE NAME=NOM_OBJET -- LE CODE SOURCE
ORDER BY LINE;
LIG_OBJ CUR_OBJET%ROWTYPE;
INDICE NUMBER:=0;
BEGIN
OPEN CUR_OBJET;
LOOP
FETCH CUR_OBJET INTO LIG_OBJ; --RÉCUPÈRE LA LIGNE
EXIT WHEN CUR_OBJET%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(LIG_OBJ.TEXT); --AFFICHER LE CONTENU DE CHAQUE LIGNE
INDICE := INDICE+1;
END LOOP;
CLOSE CUR_OBJET;
IF INDICE=0 THEN
TestMessage(' ERREUR... LA PROCÉDURE OU LA FONCTION '||NOM_OBJET||' N''A PAS ÉTÉ CRÉE');
END IF;
END AFF_CODE_SOURCE;
Compilez cette procédure et vous verrez les résultats en exécutant la commande suivante:
EXEC AFF_CODE_SOURCE('TESTMESSAGE');
jeudi 17 juin 2010
Oracle 11g release 2.
http://www.oracle.com/technology/software/products/database/index.html
mercredi 27 janvier 2010
Intégrer un calendrier avec Oracle Forms.
vendredi 22 janvier 2010
Projet (partie applicative).
- Module Baux: Ce module permet d'ajouter les baux une fois que le locataire trouvera l'appartement ainsi que les conditions de loyer.
Une version de démonstration est en cours de développement.
Abed
mardi 5 janvier 2010
Nouveautés APEX 4.0
- Application Express Websheets (nom non encore officiel) - Un système rapide, simple et sûr moyen de recueillir et de partager des informations.
- Oracle APEX Listener basé sur J2EE pour améliorer les performances, upload de fichier direct, et amélioration de l'impression PDF.
- Amélioration dans le composant Tabular form incluant des validations et type d’éléments.
- Support d’AnyChart 4 incluant des assistants pour créer des diagrammes de Gantt et des cartes avec les objets AnyGantt et AnyMap.
- Extension des éléments de page permettant aux développeurs d’ajouter leurs propres type d’éléments.
- Nouveaux schémas d’authentification.
- Et de nombreuses autres améliorations.
Essayez-le gratuitement à cette url: http://tryapexnow.com/
Abed
dimanche 3 janvier 2010
Installer Oracle Forms 10g sous Windows 7.
1) Il faudrait changer le mode de compatibilité pour le programme SETUP.EXE (mode XP).
En cliquant sur les propriétés, ce qui nous donne la fenêtre suivante:

On voit ici le mode de compatibilité XP service pack 2. On va cliquer sur Ok pour valider les changements.
2) On va changer les paramètres de la mémoire virtuelle. Si jamais, vous ne changerez pas ces paramètres, voici le message d'erreur de l'installateur:

Donc, il est important de changer les paramètres de la mémoire virtuelle, dont voici les étapes:
- Allez au panneau de configuration.
- Chercher l'option de performance.

On va cliquer sur Taille personnalisée et on va définir les tailles. Ensuite, cliquer sur le bouton Définir.
- Lancez une deuxième fois le programme d'installation de ORACLE DEVELOPER 10 g.
- Le processus devra continuer jusqu'à la fin.

3) JVM.DLL
- Installez le dernier jdk sur le site de sun (java.sun.com).
- Après l'installation de jdk, copiez le fichier jvm.dll qui se trouve dans le dossier C:\Programmes\Java\jdk1.6.0_13\jre\bin\client dans le dossier approprié d'oracle JInitiator (C:\Programmes\Jinitiator 1.3.1\bin\hostpost). Écrasez l'ancienne dll (jvm.dll).
- Ré-exécutez Forms pour voir si le formulaire s'affiche correctement à l'écran.
Abed
dimanche 20 décembre 2009
Projet - partie 3 (suite).
L’étape suivante de notre travail sera la génération de la BD physique à partir des informations collectées jusqu'à présent au niveau du RON.
Il faut noter que l’on a fait un certain nombre d’affinage au niveau du modèle logique obtenu à partir du DDT et du modèle conceptuel en entrée.
Au niveau du Design editor, on va utiliser le Server generator pour générer les objets physiques qui seront utilisés pour le stockage de l’information.
On pourra soit générer les commandes DDL au niveau de scripts livrables au DBA, soit des commandes DDL qui seront exécutées sur une Base cible local ou distante.
Objectif
- Création des tables et des objets afférents du système RESIDENCE LESOLEIL
Étant donné que l’on a créé un seul server model au niveau de notre système, on veillera à ouvrir ce modèle par le Design Editor et de choisir l’option de génération telle que le montre la figure suivante :
Par exemple le DDL nécessaire pour la création de la table IMM_PAIEMENTS est :
| PROMPT Creating Table 'IMM_PAIEMENTS' CREATE TABLE IMM_PAIEMENTS (NUM_PAIEMENT NUMBER(10) NOT NULL ,LOC_CODE_LOCATAIRE NUMBER(10) ,DATE_PAYEMENT DATE NOT NULL ,MODEPAIEMENT CHAR(1) NOT NULL ,MONTANT NUMBER(10,2) NOT NULL ,ETAT CHAR(1) NOT NULL ,CREATED_BY VARCHAR2(15) ,MODIFIED_BY VARCHAR2(15) ,CREATED_DATE DATE ,MODIFIED_DATE DATE ) / |
Il est important de constater que le script de création des contraintes contient les commandes suivantes :
| PROMPT Creating Check Constraint on 'IMM_PAIEMENTS' ALTER TABLE IMM_PAIEMENTS ADD (CONSTRAINT AVCON_1260123002_MODEP_000 CHECK (MODEPAIEMENT IN ('C', 'H', 'R', 'D'))) / PROMPT Creating Check Constraint on 'IMM_PAIEMENTS' ALTER TABLE IMM_PAIEMENTS ADD (CONSTRAINT AVCON_1260123002_ETAT_000 CHECK (ETAT IN ('P', 'N'))) / PROMPT Creating Check Constraint on 'IMM_LOCATAIRES' ALTER TABLE IMM_LOCATAIRES ADD (CONSTRAINT AVCON_1260123002_STATU_000 CHECK (STATUT IN ('A', 'I'))) |
Celles-ci implémentent les contraintes portant sur les domaines. Dans le cas où l’on voudrait implémenter ces contraintes au moyen de la table CG_REF_CODES, on procèdera de la manière suivante :
Pour chaque colonne et domaine qui ont des valeurs autorisées (allowable values), on mettra la propriété –Dynamic List- sur Yes.
On voit que le STATUT de locataire est un domaine.
Ensuite, on doit y aller au nœud pour chercher le domaine STATUT_LOCATAIRE. En appuyant sur F4 pour changer Dynamic List à yes.
En cliquant sur le menu de création de la table CG_REF_CODES comme montré ci-après :
On obtient le script de création de la table CG_REF_CODES suivant :
| SPOOL CG_REF_CODES.lst PROMPT Creating REF_CODES Table CG_REF_CODES and Indexes CREATE TABLE CG_REF_CODES (RV_DOMAIN VARCHAR2(100) NOT NULL ,RV_LOW_VALUE VARCHAR2(240) NOT NULL ,RV_HIGH_VALUE VARCHAR2(240) ,RV_ABBREVIATION VARCHAR2(240) ,RV_MEANING VARCHAR2(240) ) / CREATE INDEX X_CG_REF_CODES_1 ON CG_REF_CODES (RV_DOMAIN ,RV_LOW_VALUE) / PROMPT Allowable Value Script DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'MODE_PAIEMENT' / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('MODE_PAIEMENT', 'C', '', '', 'Comptant') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('MODE_PAIEMENT', 'H', '', '', 'Chèque') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('MODE_PAIEMENT', 'R', '', '', 'Crédit') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('MODE_PAIEMENT', 'D', '', '', 'Dépot direct') / DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'LOYER' / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('LOYER', 'P', '', '', 'Payé') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('LOYER', 'N', '', '', 'Non payé') / DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'STATUT_LOCATAIRE' / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('STATUT_LOCATAIRE', 'A', '', '', 'Actif') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('STATUT_LOCATAIRE', 'I', '', '', 'Inactif') / DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'STATUT_APPT' / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('STATUT_APPT', 'V', '', '', 'Vaccant') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('STATUT_APPT', 'O', '', '', 'Occupé') / DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'TYPE_APPT' / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('TYPE_APPT', 'T', '', '', 'Tous inclut') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('TYPE_APPT', 'R', '', '', 'Rien inclut') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('TYPE_APPT', 'C', '', '', 'Chauffé') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('TYPE_APPT', 'N', '', '', 'Non chauffé') / DELETE FROM CG_REF_CODES WHERE RV_DOMAIN = 'ETAT_REPARATION' / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('ETAT_REPARATION', 'E', '', '', 'En attente') / INSERT INTO CG_REF_CODES (RV_DOMAIN, RV_LOW_VALUE, RV_HIGH_VALUE, RV_ABBREVIATION, RV_MEANING) VALUES ('ETAT_REPARATION', 'R', '', '', 'Réparé') / COMMIT / PROMPT PROMPT Finished. SPOOL OFF |
Étant donné que l’on a apporté des affinages au modèle logique, on doit aussi générer les
API de table afin de générer les triggers et package nécessaires pour la vérification des différentes contraintes.
On procède de la même manière que précédemment en sélectionnant le menu suivant :
On vérifie que pour chaque table sélectionnée, on obtient plusieurs fichiers avec l’extension .pkb (package body), pks (package spécifications) et .trg (triggers).
Exécution des scripts sous SQL PLUS :
On va lancer trois scripts (fichiers .sql) : DDL_RES_SOL.SQL, CG_REF_CODES.SQL, api_res_sol.SQL
Description des tables de notre schéma : 8 tables et 2 tables de journalisation.
Dans la prochaine étape, on va procéder la création des modules de notre système pour ORACLE FORMS à partir de Design Editor.




























