Précédent   Forum des professionnels en informatique > Bases de données > Firebird > SQL
SQL Forum d'entraide sur le SQL pour Firebird
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/08/2006, 16h29   #1
Membre émérite
 
Avatar de Andry
 
Inscription : juillet 2002
Messages : 1 109
Détails du profil
Informations personnelles :
Localisation : Madagascar

Informations forums :
Inscription : juillet 2002
Messages : 1 109
Points : 949
Points : 949
Envoyer un message via MSN à Andry
Par défaut Lister les numeros manquant à une liste

Salut à tous,

Alors, j'au une table qui contient les infos de dossiers clients avec comme Clé primaire un champs auto-incrementé.
Un dossier peut être effacé, du coup, j'ai des trout dans mes numéros.
Alors, j'aimerais créer un procédure qui me liste ces trous dans le but de les proposer à l'utilisateur lors d'une saisie de dossier.

Comment faire
Voici la table
Code :
1
2
3
4
5
6
7
8
9
 
CREATE TABLE TDOSSIER (
    DS_NO          INTEGER NOT NULL,
    DS_NUMEXTERNE  VARCHAR(15),
    DS_DTCREATION  DATE DEFAULT 'Today' NOT NULL,
    DS_HRCREATION  TIME DEFAULT 'Now' NOT NULL,
    TRT_DTALERTE    DATE,
    TRT_FLAG          SMALLINT DEFAULT 0 NOT NULL
);
DS_NO etant la clé primaire est sa valeur est alimenté par un generateur dans le trigger befor Insert.

Merci
__________________
On progresse .....
Andry est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/08/2006, 17h48   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
va voir ce document :

http://www.ibobjects.com/docs/ti_AuditableSeries.ZIP
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/08/2006, 18h50   #3
Rédacteur
 
Inscription : janvier 2004
Messages : 2 123
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : janvier 2004
Messages : 2 123
Points : 1 977
Points : 1 977
Salut Andry,

Je pense que ce tutoriel peut peut etre t'intéresser Les générateurs purs Interbase

++
__________________
Ancien pseudo : yobenzen

Recherche un emploi de Chef de Projet ou Développeur en Normandie
Delphi/Oracle/Interbase
Migration vers symfony

CV :
- LinkedIn
- Viadeo
Benjamin GAGNEUX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2006, 08h14   #4
Membre émérite
 
Avatar de Andry
 
Inscription : juillet 2002
Messages : 1 109
Détails du profil
Informations personnelles :
Localisation : Madagascar

Informations forums :
Inscription : juillet 2002
Messages : 1 109
Points : 949
Points : 949
Envoyer un message via MSN à Andry
Salut à tous,

Alors, cette solution je peux dire est très bien mais je cherche encore plus simple vu que l'appli tourne en mono-poste.
Alors j'ai bidouillé une procedure stocké qui me permet de savoir quelles sont les trous dans le numéro DS_NO.
Supponson que notre generateur est GEN_DOSSIER_NO.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
CREATE PROCEDURE LIST_TROU 
RETURNS (
    TROU INTEGER)
AS
DECLARE VARIABLE I INTEGER;
BEGIN
  I = 1;
  WHILE (I <= GEN_ID(GEN_DOSSIER_NO,0)) DO
  BEGIN
   IF (NOT EXISTS(SELECT DS_NO FROM TDOSSIER WHERE (DS_NO =  :I))) THEN
   BEGIN
      TROU = I;
      suspend;
   END
   I = I +1;
  END
END
Coté optimisation, j'ai pas trop cherché, mais bon.

Voilà,
__________________
On progresse .....
Andry est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h09.


 
 
 
 
Partenaires

Hébergement Web