IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

affichage de la liste de mes répertoires


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de gege87270
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mai 2007
    Messages : 224
    Par défaut affichage de la liste de mes répertoires
    Je suis nouveau en PL/SQL et je dois me former sur ce langage. J'ai un problème de compréhension d'un programme.

    voici le code qui me pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
     
    ---------------------------------------------------------------
    -- Recupere et affiche le contenu du repertoire en parametre --
    ---------------------------------------------------------------
    PROCEDURE get_list_rep (PC$Rep IN VARCHAR2) IS
      LN$Lettre pls_integer := 1 ;
      LC$Rep Varchar2(256) := PC$Rep ;
      LC$Filtre  Varchar2(30) ;
      fic_out TEXT_IO.FILE_TYPE ;
      fic_name Varchar2(256)  ;
      fichier  Varchar2(256)  ;  
      LI$NumDrive pls_integer := 1 ;
      LC$Cmd Varchar2(256) ;
      LC$Ligne Varchar2(256) ;
      LI$Num pls_integer := 1 ;
      LI$Pos pls_integer ;
    BEGIN
     
        If Substr( LC$Rep, Length(LC$Rep) -2, 3 ) = '\..' And Length( LC$Rep ) > 5 Then
        	 -- Retour arriere dans l'arborescence --
        	 :CTRL.Chemin := Substr( LC$Rep, 1, Instr( LC$Rep, '\', -1, 2 ) - 1);
        	 LC$Rep := :CTRL.Chemin ;
        End if ;
        clear_list('CTRL.REPS');
     
        -- Nom du fichier de sortie --
        fichier := Ltrim( To_char( SYSDATE, 'YYYYDDMMHH24MISS' ) ) || '_lst_fic.txt' ;    
        fic_name := :CTRL.MAIN_DRIVE || '\' || fichier ;
     
     
        -- Liste des répertoires --
        If :CTRL.FILTRE <> '*.*' Then
        	LC$Cmd := 'DIR /AD "' || LC$Rep || '\" > ' || fic_name ;        
        	Host( LC$Cmd, NO_SCREEN ) ;
        End if ;
     
        -- Filtre multi-choix ? --
        If Instr( :CTRL.FILTRE, ',' ) > 0 Then
        	 LI$Pos := 1 ;
        	 Loop
        	   LC$Filtre := Split( :CTRL.FILTRE, LI$Pos ) ;
        	   Exit When LC$Filtre IS NULL ;
             LC$Cmd := 'DIR /OGN "' || LC$Rep || '\' || LC$Filtre || '" >> ' || fic_name ;        
             Host( LC$Cmd, NO_SCREEN ) ;
             LI$Pos := LI$Pos + 1 ;
        	 End loop ;
        Else
           LC$Cmd := 'DIR /OGN "' || LC$Rep || '\' || :CTRL.FILTRE || '" >> ' || fic_name ;        
           Host( LC$Cmd, NO_SCREEN ) ;	
        End if ;
     
        -- Lecture de la liste des fichiers --
        fic_out := TEXT_IO.FOPEN( fic_name, 'R' ) ;
        If TEXT_IO.IS_OPEN( fic_out ) Then
        	Begin
        	Loop
        	   TEXT_IO.Get_Line( fic_out, LC$Ligne ) ;
        	   If LC$Ligne is not null Then
        	      If Substr( LC$Ligne, 25, 5 ) = '<DIR>' Then
        	      	-- nom de repertoire --
        	      	If Substr( LC$Ligne, 40, 2 ) <> '.' Then
        	          LI$Num := LI$Num + 1 ;
        	          Add_List_Element( 'CTRL.REPS', LI$Num, '\' || Substr( LC$Ligne, 40, 256 ), '\' || Substr( LC$Ligne, 40, 256 ) ) ;
        	        End if ;
        	      Elsif Substr( LC$Ligne, 1, 1 ) <> ' ' Then
        	      	-- nom de fichier --
        	      	If Instr( LC$Ligne, fichier ) = 0 Then
        	      	   LI$Num := LI$Num + 1 ;
        	      	   Add_List_Element( 'CTRL.REPS', LI$Num, Substr( LC$Ligne, 40, 256 ), Substr( LC$Ligne, 40, 256 ) ) ;
        	      	End if ;
        	      End if ;
        	   End if ;
        	End loop ;
        	Exception
        		when no_data_found Then
        		  TEXT_IO.FCLOSE( fic_out ) ;
        		  HOST( 'DEL ' || fic_name, NO_SCREEN ) ;
        	End ;
        Else
        	message('Impossible de lire : ' || LC$Rep );
        End if ;
     
    END;
    Tout fonctionne bien, sauf qu'à l'affichage de la liste des répertoires, le début des noms des répertoires est tronqué. Quelqu'un peut -il m'aider.

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2004
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 66
    Par défaut
    Bonsoir,

    il est tronqué de combien de caractères ? 2 ?

  3. #3
    Membre confirmé Avatar de gege87270
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Mai 2007
    Messages : 224
    Par défaut
    il est tronqué de 3 caractères

  4. #4
    Membre éclairé Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    J'ai voulu créé ta procédure pour la tester chez moi et j'ai des message d'ano

    z7057hp/PAVSD10/PAVSD10)>show errors
    Errors for PROCEDURE GET_LIST_REP:

    LINE/COL
    -------------------------------------------------------------------------------
    ERROR
    -------------------------------------------------------------------------------
    16/7
    PLS-00049: bad bind variable 'CTRL.CHEMIN'
    17/17
    PLS-00049: bad bind variable 'CTRL.CHEMIN'
    22/17
    PLS-00049: bad bind variable 'CTRL.MAIN_DRIVE'
    24/8
    PLS-00049: bad bind variable 'CTRL.FILTRE'
    29/15
    PLS-00049: bad bind variable 'CTRL.FILTRE'
    32/29
    PLS-00049: bad bind variable 'CTRL.FILTRE'
    39/51
    PLS-00049: bad bind variable 'CTRL.FILTRE'
    LBO72.

  5. #5
    Membre averti
    Inscrit en
    Août 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 20
    Par défaut
    Salut,

    Vu les variables type :CTRL.MAIN_DRIVE qui sont dans ton code PL/SQL je suppose que tu travaille dans un outils type Forms builder.

    As-tu essayé d'afficher des messages de traces aux endroits stratégiques de ta procédure afin de voir l'évolution des tes variables contenant a liste de tes répertoires?

  6. #6
    Membre éclairé Avatar de LBO72
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 406
    Par défaut
    Phil 67
    Salut,

    Vu les variables type :CTRL.MAIN_DRIVE qui sont dans ton code PL/SQL je suppose que tu travaille dans un outils type Forms builder
    J'ai eu ces erreurs en faisant une compile de la procédure sous SqlPlusW.

    LBO72.

Discussions similaires

  1. comment obtenir la liste de mes vues
    Par comme de bien entendu dans le forum Oracle
    Réponses: 12
    Dernier message: 26/10/2005, 09h35
  2. [STRUTS/TAGS/COLLECTIONS] affichage d une liste
    Par hinanui dans le forum Struts 1
    Réponses: 22
    Dernier message: 04/07/2005, 14h03
  3. [BDE] Affichage de la liste des tables et champs
    Par Isa31 dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/05/2005, 11h51
  4. Réponses: 7
    Dernier message: 27/03/2005, 10h34
  5. Pb d'affichage apres une liste déroulante
    Par loic.440 dans le forum ASP
    Réponses: 13
    Dernier message: 19/01/2005, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo