Seleziona tuute le checkbox

di il
5 risposte

Seleziona tuute le checkbox

Tramite  pulsante vorrei selezionare tutte le checbox in true o false.
Il problema è che se ci sono alcune caselle  già true o false inverte la selezione cosa esatta dal codice che riporto sotto.
Come rimediare

Function All_CheckBox()
Dim ctl As Access.Control
For Each ctl In Me.Controls
 If TypeOf ctl Is CheckBox Then
  If ctl.tag = "all_cb" Then
   If ctl = true Then
    ctl = false
   Else
   ctl = True
  End If
  End If
  End If
  Next ctl
End Function

5 Risposte

  • Re: Seleziona tuute le checkbox

    Mi sembri l'Ufficio Complicazioni Affari Semplici…

    Function All_CheckBox(Value As Boolean)
    	Dim ctl As Access.Control
    	For Each ctl In Me.Controls
     		If TypeOf ctl Is CheckBox Then
      			If ctl.tag = "all_cb" Then  ctl.Value = Value
      		End If
      	Next ctl
    End Function

    Li vuoti Tutti flaggati(true)…?

    Call All_CheckBox(True)

    Li vuoti resettare tutti…?

    Call All_CheckBox(False)

    Se non hai altre CheckBox e tutte quelle che vuoi gestire sono quelle presenti, la gestione del TAG non serve a nulla.

  • Re: Seleziona tuute le checkbox

    Alex sempre chiaro.

    Come faccio ha richimare le funzioni Call All_CheckBox(True) o Call All_CheckBox(False) con un unico pulsante?

    Ho trovato questa tecnica:

    Private Sub Seleziona_Click()
    If Me.seleziona.Caption = "seleziona tutti" Then
    Call All_CheckBox(True)
    Me.seleziona.Caption = "deseleziona tutti"
    Else
    Call All_CheckBox(False)
    Me.seleziona.Caption = "seleziona tutti"
    End If
    End Sub
  • Re: Seleziona tuute le checkbox

    A senza h

    Perché devi richiamare tutte e due le sub??

  • Re: Seleziona tuute le checkbox

    Se le tue CheckBox appartengono ai vari record, quindi hanno un'origine record (magari sei in Maschere Continue)…sto ipotizzando ad un elenco:

    io avrei creato un'altra CheckBox (magari chiamata chkTutti) e poi scriverei nell'evento DopoAggiornamento della chkTutti

    CurrentDb.Execute “UPDATE tuaTabella SET tuaCheckbox = ” & chkTutti

    Se chkTutti è flaggata  di conseguenza anche le altre si flaggano e viceversa.

  • Re: Seleziona tuute le checkbox

    Forse capisco che vorresti tipo un effetto interruttore…? ON/OFF

    Perché invece del button non usi appunto un controllo interruttore…?

    Private Sub NomeInterruttoee_AfterUpdate()
        Call All_CheckBox(Me!NomeInterruttore.Valie)
    End Sub

    Se invece non vuoi usare il controllo interruttore, ma io ti suggerisco questo, devi usare una variabile

    Dim blCheckState As Boolean
    
    Private Sub Seleziona_Click()
        blCheckState= Not blCheckState
        Call All_CheckBox(blCheckState)
    End sub

    Oppure usa la proprietà TAG del Button:

    Private Sub Seleziona_Click()
        Me!Seleziona.Tag = cstr(Not Val(Me!Seleziona.Tag))
        Call All_CheckBox(Val(Me!Seleziona.Tag))
    End sub
Devi accedere o registrarti per scrivere nel forum
5 risposte