PowerBuilder: Come posso fare in modo che un campo di testo in DataWindow non è vuota?

StackOverflow https://stackoverflow.com/questions/3109844

  •  29-09-2019
  •  | 
  •  

Domanda

Ho un oggetto utente che sta utilizzando servizi di PFC. Ora, durante l'aggiornamento, come posso fare in modo che un campo di testo in DataWindow non è vuota?

È stato utile?

Soluzione

PFC ha un servizio di Colonna DataWindow richiesto, che modifica il comportamento di attributo richiesto colonne di valutare a risparmiare tempo. Se il requisito comporta colonne editmask, questo non funzionerà, ma può essere un modo semplice per raggiungere questo obiettivo in altro modo.

Per usare questo, avevo messo il seguente codice nel costruttore ( di avvertimento: è stato un po 'che ho usato ):

of_SetReqColumn(TRUE)
inv_reqcolumn.of_RegisterSkipColumn ("col_a")

In bocca al lupo,

Terry.

Altri suggerimenti

cercherò di spiegare il metodo che uso per fare in modo che un utente non lascerà un campo specificato vuoto. Quanto segue è il codice che ho messo nel caso di pfc_updateprep u_dw (l'antenato). Poi, per ogni una delle colonne che voglio un valore da dare in ogni caso, ho messo un M nella proprietà tag del campo di testo che descrive la colonna. HTH.

integer         li_size,i,l,li_zero
string           ls_textname,ls_tag,ls_objects[]
string           ls_col,ls_type,ls_text,ls_key,ls_any
any             la_null,la_any
dec             ld_zero
real               lr_zero
long               ll_zero
boolean         lb_zero

dwItemStatus    l_status,l_key_status

This.Modify("DataWindow.Table.UpdateKeyinPlace=Yes")

li_size = This.inv_base.of_Getobjects(ls_objects[ ],"column","*",TRUE)

FOR l=1 TO This.Rowcount()
    l_status=This.GetItemStatus(l, 0,Primary!)
    IF l_status=NewModified! OR l_status=Datamodified! THEN
        FOR i = 1 to li_size
            ls_col=ls_objects[i]

            ls_key = Upper(This.Describe(ls_col+".Key"))
            ls_type=This.Describe ( ls_col + ".ColType")

            ls_textname=ls_col+"_t" // because the textnames that I use are the same as the column names followed by a "_t"
            ls_tag=This.Describe(ls_textname+".Tag")
            ls_text=This.Describe(ls_textname+".Text")


            IF ls_tag='M' THEN
                lb_zero = FALSE
                IF This.Rowcount()>0 THEN
                    la_null=This.inv_base.of_GetItemany(l,ls_col)

                    choose case Upper(MidA(ls_type,1,3))
                        case 'DEC' 
                            ld_zero=Dec(la_null)
                            IF ld_zero = 0 THEN lb_zero=TRUE
                        case 'INT' 
                            li_zero=Integer(la_null)
                            IF li_zero = 0 THEN lb_zero=TRUE
                        case 'REA' 
                            lr_zero=Real(la_null)
                            IF lr_zero = 0 THEN lb_zero=TRUE
                        case 'LON' 
                            ll_zero=Long(la_null)
                            IF ll_zero = 0 THEN lb_zero=TRUE
                    end choose

                    IF Isnull(la_null) OR lb_zero THEN
                        Messagebox(gnv_app.of_Getframe().Getactivesheet().Title,&
                                    "You must provide a value for the following field ~r("+&
                                    ls_text+") !!!")
                        Return FAILURE
                    END IF
                END IF
            END IF
        NEXT
    END IF
NEXT

Return  SUCCESS

Quello che ho fatto in PB è quello di impostare la seguente DataWindow proprietà delle colonne true o controllato:

  • Stringa vuota è NULL
  • Obbligatorio

In questo caso, il DataWindow dovrebbe convalidare automaticamente il campo per voi e per impedire all'utente di lasciare vuoto il campo.

[EDIT - Chiarimento dopo sempre un buon consiglio di Terry]

La prima parte del mio post dovrebbe funzionare per i campi di testo in fase di immissione dei dati e credo che costringerà l'utente a inserire un valore valido nel DW prima di consentire attenzione ai cambiamenti a meno che non si modifica che il comportamento, ad esempio, nel itemChanged evento.

Il servizio Colonna PFC richiesto può essere attivata e la colonna registrato con esso per fornire la convalida Salva-tempo. Questo lo rende meno ingombrante per un utente di muoversi attraverso i campi durante la navigazione i campi, e assilla solo l'utente quando si cerca di risparmiare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top