Controllo tabella con molti campi

di il
13 risposte

Controllo tabella con molti campi

Buonasera a tutti,
avrei bisogno di aiuto su come impostare una funzione da aggiungere al mio DB.
ho una tabella con una trentina di caselle di controllo e qualche casella di testo.

Premesso ciò, avrei bisogno che all'apertura di una maschera venga controllata quella tabella, mi venga segnalato se ci sono caselle di controllo con valore "TRUE" o se ci sono caselle di testo non vuote.

Pensavo di utilizzare un DLookUp ma non saprei come gestirlo con così tante caselle di controllo, avete consigli su come potrei impostare la cosa?

Grazie mille

13 Risposte

  • Re: Controllo tabella con molti campi

    1. Ti serve sicuramente una query.
    2. In essa includi tutti e 30 i campi Sì/No, sia i (diciamo) 4 campi testo.
    3. Vai a Criterio del primo campo e lo imposti True.
    4. Scendi nel rigo sottostante il primo Criterio e al 2° campo metti True.
    5. Scendi nel rigo sottostante Criterio e al 3° campo metti True.
    6. Così via...scendi sempre un rigo sottostante e passi al campo successivo per impostare il tuo Criterio. Per i campi tipo testo, scriverai Not IsNull.
    7. Salva ed esegui la query che restituirà il risultato da te atteso.
  • Re: Controllo tabella con molti campi

    Una tabella non ha né caselle di controllo né caselle di testo.
    Una tabella ha CAMPI.
    Poi purtroppo JET consnete di pasticciare con l'interfaccia del database... ma questo è un dettaglio.

    I controlli di cui parlavi sono nella form, ma non ci interessa per sapere se sono valorizzati perché per questo si verifica il contenuto dei campi nella tabella.

    Ora spiega meglio che tipo di maschera apri, singola o CONTINUA o foglio dati, e facci capire meglio quale scopo ha il controllo di cui parli e se deve escludere i records con quei criteri...
    Insomma dacci qualche cosa di tecnico su cui ragionare.
  • Re: Controllo tabella con molti campi

    Innanzitutto, grazie dell'aiuto ad entrambi.

    Certo do più dettagli, si tratta di un DB a scopo medico, la tabella con molti campi è una tabella di anamnesi, quindi con HIV (si/no) Epatite (si/no) e così via..

    all'apertura della maschera di un nuovo appuntamento di quel paziente (una maschera singola), pensavo di mettere su LOAD la ricerca nella tabella anamnesi di quel paziente di eventuali campi che avessero valore TRUE, così che mi apparisse un MsgBox che mi avvertisse che quell'anamnesi fosse positiva.
  • Re: Controllo tabella con molti campi

    Nell! sostanza hai fatto 1 Campo per ogni "malattia"...?
    Ma ogni paziente devi scaricarle tutte oppure possono essere aggregate a seconda...?

    Questa domanda in quanto la struttura di base sarebbe sbagliata, ma potrebbe essere più complessa di quanto si possa banalizzare.

    Diciamo, banalizzando, che come minimo dovrebbero servire 3 tabelle:
    Anagrafica
    Malattie
    SchedaPaziente

    Dove in scheda paziente si inseriscono tutte le malattie ascrivibili al paziente.
    La relazione in questo caso sarebbe una Molti a Molti.

    Questa struttura va bene... nella teoria di base o scolastica... ma all'atto pratico diventa poco fruibile in quanto ti tocca per ogni paziente inserire tutte le voci.
    Certo si può creare una procedura automatica che ad ognu nuovo paziente automaticamente inserisce tutte le malattie.

    Allora dirai... "perché mi fai fare tutto questo pippone...?"
    Perche se domani aggiungi una nuova malattia "COVID19"... per smorzare un po la tensione... dovresti aggiungere 1 campo in tabella e modificare la struttura delle maschere ed eventualmente i vari codici.

    Con la struttura M-M basta aggiungere nella tabella Malattie una nuova malattia e la potrai assegnare ai pazienti senza mai modificare maschere e codice.

    Mi fermo.
  • Re: Controllo tabella con molti campi

    Allora sono nella fase iniziale, posso ancora modificare la struttura quindi mi interessa poterlo rendere più fruibile.
    Rispondo alla tua domanda, per ogni paziente devo compilarle tutte anche se negative per una questione medico legale, infine sull'aggiornamento delle patologie in anamnesi non vengono praticamente mai aggiornate, ci si attiene sempre a linee guida di società scientifiche che non modificano in sostanza nulla da anni e non penso che avrò necessità di farlo.
  • Re: Controllo tabella con molti campi

    Navigator2348 ha scritto:


    Allora sono nella fase iniziale, posso ancora modificare la struttura quindi mi interessa poterlo rendere più fruibile.
    Segui in ogni caso il suggerimento fornito da @Alex con la relazione molti-a-molti...eventualmente con l'aggiunta di una routine che ogni volta accoda tutte le malattie da dover compilare per motivi legali.

    Navigator2348 ha scritto:


    infine sull'aggiornamento delle patologie in anamnesi non vengono praticamente mai aggiornate, ci si attiene sempre a linee guida di società scientifiche che non modificano in sostanza nulla da anni e non penso che avrò necessità di farlo.
    Questo è un altro ben lungo discorso...ma si rischia di entrare sul "politico"...direi che rischiamo di uscire fuori tema.
  • Re: Controllo tabella con molti campi

    OsvaldoLaviosa ha scritto:


    1. Ti serve sicuramente una query.
    2. In essa includi tutti e 30 i campi Sì/No, sia i (diciamo) 4 campi testo.
    3. Vai a Criterio del primo campo e lo imposti True.
    4. Scendi nel rigo sottostante il primo Criterio e al 2° campo metti True.
    5. Scendi nel rigo sottostante Criterio e al 3° campo metti True.
    6. Così via...scendi sempre un rigo sottostante e passi al campo successivo per impostare il tuo Criterio. Per i campi tipo testo, scriverai Not IsNull.
    7. Salva ed esegui la query che restituirà il risultato da te atteso.
    Ciao ho ripreso il tuo consiglio e ho creato una query che funziona correttamente, ora dovrei sfruttarla in VBA per un semplice IF, girando in rete ho trovato che questo è fattibile creando una piccola funziona e richiamandola e così ho fatto ma senza il risultato sperato:
    la funzione, che per correttezza riporto che è di @alex su un altro forum, è:
    Function QueryExist(NomeQuery As String) As Boolean
        On Error GoTo ERR_NOTEXIST
        Dim strSQL As String
        QueryExist = False
        strSQL = CurrentDb.QueryDefs(NomeQuery).SQL
        QueryExist = True
    EXIT_HERE:
        Exit Function
    ERR_NOTEXIST:
        Resume EXIT_HERE
    End Function
    ed io la richiamo con questo semplice IF su clic
    
    if QueryExist ("anmnesipositiva")then
    msgbox("positiva")
    else
    msgbox("negativa")
    end if
    
    Ottengo sempre il msgbox "positiva" anche quando provando la query ottengo zero righe, dove sto sbagliando? grazie dell'aiuto
  • Re: Controllo tabella con molti campi

    Ovviamente... la query esiste... è un risultato che nulla ha a che vedere con il fatto che funzioni o che restituisca records...
    Sono 2 concetti estremamente inconfrontabili.

    Io prima di fare entropia di concetti sistemerei la struttura relazionale... poi vedi tu...
  • Re: Controllo tabella con molti campi

    Avevo immaginato che il problema stesse li e non dovessi controllare se la query esistesse o meno.
    Su che funzione dovrei andare per valutare se restituisca record o meno?

    p.s. Perché dici che ci sono problemi nella struttura? grazie
  • Re: Controllo tabella con molti campi

    Gia spiegato... rileggi... poi puoi ritenere i suggerimenti non pertinenti in relazione alla tua esperienza... ma...
  • Re: Controllo tabella con molti campi

    Ok...
  • Re: Controllo tabella con molti campi

    Navigator2348 ha scritto:


    Ok...
    Prova ad estrarre il Numero di Parologie per paziente con la tua struttura... giusto per capire cosa stai facendo... ovviamente se la tua risposta è ancora "a me non serve sapere quante patologie ha un paziente"... stiamo parlando di nulla... ti si spiega per Logica funzionale, che probabilmente tu non applichi per inesperienza...!
  • Re: Controllo tabella con molti campi

    Navigator2348: io avevo dato suggerimenti "alla lettera" ignorando la struttura tabelle. @Alex ha sollevato una questione di ben più sostanziale importanza...che deve definitivamente abolire altre soluzioni "pezze a colori". Nel mio post del 17/3/2020 00:32 ho sostenuto la tesi di @Alex, dopo di che non dovevi riprendere vecchi post precedenti.
    Stando così le cose, devi fare qualche passo indietro e rivedere la struttura tabelle. @Alex ha provato a fornire una (ipotetica) soluzione. Se non l'hai compresa, apri una nuova discussione in cui racconti di cosa parla il tuo database e chiedi aiuto per la "normalizzazione": esiste l'apposita sezione dedicata alla "Progettazione database".
Devi accedere o registrarti per scrivere nel forum
13 risposte