Aggiornamento casella di controllo

di alexps81 il
8 risposte
Buonasera, volevo chiedere se qualcuno mi aiuta ad aggiornare tramite query sql una casella di controllo.

In pratica devo aggiornare questa casella al valore False se il campo A all'interno di una tabella risulta vuoto, con condizione che un campo B sia uguale alla parola ADMIN. La difficoltà che ho incontrato è che il controllo deve essere effettuato su tutti i record. Quindi se solo un record ha il campo A non vuoto, allora la casella di controllo non deve mutare il suo stato attuale.

Ho provato a scrivere qualcosa del genere, ma ovviamente senza risultati positivi:
Private Sub btnChiudi_Click() 
Dim rs as DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT MsgAdmin FROM operatori")
While Not rs.EOF
If rs(0) = Null Then
Dlookup("da_leggere", "operatori", "ruolo = 'ADMIN'") = False
rs.MoveNext
End If
Wend
End Sub
Capisco che è un pastrocchio ma di più non riesco.
Grazie.

8 Risposte

  • alexps81 ha scritto:


    ... aggiornare tramite query sql una casella di controllo.
    Devi aggiornare una casella di controllo, quindi un controllo in una maschera, o un campo sì/no (boolean)?
    Se sei in una maschera, questa casella di controllo è associata o no? Maschera singola o maschera continua?
  • Questa casella di controllo non è in maschera. Attraverso l'evento click di un button vorrei che questa casella mutasse il suo stato (da True a False) se i campo MsgAdmin è vuoto in tutti i suoi record.
    Se questa casella di controllo non è spuntata allora un'altra maschera non si aprirà, viceversa qualora fosse spuntata si provocherà l'apertura della maschera (ma questo ultimo passaggio già l'ho fatto. Mi manca il primo)
  • Che ne pensate? Si riesce....non so spero di aver esposto bene il mio problema.
  • Si può far tutto e basta un Dlookup senza aprire un inutile recordset....
    Il problema non è se si può fare ma se ha senso quello che fai...

    Phil ti ha chiesto se il controllo di cui vuoi cambiare stato sia o meno associato per un motivo preciso... è questo che contribuisce a capire se abbia o meno senso quello che fai... e se non è associato non ne ha perché si perde l'info e forse sarebbe meglio una variabile ambiente...
  • Il controllo non è associato.
    Se questo campo SI/NO rimane valorizzato su False, allora (attraverso altro codice sull'eventuale open di un'altra maschera) non va ad aprire la maschera che ho accennato tra parentesi. Viceversa se questo campo SI/NO è valorizzato a True allora questa maschera si aprirà. Però tutto questo non credo importi. Io volevo solo capire come fare a mutare lo stato in False di un campo SI/NO di una tabella tenendo conto il campo MsgAdmin si vuoto in tutti i suoi record.
  • Scusate, forse ci sono riuscito. Chiaramente con il vostro aiuto.

    Ho scritto
    Private Sub btnChiudi_Click
    If IsNull(DLookup("MsgAdmin", "operatori")) Then
        CurrentDb.Executive "UPDATE operatori SET da_leggere = False WHERE ruolo = 'ADMIN'" 
    End If
    End Sub
    Pare funzioni. Vorrei un vostro parere.
  • Pardon....non ho risolto nulla. Fa il controllo solo del primo record. Se il campo MsgAdmin è nullo allora aggiorna a False la casella SI/NO se non è nullo allora la lascia al suo stato attuale. Se invece il primo record è nullo e gli altri non sono nulli allora la casella SI/NO va a False.
  • Personalmente non ho ancora capito cosa nello specifico devi fare ... perché scrivi cose che confondono molto chi legge.

    Un esempio è quel codice che dici funzionare... ed è ovviamente IMPOSSIBILE, non solo non può funzionare ma deve restituire un errore bello grande, questo contribuisce a rendere impossibile anche distinguere se le cose che dici siano veramente connesse a quelle che poi fai... oppure sei un po maldestro nel riportare il codice... e questo a scapito della chiarezza.

    Boh...
Devi accedere o registrarti per scrivere nel forum
8 risposte