Maschera in cui vorrei evidenziare un campo se lo stesso è vuoto e l' altro uguale a 0

di Anonimizzato16001 il
12 risposte
Buongiorno
vorrei se possibile in una maschera nel mio caso Fatture poter generare un errore o evidenziare un campo se lo stesso è vuoto ed un altro è uguale a 0000000.
nello specifico se il campo PEC è vuoto ed il campo SDI è uguale a 0000000, vorrei mettere in evidenza almeno in uno dei due campi .
e se possibile vorrei fare la stessa verifica nella generazione del report sugli stessi 2 campi.

Grazie

12 Risposte

  • Nelle Form devi distinguere in che Modalità di Visualizzazione stai operando, perchè se usi la Visualizzazione in Maschera Singola hai 2 possibilità, mentre se operi in Maschera Continua, solo 1.
    Nel Report invece ne hai sempre 2, ma personalmente ne uso solo 1.

    Riassumo:
    Form
    
       1) Maschera Singola
          a)Formattazione Condizionale, inserendo come Metodo di applicazione della Formattazione "L'Espressione è" poi nel criterio inserirai quello che hai appena detto.
          b)Su Evento Current scrivi 2 righe di codice(io preferisco questa perchè non ha limitazioni)
    Private Sub Form_Current()
       If not Me.NewRecord then
          If (Criterio di Evidenza) Then
             Me.NomeControllo.BackColor=vbRed
          Else
             Me.NomeControllo.BackColor=vbWhite
          End if
       End if
    End Sub
    
       2) Maschera Continua, hai solo la Formattazione condizionale, si usa come al punto 1.a
    Report
    
    Hai la situazione uguale alla Maschera Singola, e come per quella io userei il codice, il medesimo ma su Evento Format della Sezione in cui si trova il controllo(bada a non valutarlo in modalità LayOut ma solo in Anteprima).
    Saluti
  • Ho fatto qualche prova sul report, sia in formattazione condizionale

    l'espressione é: codice_sdi=0 & indirizzo_pec=Null

    che nell' evento format nella sezione intestazione del report

    Private Sub IntestazionePagina_Format(Cancel As Integer, FormatCount As Integer)
             If (CODICE_SDI = 0 & INDIRIZZO_PEC = Null) Then
             Me.INDIRIZZO_PEC.BackColor = vbRed
          Else
             Me.INDIRIZZO_PEC.BackColor = vbWhite
          (dovrebbe darmi sfondo rosso se INDIRIZZO PEC è vuoto e CODICE SDI è =0, e sfondo bianco se è inserito INDIRIZZO PEC)
          End If
      End IF
    End Sub

    ma senza risultati evidentemente sbaglio a formulare il criterio
  • ... in formattazione condizionale funziona sostituendo & con And
  • In logica Booleana non si è mai visto l'uso di [&]... che invece concatena le stringhe...
  • @Alex ha scritto:


    In logica Booleana non si è mai visto l'uso di [&]... che invece concatena le stringhe...


    mentre nel codice inserito in formattazione quale altro errore ho commesso?


    vorrei poter utilizzare questa altra soluzione anche perchè se possibile mi piacerebbe fare in modo che se la condizione è quella indicata venga inibita anche la stampa o quantomeno venga generato un warning.

    grazie
  • Ne commetti più di 1... questi quelli gravi:
    1° Cosa cambia nel Codice su Format come Condizione LOGICA rispetto alla F.C. ...?
    Mi pare tu commetta lo stesso errore [& vs AND]...

    2° Il Controllo PEC per verificare se è Vuoto, non si fa come hai fatto...
    INDIRIZZO_PEC = Null
    Leggi questo:https://support.office.com/it-it/article/funzione-isnull-f963233b-1c1e-4b0c-8bc3-3e8c0ea67c61
    Tuttavia il campo vale NULL solo se non lo hai mai modificato, se scrivi un testo, poi lo rimuovi... vale NullString e fallirebbe... io scrivo così:
    If Len(Me!TuoControllo.Value & vbNullstring)=0 And Me!CODICE_SDI.Value = 0 Then...
  • Perfetto
    grazie mille
  • Aprofitto della gentilezza , come faccio a creare un messaggio di errore nel report, se si verificano le condizioni di cui sopra?
    o meglio ancora come posso bloccare l' invio alla stampa visualizzando anche un messaggio di errore?
  • Il messaggio basta usare il MsgBox come da istruzioni...
    Mentre la stampa, dipende da come consenti di gestirla, cosa che non hai spiegato
  • Buonasera
    mi sono accorto solo ora che per utilizzare i codici sopra descritti devo aggiungere un parametro da valutare cioè se il cliente a cui sto facendo fattura è un privato o è una ditta , quindi dovrei valutare anche se il controllo partita iva è vuoto oppure no, quindi ho provato a modificare il codice in questo modo
     If Len(Not [partita IVA]) And (Me![INDIRIZZO PEC].Value & vbNullString) = 0 And Me![CODICE SDI].Value = 0 Or Null Then
             Me.[INDIRIZZO PEC].BackColor = vbRed
             MsgBox "ATTENZIONE!!! PEC O SDI", vbCritical
          Else
             Me.[INDIRIZZO PEC].BackColor = vbWhite
              End If
    .... ma non funziona
    prima era così
     If Len (Me![INDIRIZZO PEC].Value & vbNullString) = 0 And Me![CODICE SDI].Value = 0 Or Null Then
             Me.[INDIRIZZO PEC].BackColor = vbRed
             MsgBox "ATTENZIONE!!! PEC O SDI", vbCritical
          Else
             Me.[INDIRIZZO PEC].BackColor = vbWhite
              End If
    dove sbaglio?
  • Cosa sarebbe quel "OR NULL"...?
  • .....lo so sono un asino...devo sempre fare qualcosa di testa mia... e sbaglio.

    Grazie
Devi accedere o registrarti per scrivere nel forum
12 risposte