[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2002
    Beiträge
    1.122
    Hallo Robi,

    erstelle dir doch mit folgenden kleinen Programm eine View.
    PHP-Code:
    h dftactgrp(*no)                                        
                                                            
    d MakeView        pr                  ExtPGM('MAKEVIEW')
    d  View_Lib                     10                      
    d  View_Name                    10                      
    d  File_Lib                     10                      
    d  File_Name                    20                      
    d MakeView        pi                                    
    d  View_Lib                     10                      
    d  View_Name                    10                      
    d  File_Lib                     10                      
    d  File_Name                    20                      
    d                                                       
    d True            c                   
    *On               
    d False           c                   
    *Off              
    d                                                       
    d String_SQL      s          32766    Inz
    ( *Blanks )    
    d String_SQL1     s          32766    Inz( *Blanks )    
    d                                                       
    d DS_Satz         ds                  Qualified                            
    d FeldName                      10                                         
    d Type                           8                                         
    d Laenge                         5s 0                                      
    d Scale                          5s 0                                      
                                                                               
     
    /free                                                                     
       
    *InLr true;                                                           
       
    Exec SQL set option commit=*none;                                       
                                                                               
       
    String_SQL  'Create view ' + %TrimView_Lib ) + '/' +                
                     %
    TrimView_Name ) +  ' as (Select ';                     
                                                                               
       
    String_SQL1 'Select sys_cname, Cast(ColType as Char(8)), ' +          
                     
    'Cast(length as dec(5, 0)), '                  +          
          
    'case when scale is NULL then 0 else Cast(scale as dec(5, 0))  end' +
          
    ' from syscolumns where sys_tname=''' + %TrimFile_Name ) +         
          
    ''' and sys_dname=''' + %TrimFile_Lib ) + '''';                    
                                                                               
      
    Exec SQL Declare CursorXX Cursor For String_SQL1;   
      
    Exec SQL Prepare String_SQL1 From :String_SQL1;     
      
    Exec SQL Open CursorXX;                             
                                                          
      
    DoW sqlcod >= and sqlcod <= 100;                  
                                                          
        
    Exec SQL  Fetch Next From CursorXX into :DS_Satz
                                                          
        If 
    sqlcod <> 0;                                   
          
    Leave;                                          
        EndIf;                                            
           
    ExSr SR_Work;                                  
      
    EndDo;                                              
                                                          
      
    Exec SQL  Close   CursorXX;                         
                                                          
      
    String_SQL = %SubSt( %TrimString_SQL ) : :      
                          %
    Len( %TrimString_SQL ) ) -1);
                                                          
      
    String_SQL = %TrimSTring_SQL ) +                                 
                   
    ' from ' + %TrimFile_Lib ) + '/' +                  
                   %
    TrimFile_Name) + ')';                              
                                                                         
      
    Exec SQL Execute Immediate :String_SQL;                            
                                                                         
      
    BegSr SR_Work;                                                     
                                                                         
      
    Select;                                                            
      
    When ds_satz.type 'DECIMAL' or                                   
           
    ds_satz.type 'NUMERIC';                                     
           
    String_SQL = %TrimString_SQL ) +                            
                        
    ' Cast( ' + %Trim(ds_satz.feldname) +            
                        
    ' as Dec(' +%Trim(%Char(ds_satz.Laenge)) + ', ' +
                        %
    Trim(%Char(ds_satz.Scale)) + ')) as ' +         
                        %
    Trim(ds_satz.feldname) + ', ';                  
      
    When ds_satz.type 'CHAR';                                        
           
    String_SQL = %TrimString_SQL ) +                            
                        
    ' Cast( ' + %Trim(ds_satz.feldname) +            
                        
    ' as Char(' +%Trim(%Char(ds_satz.Laenge)) + ')) ' 
                        
    ' as ' + %Trim(ds_satz.feldname) + ', ';            
      
    EndSl;                                                                
      
    EndSr;                                                                
                                                                            
     /
    end-free 
    Eventuell musst du dir in der SR_Work noch weitere Feldtype bearbeiten.
    Auch sollte keine View mit dem Namen in der Lib schon existieren.

    Aufruf mit
    Call Makeview (ViewLib ViewName Mylib MyFile)

    Gruß
    Ronald

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    2.049
    Sauber ...
    Wie cool ist das den !!!
    Copiert, gewandelt, aufgerufen, angesehn begeistert!!!
    Echt hilfreich, DANKE
    (wir haben zwar auch Pgmme , die Views nach best. Mustern / Vorgaben erstellen, aber auf die Idee das so zu lösen muß man erstmal kommen!)

    Vielen vielen Dank
    Sonnigen Gruß vom Steinhuder Meer
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    May 2002
    Beiträge
    1.122
    Das ist das Ergebnis, wenn man schon im Urlaubmodus ist, und Nachts nicht schlafen kann..


    Schönes Wochenende
    Ronald
    (Der dann ab Morgen im Elsass ist)

Similar Threads

  1. Andruck der Überschrift
    By Stefan_R in forum NEWSboard Drucker
    Antworten: 2
    Letzter Beitrag: 11-06-01, 10:55

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •