× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Quello che segue e' il metodo comune per gestire i parametr
sulle query standard, quello in allegato e' tramite la
definizione via QMQRY usando pero' dei source.

Spero che ti possa aiutare.
Marco Facchinetti

--- Peter Vidal <Peter_Vidal@xxxxxxxx> wrote:
> First, you need to define your Query/400.  On the SELECT
> RECORDS Screen, 
> you need to use a colon (:) to qualify the fields as
> follows: 
>  
>                                 Select Records  
>   Type comparisons, press Enter.  Specify OR to start
> each new group.   
>   Tests:  EQ, NE, LE, GE, LT, GT, RANGE, LIST, LIKE, IS,
> ISNOT...  
>   
> AND/OR  Field             Test   Value (Field, Number,
> 'Characters', or 
> ...) 
>         DATE1             EQ     :USERDATE1 
>  AND    DATE2             EQ     :USERDATE2 
>  
> 
> A second screen will pop-up:  (You can specify any file
> in use by the 
> query)
> 
>                      Specify Dependent Value Qualifiers 
>  
> Type choices, press Enter. 
>  
>   Qualifier type . . . .   2              1=Query, 2=File
> 
>  
>   Query or file  . . . .   UNCFORDS       Name, F4 for
> list of files 
>     Library  . . . . . .     PRODLIB      Name, *LIBL, F4
> for list 
>  
>   For choice 2=File: 
>     File member  . . . .   *FIRST         Name, *FIRST,
> F4 for list 
>  
> Second, on a CL, use STRQMQRY command to run the query as
> follows:
> 
> STRQMQRY 
> QMQRY(Library_Name/QRYDFN_Name) ALWQRYDFN(*YES) 
> SETVAR((DATE1 &SCRDATE1) (DATE2 &SCRDATE2)) 
> 
>         NOTE: Work fields must be type *CHAR, no matter
> that the field is a number 
> on the query.
> 
> 
> Hope this helps,
> 
> Peter Vidal
> PALL Aeropower Corporation
> SR Programmer Analyst
> 5775 Rio Vista Drive
> Clearwater, FL 33760-3137
> (727)539-8448
> www.pall.com
> 
> "My religion consists of a humble admiration of the
> illimitable superior 
> spirit who reveals himself in the slight details we are
> able to perceive 
> with our frail and feeble mind."
> Albert Einstein
> > --
> This is the Midrange Systems Technical Discussion
> (MIDRANGE-L) mailing list
> To post a message email: MIDRANGE-L@xxxxxxxxxxxx
> To subscribe, unsubscribe, or change list options,
> visit:
> http://lists.midrange.com/mailman/listinfo/midrange-l
> or email: MIDRANGE-L-request@xxxxxxxxxxxx
> Before posting, please take a moment to review the
> archives
> at http://archive.midrange.com/midrange-l.
> 
> 



                
__________________________________
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail
Questo è il source di una definizione un pochino più complessa delle altre:

 Colonne . . . :    1  79                                       Esame           
                                       METAILEO/SQL
 SEU==>                                                                         
                                          CABCOMTIF
 FMT **  ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 
...+...                                             
        ****************** Inizio dati 
******************************************************************************************
  
0001.00 select tacodice  , tadscabina, tpdescri40, ticodice, tidstipute,        
            020711                                 
0002.00         count(ascdutente)                                               
            020711                                 
0003.00 from  tabcab0f, dbsto01l, dbana01l, tabpae0f, tabcom0f, tabtip0f, 
tabtif0f          020711                                 
0004.00 where abstatorec = ' ' and                                              
            011206                                 
0005.00       (abdtfinero is null or abdtfinero > &DATAA )  and                 
            011206                                 
0006.00       (abdtiniero is not null and abdtiniero <= &DATAA )                
            011213                                 
0007.00       and tlcdtiputf = ticodice                                         
            020711                                 
0008.00       and ascdtiputi = tlcodice                                         
            020711                                 
0009.00       and tfcdcomune = tpcodice                                         
            020711                                 
0010.00       and abcdpaese  = tfcodice                                         
            020711                                 
0011.00       and ascdutente = abcdutente                                       
            020711                                 
0012.00       and asseqstori = abprcondiz                                       
            020711                                 
0013.00       and tacodice   = ascdcabina                                       
            020711                                 
0014.00 group by tadscabina, tacodice, tpdescri40, ticodice, tidstipute         
            020711                                 
0015.00 order by tadscabina, tacodice, tpdescri40, ticodice, tidstipute         
            020711                                 
        ******************** Fine dati 
******************************************************************************************
  

Tutta la parte dove vedi (X)SQLFORM è relativo alla formattazione in stampa!!

e il CL che lo esegue:

 XSQLPARM:   PGM        PARM(&DATA &MEMBRO &STAMPA &LARG) /* Crea ed + 
                          esegue un statement SQL memorizzato nel +    
                          membro richiesto del file SQL della +        
                          libreria METAILEO, passa un parametro. */    
             DCL        VAR(&D1) TYPE(*CHAR) LEN(8)                    
             DCL        VAR(&D2) TYPE(*CHAR) LEN(10)                   
             DCL        VAR(&DATA) TYPE(*CHAR) LEN(10)                 
             DCL        VAR(&MEMBRO) TYPE(*CHAR) LEN(10)               
             DCL        VAR(&STAMPA) TYPE(*CHAR) LEN(1)                
             DCL        VAR(&LARG  ) TYPE(*CHAR) LEN(1)                
             DCL        VAR(&STRINGA) TYPE(*CHAR) LEN(100)             
             DCL        VAR(&FORM) TYPE(*CHAR) LEN(10) VALUE('*SYSDFT')
             CVTDAT     DATE(&DATA) TOVAR(&D1) FROMFMT(*EUR)           
             CHGVAR VAR(&D2)    VALUE('''' *TCAT &D1 *TCAT '''')       
             CHGVAR     VAR(&STRINGA) VALUE(&DATA)                     
 /* crea il query da eseguire */                                       
             DLTQMQRY   QMQRY(METAILEO/XSQL)                           
             MONMSG     MSGID(CPF0000)                                 
             DLTQMFORM  QMFORM(METAILEO/XSQLFORM)                      
             MONMSG     MSGID(CPF0000)                               
             CRTQMQRY   QMQRY(METAILEO/XSQL) SRCFILE(METAILEO/SQL) + 
                          SRCMBR(&MEMBRO) AUT(*ALL)                  
 /* se presente abbina form */                                       
             RTVMBRD    FILE(METAILEO/SQLFORM) MBR(&MEMBRO)          
             MONMSG     MSGID(CPF9815) EXEC(GOTO CMDLBL(NOFORM))     
             DLTQMFORM  QMFORM(METAILEO/XSQLFORM)                    
             MONMSG     MSGID(CPF0000)                               
 /* Si lavora sempre su un membro di lavoro */                       
             CPYF       FROMFILE(SQLFORM) TOFILE(SQLFORM) +          
                          FROMMBR(&MEMBRO) TOMBR(XSQLFORM) +         
                          MBROPT(*REPLACE)                           
 /* imposta la data nel titolo della stampa */                       
             OVRDBF     FILE(SQLFORM) MBR(XSQLFORM)                  
             CALL       PGM(CL01) PARM(&STRINGA)                     
             DLTOVR     FILE(SQLFORM)                                
             MONMSG     MSGID(CPF0000)                               
             CRTQMFORM  QMFORM(METAILEO/XSQLFORM) +                  
                          SRCFILE(METAILEO/SQLFORM) +                
                          SRCMBR(XSQLFORM) AUT(*ALL)                 
             CHGVAR     VAR(&FORM) VALUE('XSQLFORM')                    
 NOFORM:     IF         COND(&STAMPA *NE 'S') THEN(STRQMQRY +           
                          QMQRY(METAILEO/XSQL) QMFORM(&FORM) +          
                          SETVAR((DATAA &D2)))                          
             ELSE       CMD(DO)                                         
             IF         COND(&LARG *EQ ' ') THEN(OVRPRTF +              
                          FILE(QPQXPRTF) PAGESIZE(*N 132) +             
                          OVRSCOPE(*JOB))                               
             ELSE       CMD(OVRPRTF FILE(QPQXPRTF) PAGESIZE(*N 198) +   
                          CPI(15) OVRSCOPE(*JOB))                       
             STRQMQRY   QMQRY(METAILEO/XSQL) OUTPUT(*PRINT) +           
                          QMFORM(&FORM) SETVAR((DATAA &D2))             
             DLTOVR     FILE(QPQXPRTF)                                  
             MONMSG     MSGID(CPF0000)                                  
             ENDDO                                                      
             DLTQMQRY   QMQRY(METAILEO/XSQL)                            
             MONMSG     MSGID(CPF0000)                                  
             DLTQMFORM  QMFORM(METAILEO/XSQLFORM)                       
             MONMSG     MSGID(CPF0000)                                  
             DLTOVR     FILE(QPQXPRTF) LVL(*JOB)                        
             MONMSG     MSGID(CPF0000)
             ENDPGM                   


La parte che segue è totalmente facoltativa ed è relativa ai FORM 
(formattazione per stampa):


H QM4 05 F 01 E V W E R 01 03 02/02/26 18:29                                    
    
*                                                                               
    
* V 1001 = Descrizione query.                                                   
    
V 1001 050 Utenze attive alla data per cabina/comune/tip.ut                     
    
*                                                                               
    
* T 1110 = Tabella colonne.                                                     
    
*   006  = Numero di record R presenti                                          
    
*   005  = Numero di coppie di definizioni:                                     
    
*          - La prima indica il tipo di definizione                             
    
*          - La seconda la lunghezza nel record R                               
    
*   1112 = Tipo dati: CHAR NUMERIC                                              
    
*   1113 = Intestazioni colonne                                                 
    
*   1114 = Utilizzo: BREAKn SUM MIN MAX AVG....                                 
    
*   1115 = Spazio tra colonne (default 2)                                       
    
*   1116 = Larghezza colonna                                                    
    
*   1117 = Editazione                                                           
    
*   1118 = Sequenza                                                             
    
T 1110 006 005 1114 010 1116 006 1118 003 1115 003 1113 060                     
    
* Utilizzo.. Lenght Seq Spc Intestazione 
colonne....................................
R BREAK1     6      1       Codice_cabina                             
R BREAK1     20     2   1   Descrizione Cabina                        
R BREAK2     20     3   1   Descrizione Comune                        
R            2      4   1   Cd_Tp_Fi                                  
R            20     5   1   Tipologia Fiscale                         
R SUM        18     6   1   Numero_Utenti_Attivi                      
*                                                                     
* T 1210 = Tabella intestazione report.                               
*   003  = Numero di record R presenti                                
*   003  = Numero di coppie di definizioni:                           
*          - La prima indica il tipo di definizione                   
*          - La seconda la lunghezza nel record R                     
*   1212 = Numero riga intestazione                                   
*   1213 = Allineamento (LEFT CENTER RIGHT)                           
*   1214 = Testo.                                                     
T 1210 003 003 1212 004 1213 006 1214 055                             
* Prog Allin. Testo intestazione (& è dove verrà messa la data)       
R 1    CENTER ******************************************************* 
R 2    CENTER * Utenti attivi x Cabina/Comune/Utenza al &           * 
R 3    CENTER ******************************************************* 
* Campi V sintassi: V 1201 001 0 (1201=Funzione 001=Len valore 0=Valore)
* Numero di linee blank prima dell'intestazione                         
V 1201 001 0                                                            
* Numero di linee blank dopo l'intestazione                             
V 1202 001 2                                                            
* Numero di linee blank prima del testo fondo pagina                    
V 1301 001 2                                                            
* Numero di linee blank dopo il testo fondo pagina                      
V 1302 001 0                                                            
* Stampare testo fine stampa su nuova pagina.                           
V 1401 002 NO                                                           
* Mettere testo fine stampa a linea ??                                  
V 1402 004 2                                                            
* Linee da saltare prima dell stampa del testo finale.                  
V 1403 006 0                                                            
*                                                                       
* T 1410 = Tabella testo finale stampa                                  
*   001  = Numero di record R presenti                                  
*   003  = Numero di coppie di definizioni:                             
*          - La prima indica il tipo di definizione                     
*          - La seconda la lunghezza nel record R   
*   1412 = Numero riga testo fine stampa            
*   1413 = Allineamento (LEFT CENTER RIGHT)         
*   1414 = Testo.                                   
T 1410 001 003 1412 004 1413 006 1414 055           
R 1    RIGHT  Totale finale                         
*************************************************   
* OPTIONS *                                         
*************************************************   
* 1501 Detail line spacing 1                        
* 1502 Outlining for break columns YES              
* 1503 Default break text YES                       
* 1505 Column wrapped lines kept on page YES        
* 1507 Column heading separators YES                
* 1508 Break summary separators YES                 
* 1510 Final summary separators YES                 
V 1501 001 1                                        
V 1502 003 YES                                      
V 1503 003 YES                                      
V 1505 003 YES                                      
V 1507 003 YES                                          
V 1508 003 YES                                          
V 1510 003 YES                                          
*************************************************       
* BREAK 1                                               
*************************************************       
* Break level indicator -                               
V 3080 001 1                                            
* New page for break heading NO                         
V 3101 002 NO                                           
* Repeat column headings NO                             
V 3102 002 NO                                           
* Blank lines before heading 0                          
V 3103 001 0                                            
* Blank lines after heading 0                           
V 3104 001 0                                            
* T 3110 = Break heading table 0-5                      
*   001  = Numero di record R presenti                  
*   003  = Numero di coppie di definizioni:             
*          - La prima indica il tipo di definizione     
*          - La seconda la lunghezza nel record R          
*   3112 = Numero riga testo break                         
*   3113 = Allineamento (LEFT CENTER RIGHT)                
*   3114 = Testo.                                          
***** T 3110 001 003 3112 001 3113 007 3114 050            
***** R 1 RIGHT   Totale cabina                            
* New page for break footing NO                            
V 3201 002 NO                                              
* Put break summary at line 1                              
V 3202 004 1                                               
* Blank lines before footing 0                             
V 3203 006 0                                               
* Blank lines after footing 1                              
V 3204 001 1                                               
*                                                          
* T 3210 = Break footing table 0-5                         
*   001  = Numero di record R presenti                     
*   003  = Numero di coppie di definizioni:                
*          - La prima indica il tipo di definizione        
*          - La seconda la lunghezza nel record R          
*   3212 = Numero riga testo break                       
*   3213 = Allineamento (LEFT CENTER RIGHT)              
*   3214 = Testo.                                        
T 3210 001 003 3212 001 3213 007 3214 050                
R 1 RIGHT   Totale cabina di &2                          
*************************************************        
* BREAK 2                                                
*************************************************        
* Break level indicator -                                
V 3080 001 2                                             
* New page for break heading NO                          
V 3101 002 NO                                            
* Repeat column headings NO                              
V 3102 002 NO                                            
* Blank lines before heading 0                           
V 3103 001 0                                             
* Blank lines after heading 0                            
V 3104 001 0                                             
* T 3110 = Break heading table 0-5                       
*   001  = Numero di record R presenti                   
*   003  = Numero di coppie di definizioni:                 
*          - La prima indica il tipo di definizione         
*          - La seconda la lunghezza nel record R           
*   3112 = Numero riga testo break                          
*   3113 = Allineamento (LEFT CENTER RIGHT)                 
*   3114 = Testo.                                           
**** T 3110 001 003 3112 001 3113 007 3114 050              
**** R 1 RIGHT   Totale comune                              
* New page for break footing NO                             
V 3201 002 NO                                               
* Put break summary at line 1                               
V 3202 004 1                                                
* Blank lines before footing 0                              
V 3203 006 0                                                
* Blank lines after footing 1                               
V 3204 001 1                                                
*                                                           
* T 3210 = Break footing table 0-5                          
*   001  = Numero di record R presenti                      
*   003  = Numero di coppie di definizioni:                 
*          - La prima indica il tipo di definizione
*          - La seconda la lunghezza nel record R  
*   3212 = Numero riga testo break                 
*   3213 = Allineamento (LEFT CENTER RIGHT)        
*   3214 = Testo.                                  
T 3210 001 003 3212 001 3213 007 3214 050          
R 1 RIGHT   Totale comune di &3                    
E                                                  

E questo è il programmino che va a mettere la data nel source del FORM per poter
far vedere all'utente i parametri selezionati.


 /COPY qcpylesrc,hheader1                                                  
h**************************************************************************
h* CL01 - Inserisce un campo in un form query nella sezione intestazione. *
h**************************************************************************
fsqlform   uf   e             disk    rename(sqlform:sql)                  
f**************************************************************************
d*****************************************************************         
d**** Dichiarazione campi                                      ***         
d*****************************************************************         
d dati            s            100                                         
d len             s              4  0                                      
d pos             s              4  0                                      
d si              c                   const(*on)                           
d no              c                   const(*off)                          
dutility         sds                                                       
d programma         *proc                                                  
d utente                254    263                                         
c*                                                                         
c* Scandisce membro sqlform e cerca la sezione interessata.                
c*                                                                              
           
c                   do        *hival                                            
           
c                   read      sql                                               
           
c                   if        %eof                                              
           
c                   leave                                                       
           
c                   endif                                                       
           
c                   if        %subst(srcdta:1:6)='T 1210'                       
           
c*                                                                              
           
c* Trovata, scandisce prossime righe, sono ammessi solo commenti o righe tipo 
"R"          
c* in caso contrario esce e non aggiorna.                                       
           
c*                                                                              
           
c                   do        *hival                                            
           
c                   read      sql                                               
           
c                   if        %eof                                              
           
c                   leave                                                       
           
c                   endif                                                       
           
c                   if        %subst(srcdta:1:1)='*'                       
Commenti, salta.
c                   iter                                                        
           
c                   endif                                                       
           
c                   if        %subst(srcdta:1:1)='R'                       
Record "R" va bene  
c                   eval      pos=%scan('&':srcdta)                        Vede 
se trova il    
c                   if        pos=0                                        
carattere speciale  
c                   iter                                                        
               
c                   endif                                                       
               
c                   if        pos+len-1>%len(srcdta)                       Se 
la stringa da in-
c                   eval      len=%len(srcdta)-pos+1                       
serire è troppo lun-
c                   endif                                                  ga 
la ridimensiona. 
c                   eval      %subst(srcdta:pos:len)=%trim(dati)           
Inserisce           
c                   update    sql                                          
Aggiorna.           
c                   leave                                                       
               
c                   else                                                   Non 
"R" esce e non  
c                   leave                                                  
aggiorna            
c                   endif                                                       
               
c                   enddo                                                       
               
c*                                                                              
               
c                   endif                                                       
               
c*                                                                              
               
c                   enddo                                                       
               
c                   eval      *inlr=*on                                         
               
 /EJECT                                                                         
              
c*********************************************************************************************
c* *INZSR       - Partenza standard                                             
             *
c*-------------------------------------------------------------------------------------------*
c* Ricezione parametri e verifica autorizzazione all'uso del programma          
             *
c*-------------------------------------------------------------------------------------------*
c* Parametri passati ricevuti:                                                  
             *
c* AUTORIZZAZI   O - Autorizzazioni concesse                                    
             *
c*-------------------------------------------------------------------------------------------*
c* Indicatori utilizzati:                                                       
             *
c* xx - On Off - Descrizione                                                    
             *
c*-------------------------------------------------------------------------------------------*
c* Routine richiamate:                                                          
             *
c* xxxxxxxxxxx - Descrizione                                                    
             *
c*********************************************************************************************
c     *inzsr        begsr                                                       
              
c*                                                                              
              
c     *entry        plist                                                       
              
c                   parm                    dati                                
              
c                   eval      len=%len(%trim(dati))                             
              
c*                       
c                   endsr

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.