Buona sera a tutti!
Vi espongo il mio problema: Ho creato una form che simula la pagina di un registro scolastico, che alla selezione di docente, classe e materia visualizza la lista degli alunni relativi; cliccando su uno dei nomi della lista viene visualizzata una nuova lista con i voti che l'alunno ha sul registro.
Ho poi pensato a tre bottoni per inserire, modificare e cancellare i record dal db, utilizzando delle combobox; l'insert funziona senza problemi:
codice:
Private Sub btmInserisci_Click()
Dim Agherbino As Database, qdf As QueryDef, strSQL As String
    Dim idmateria As Integer
        
    If Me.CmbClasse = "" Or Me.CmbMateria = "" Or Me.cmbData = "" Or Me.cmbQuadrimestre = "" Or Me.cmbTipo = "" Or Me.cmbVoto = "" Then
        MsgBox "Compilare tutti i campi", vbCritical, "Informazioni mancanti!"
    Else
        If lblVotiStudente.Caption = "" Then
            MsgBox "Selezionare uno Studente"
        Else
        
        'inserimento di un voto
        idmateria = RicavaID.Ricava_IDmateria(Me.CmbMateria.Value)
        Dim rec As Recordset
        Set Agherbino = DBEngine(0)(0)
        strSQL = "INSERT INTO Valutazione_prova(Matricola, IdDocente, IdMateria, Data_prova, Quadrimestre, Tipo, Voto) VALUES (" & Me.ElnStudenti.Column(0) & ", " & Form_HomeDocente.txtID.Value & ", " & idmateria & ", '" & Me.cmbData.Value & "', " & Me.cmbQuadrimestre.Value & ", '" & Me.cmbTipo.Value & "', " & Me.cmbVoto.Value & ")"
        Agherbino.Execute strSQL
        strSQL = "SELECT * FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria = " & idmateria & " AND Data_prova = '" & Me.cmbData.Value & "' AND Quadrimestre = " & Me.cmbQuadrimestre.Value & " AND Tipo = '" & Me.cmbTipo.Value & "' AND Voto = " & Me.cmbVoto.Value & ""
        MsgBox "Voto aggiunto correttamente!"
        
        'aggiorna la lista voti degli studenti
        Me.ElnVoti.Requery
        Me.cmbData = ""
        Me.cmbQuadrimestre = ""
        Me.cmbTipo = ""
        Me.cmbVoto = ""
        Agherbino.Close
        End If
        
    End If
    
End Sub
mentre l'aggiornamento (modifica) e la cancellazione no
Ecco i bottoni:
codice:
Private Sub btmModifica_Click()
   'UPDATE mia_tabella SET telefono = '0244444444' WHERE nome = '%s' AND cognome = '%s';",nome,cognome);
 
    Dim Agherbino As Database, qdf As QueryDef, strSQL As String
    Dim idmateria As Integer
        
    If Me.CmbClasse = "" Or Me.CmbMateria = "" Or Me.cmbData = "" Or Me.cmbQuadrimestre = "" Or Me.cmbTipo = "" Or Me.cmbVoto = "" Then
        MsgBox "Compilare tutti i campi", vbCritical, "Informazioni mancanti!"
    Else
        If lblVotiStudente.Caption = "" Then
            MsgBox "Selezionare uno Studente"
        Else
        
        'inserimento di un voto
        idmateria = RicavaID.Ricava_IDmateria(Me.CmbMateria.Value)
        Dim rec As Recordset
        Set Agherbino = DBEngine(0)(0)
        strSQL = "UPDATE Valutazione_prova SET Data_prova='" & Me.cmbData.Value & "'AND Quadrimestre= " & Me.cmbQuadrimestre.Value & " AND Tipo='" & Me.cmbTipo.Value & "' AND Voto=  " & Me.cmbVoto.Value & " WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria=" & idmateria & ""
        Agherbino.Execute strSQL
       'strSQL = "SELECT * FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria = " & idmateria & " AND Data_prova = '" & Me.cmbData.Value & "' AND Quadrimestre = " & Me.cmbQuadrimestre.Value & " AND Tipo = '" & Me.cmbTipo.Value & "' AND Voto = " & Me.cmbVoto.Value & ""
        MsgBox "Voto modificato correttamente!"
        
        'aggiorna la lista voti degli studenti
        Me.ElnVoti.Requery
        Me.cmbData = ""
        Me.cmbQuadrimestre = ""
        Me.cmbTipo = ""
        Me.cmbVoto = ""
        Agherbino.Close
        End If
        
    End If

End Sub
codice:
Private Sub btmCancella_Click()

' DELETE FROM mia_tabella WHERE nome = '%s' AND cognome = '%s';",nome,cognome);
    Dim Agherbino As Database, qdf As QueryDef, strSQL As String
    Dim idmateria As Integer
        
    If Me.CmbClasse = "" Or Me.CmbMateria = "" Or Me.cmbData = "" Or Me.cmbQuadrimestre = "" Or Me.cmbTipo = "" Or Me.cmbVoto = "" Then
        MsgBox "Compilare tutti i campi", vbCritical, "Informazioni mancanti!"
    Else
        If lblVotiStudente.Caption = "" Then
            MsgBox "Selezionare uno Studente"
        Else
        
        'inserimento di un voto
        idmateria = RicavaID.Ricava_IDmateria(Me.CmbMateria.Value)
        Dim rec As Recordset
        Set Agherbino = DBEngine(0)(0)
        strSQL = "DELETE FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria=" & idmateria & " AND Data_prova='" & Me.cmbData.Value & "' AND Quadrimestre= " & Me.cmbQuadrimestre.Value & " AND Tipo='" & Me.cmbTipo.Value & "' AND Voto=  " & Me.cmbVoto.Value & ")"
        Agherbino.Execute strSQL
       'strSQL = "SELECT * FROM Valutazione_prova WHERE Matricola = " & Me.ElnStudenti.Column(0) & " AND IdDocente = " & Form_HomeDocente.txtID.Value & " AND IdMateria = " & idmateria & " AND Data_prova = '" & Me.cmbData.Value & "' AND Quadrimestre = " & Me.cmbQuadrimestre.Value & " AND Tipo = '" & Me.cmbTipo.Value & "' AND Voto = " & Me.cmbVoto.Value & ""
        MsgBox "Voto eliminato correttamente!"
        
        'aggiorna la lista voti degli studenti
        Me.ElnVoti.Requery
        Me.cmbData = ""
        Me.cmbQuadrimestre = ""
        Me.cmbTipo = ""
        Me.cmbVoto = ""
        Agherbino.Close
        End If
        
    End If
    


End Sub
Vi ringrazio in anticipo per l'eventuale aiuto!