Newsgroup: it.comp.lang.visual-basic
Titolo: CheckBox

Ho una tabella in access con un campo tipo si / no e vorrei far in modo di
caricare tanti CheckBox (Check1 con index = 0) quanti sono i record della
tabella e modificare il valore togliendo o mettendo la spunta.
Dim rs As ADODB.Recordset
'''''''''''''''''''''''''
Dim strSQL As String
Dim i As Integer
strSQL = "SELECT campo, siNo FROM MiaTabella;"
Set rs = New ADODB.Recordset
rs.Open strSQL, connDB, adOpenDynamic, adLockOptimistic
If Not rs.BOF Or Not rs.EOF Then
    rs.MoveFirst
    i = 0
    Set Check1(i).DataSource = rs
    Check1(i).DataField = "siNo"
    Check1(i).Caption = rs!campo
    rs.MoveNext
    i = i + 1
    Do Until rs.EOF
        Load Check1(i)
        Check1(i).Top = Check1(i - 1).Top + 350
        Check1(i).Left = Check1(i - 1).Left
        Check1(i).Caption = rs!campo
        Check1(i).Visible = True
        Set Check1(i).DataSource = rs
        Check1(i).DataField = "siNo"
        rs.MoveNext
        i = i + 1
    Loop
End If
I dati vengono caricati giusti, con o senza la spunta, ma non riesco a
modificarli, ho fatto altri tentativi ma il CheckBox appare con Value = 2
cioč grigio.
Ho pensato anche di spostare il rs nella posizionare giusta in questo modo
rs.MoveFirst
rs.Move Index , 1
dove Index č l'indice di Check1, ma le modifiche non hanno effetto.
Grazie per chi mi puň aiutare.
Niky

Apparentemente sembra strana la cosa. Da premettere che il tuo
ciclo puň essere migliorato, ma non č quello che influenza il tuo
checkbox, io proverei a vedere se da qualche altra parte il tuo
controllo non viene modificato.
O cosa molto piů probabile č che il tuo controllo base (quello
dal quale erediti quando fai Load Check1(i)) non sia impostato
come enabled = false.
Quello sicuramente impedisce a tutti i controlli di essere modificati.
Saluti
Andrea Moro

Ho risolto cosi:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''
 Dim rs As ADODB.Recordset
 '''''''''''''''''''''''''
 Dim strSQL As String
 Dim i As Integer
 strSQL = "SELECT campo, siNo FROM MiaTabella;"
 Set rs = New ADODB.Recordset
 rs.Open strSQL, connDB, adOpenDynamic, adLockOptimistic
 If Not rs.BOF Or Not rs.EOF Then
     rs.MoveFirst
     i = 0
'     Set Check1(i).DataSource = rs
'     Check1(i).DataField = "siNo"
    Check1(i).Caption = rs!campo
    If rs!siNo = True Then Check1(i).Value = vbChecked Else Check1(i).Value
= vbUnchecked
    rs.MoveNext
    i = i + 1
    Do Until rs.EOF
'cmq questo è uno stralcio di codice... poi lo sistemo
        Load Check1(i)
        With Check1(i)
            .Top = Check1(i - 1).Top + 350
            .Left = Check1(i - 1).Left
            .Caption = rs!campo
            .Visible = True
        End With
        If rs!siNo = True Then Check1(i).Value = vbChecked Else
Check1(i).Value = vbUnchecked
'       Set Check1(i).DataSource = rs
'       Check1(i).DataField = "siNo"
        rs.MoveNext
        i = i + 1
     Loop
 End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''
Private Sub Check1_Click(Index As Integer)
    rs.MoveFirst
    rs.Move Index, 1
    If Check1(Index).Value = vbChecked Then
        rs!siNo = True
    ElseIf Check1(Index).Value = vbUnchecked Then
        rs!siNo = False
    Else
        Exit Sub
    End If
    rs.Update
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Ora funziona come volevo.
Il problema era che se spuntavo un CheckBox , con questo codice
       Set Check1(i).DataSource = rs
       Check1(i).DataField = "siNo"
li spuntavo tutti.
Invece, in quei casi quando mettendo la spunta non avevo nessuva variazione
nella tabella, mi è ancora un mistero (forse perche il rs era EOF)
Cmq ho risoto, Grazie.