Testata/Dettaglio
Jump to navigation
Jump to search
In una videata di testa/Dettaglio non è possibile utilizzare un campo in testata come filtro dei record
Per la fase di importazione/esportazione vedere la voce apposita in import/export
Esempio di codice (utilizzato per esempio per le certificazioni prodotto)
# CAMPI DA DICHIARARE NELLA VIDEATA DI DETTAGLIO
# UPDFLG C 4 (nascosto)
# CREFLG C 4 (nascosto)
# <chiave di riga> L 8 (nascosto; vengono attribuiti valori multipli di 1000;
# deve essere presente anche nella TABELLA di dettaglio)
# per esempio
# YIDRIGA L 8
#
# In videata di dettaglio non vanno inseriti i campi chiave di testata perchè altrimenti non vengono valorizzati nel record
#
# CAMPO NBLIG:
# - da inserire nella tabella di dettaglio (tipo ABS, Inserito)
# - da mettere nella colonna Parametro nel blocco Riquadro della videata usato per i dettagli
# - impostare come azioni del campo NBLIG:
# C DIVLINCONT (controllo inserimento riga)
# post_riga DIVLINNUM (attribuzione numero riga)
# queste azioni hanno un parametro LIG (in comune) che deve essere valorizzato con <chiave di riga> (YIDRIGA)
#
# Definire nell'oggetto legato alla tabella di testata, nel folder ambiente, la tabella di dettaglio
#
# NB: nelle codice delle azioni campo usare (nolign-1) come indice (per es. [M:YCC1]YSEQMAR(nolign-1)=VALEUR )
# se si fa transclass invece il nolign è valido senza fare -1 (vedi nolign)
####################################################################
#
####################################################################
$ACTION
Case ACTION
When "OUVRE" : Gosub OUVRE
When "FILTRE" : Gosub FILTRE
When "SETBOUT" : Gosub SETBOUT
When "CREATION" : Gosub CREATION
When "APRES_CRE" : Gosub APRES_CRE
When "LIENS" : Gosub LIENS
When "MODIF" : Gosub MODIF
When "APRES_MOD" : Gosub APRES_MOD
When "ANNULE" : Gosub ANNULE
When "DEFLIG" : Gosub DEFLIG
When "INICRE_LIG" : Gosub INI_LIG
When "INIMOD_LIG" : Gosub INI_LIG
When Default
Endcase
Return
####################################################################
$OUVRE
Gosub DECLARE From TABLEAUX
Return
####################################################################
$FILTRE
Default File [YPH] #Abbreviazione tabella di Testata
Return
####################################################################
$SETBOUT
If GREP = ""
CHAINE+="A"
Else
Call VIREBOUT(CHAINE,"A") From GOBJET
Endif
Return
####################################################################
$CREATION
Gosub CREATION From TABLEAUX
If GOK < 1 Return Endif
Return
####################################################################
$APRES_CRE
# -- Ricarico degli indicatori UPDFLG e CREFLG #
Gosub LIENS From TABLEAUX
Return
####################################################################
$LIENS
# -- Carico delle righe nella tabella
Gosub LIENS From TABLEAUX
#in questo punto tutti gli eventi LIENS_LIG sono stati elaborati
Return
####################################################################
$LIENS_LIG
#evento al caricamento di ciascuna riga
# eventuali chiamate su campi
#Call AM_YSEQMAR([M:YCC1]YSEQMAR(nolign-1))
Return
####################################################################
$MODIF
Gosub MODIF From TABLEAUX
If GOK < 1 Return Endif
Return
####################################################################
$APRES_MOD
# -- Ricarico degli indicatori UPDFLG e CREFLG #
Gosub LIENS From TABLEAUX
Return
###############################################################
$ANNULE
Gosub ANNULE From TABLEAUX : # Cancellazione delle righe
If GOK < 1 Return Endif
Return
###############################################################
$DEFLIG
#-----------------------------------#
# Definizione del file di dettaglio #
#-----------------------------------#
# Criterio di lettura (CRIT) #
# Nome del file (FICLIG) #
# Abbreviazione del file (ABLIG) #
# Campo numero riga (ZONLIG) #
#-----------------------------------#
Default Mask [YCC1] # Abbrevv. videata di dettaglio
Default File [YCD] # Abbrevv. tabella di dettaglio
# criterio per legare la tabella di dettaglio alla tabella di testata (nome campo tabella dettaglio = [M]nome campo testata
# se il campo è numerico va senza singoli apici (usando num$())
# per date? ... "' & YDATAI = ["+num$([M:YPR0]YDATAI)+"] & YDATAF = ["+[M:YPR0]YDATAI+"]"
CRIT = "YFAMCER = '"+[M:YCC0]YFAMCER+"' & YPASSOVIE = '"+[M:YCC0]YPASSOVIE+"' & YNROMOL = "+num$([M:YCC0]YNROMOL)
FICLIG = "YCERTPRODD" # nome tabella di dettaglio
ABLIG = "YCD" # abbreviazione nome tabella di dettaglio
ZONLIG = "YIDRIGA" # nome campo chiave di riga che gestisce la linea nel dettaglio
Return
####################################################################
$INI_LIG
# -- Valorizzazione testata
#commento: vengono copiati i valori di testata sui campi di dettaglio
# YCD file dettaglio, YCC file testata
[F:YCD]YFAMCER = [F:YCC]YFAMCER
[F:YCD]YPASSOVIE = [F:YCC]YPASSOVIE
[F:YCD]YNROMOL = [F:YCC]YNROMOL
Return
######################################################################################
## Etichetta aggiunta dal supervisore (videata YPR1) 05/11/2013 15:46:55 (ADMIN)
######################################################################################
# L'articolo deve essere inserito nel listino di riferimento
Subprog C_ITMREF(VALEUR)
Variable Char VALEUR()
Local Integer YERR
Call YCHK_ART(VALEUR,[M:YPR0]X_NAT,[M:YPR0]YDATAI,[M:YPR0]YDATAF,YERR)
Case YERR
When 0
mkstat = 2
GMESSAGE = "Articolo non trovato in listino per i dati impostati in testata: articolo non inseribile"
When 2
mkstat = 2
GMESSAGE = "Più righe listino trovate per i dati impostati in testata: verificare listini"
Endcase
End
######################################################################################
Subprog YCHK_ART(YART, YLIS, YDATA1, YDATA2, YERR)
Value Char YART, YLIS
Value Date YDATA1, YDATA2
Variable Integer YERR
Local File SPRICLIST [F:YSPL]
Filter [F:YSPL] Where PLICRI1 = YART and PLICRI2 = YLIS and PLISTRDAT <= YDATA1 and PLIENDDAT >= YDATA2
YERR = rowcount([F:YSPL]) # deve esserci solo una riga per questo filtro, altrimenti è una anomalia
Filter [F:YSPL]
End
######################################################################################