Errore di visualizzazione quando i campi sono nulli

Anonimo
2017-05-25T13:46:40+00:00

Ciao,

ho sempre bisogno del vostro aiuto.

Nel mio Dbase (di cui parlavo la volta scorsa) può avvenire che venga creato (quindi popolata) una tabella, mentre le altre devono essere popolare in un secondo momento.

Ho realizzato le maschere e quando ci sono i collegamenti alla/e tabelle ancora da popolare mi si presenta, nella txtbox, il messaggio di errore. Come posso ovviare a questo inconveniente. Ho provato anche ad impostare il campo "valore predefinitivo", ma l'errore persiste.

Credo si tratti di ovviare ai famosi campi null (vuoti).

Grazie per l'aiuto

Luca

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

8 risposte

Ordina per: Più utili
  1. Anonimo
    2017-05-26T17:33:54+00:00

    ciao Luca,

    qual è l'errore...? devi essere più preciso. Da quello che mostri sembra ok...prova a mostrare se non altro la struttura della form

    Ciao, Sandro-

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-05-26T06:49:09+00:00

    Ciao Sandro

    grazie per la soluzione. C'è però un problema relativamente al mio caso che ora ti spiego.

    Nella form del precedente post i valori di

    • Totale impegni progetto e Totale mandati progetto, sono desunti da una sottomaschera nascosta che preleva i dati da una query per cui la txtbox viene valorizzata in questo modo =[Sottomaschera QRY_SommaImpegni].[Form]![TOT_Impegni]

    Ho provato ad inserire nella txtbox questo controllo =nz([Sottomaschera QRY_SommaImpegni].[Form]![TOT_Impegni];0) ma mi restituisce l'errore.

    Ciao

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-05-25T17:47:00+00:00

    ciao Luca,

    mi par di capire quindi che la popolazione delle tabella viene effettuata in tempi diversi compilando di volta in volta i dati disponibili, valori numerici compresi.

    A questo punto per evitare i bloccare l'inserimento dei dati con vincoli sulle tabelle per la gestione degli errori del database -  vedi evento su errore di cui al codice del post precedente-  o alla stregue nella gestione l'evento before update che, in egual misura potrebbe bloccare la prosecuzione dell'inserimento dei dati, vedrei bene non gestire alcun vincolo e valorizzare il calcolo solo ed esclusivamente quando i dati sono effettivamente disponibili

    Se ad esempio devi effettuare una somma ed uno degli addendi non è disponibile il risultato della somma sarà ND.

    in tal modo se ha 4 addendi su 5 compilerai in un primo momento quei 4 e alla fine l'ultimo ottenendo la somma.

    E' un'idea.

    ad esempio in una form con un controllo calcolato tipo :

    finchè tutte e tre i controlli add1, add2 e add3 non sono compilati con un valore numerico il risultato sarà :

    ed invece :

    quando tutti i controlli sono compilati.

    essendo il calcolo estremamente rilevante io preferirei un ND piuttosto che un valore parziale e fuorviante finchè tutti i dati non sono a disposizione.

    Il + permette la propagazione del valore null sia in caso di concatenazione di stringhe che di valori numerici da qui la spiegazione del ND anche in caso di compilazione parziale.

    HTH.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-05-25T16:43:08+00:00

    Ciao Sandro,

    vedo che sei sempre presente e questo è una sicurezza per coloro (come me) che hanno bisogno di persone esperte con i data base.

    Ora ti spiego meglio il mio problema e poi mi confermi se la tua soluzione è quella da adottare.

    In pratica questo Dbase l'ho pensato per gestire finanziariamente dei progetti.

    La prima tabella che popolo è OPERA ... successivamente la tabella PROGETTI, quindi comincio a popolare la tabella IMPEGNI. A volte sono in grado di cominciare a popolare anche la tabella MANDATO, in altri casi, invece posso popolarla solo in un secondo momento.

    Ho realizzato una form dove in effetti vengono riepilogati i dati relativi ad un progetto, tra cui la somma degli impegni registrati per quel progetto e la somma dei mandati emessi su un determinato impegno.

    Come ben potrai comprendere se non popolo la tabella mandato queste differenze non riesco ad ottenerle correttamente (appunto messaggio di errore perchè la tabella mandato non è popolata per quel progetto).

    Ti allego una immagine delle relazioni fra le tabelle, nonchè un'immagine della form del progetto.

    Come vedi ci sono particolari txtbox che sono legati alla tabella Mandato; in particolare il txtbox Totale mandati progetto (dove vengono sommati tutti i mandati di quel progetto); il txtbox Disponibilità da liquidare che non è altro che la differenza tra la somma di tutti gli impegni di quel progetto e la somma di tutti i mandati; poi c'è la txtbox Disponibilità da impegnare che è la differenza tra l'importo del progetto e la somma degli impegni; infine la txtbox economia che non è altro che la differenza tra l'importo del progetto e la somma dei mandati.

    Spero di essere stato chiaro ... 

    A presto

    Luca

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-05-25T15:35:22+00:00

    ciao Luca,

    se hai impostato vincoli sulla tabella puoi gestire l'errore del motore del database su evento errore :

    Option Compare Database

    Option Explicit

    Private Sub Form_Error(DataErr As Integer, Response As Integer)

        Select Case DataErr

            Case 3314

                VBA.MsgBox prompt:="Attenzione, controllo obbligatorio in rosso" & vbNewLine & _

                                    "Compilazione obbligatoria.!", _

                           buttons:=vbCritical, _

                           Title:="WARNING!"

                Response = acDataErrContinue

            Case Else

                '

        End Select

    End Sub

    impostando un colore di sfondo del controllo per segnalare l'obbligatorietà, in tal modo gestisci con un messaggio personalizzato l'errore.

    Altro modo è ciclare su before update della form i controlli e per quelli obbligatori, contrassegnati con un suffisso o prefisso particolare cambiare il colore di sfondo con un messaggio.

    Personalmente mi piace di più la seconda ipotesi.

    Se intendi altro, invece spiega meglio...

    per quanto a :

    [...]

    Credo si tratti di ovviare ai famosi campi null (vuoti).

    Grazie per l'aiuto

    Luca

    occhio che vuoto e null sono concetti diversi.

    [...]

    Grazie per l'aiuto

    Prego.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento