Cancellare record in una casella riepilogo

di il
7 risposte

Cancellare record in una casella riepilogo


Ho una casella di riepilogo a sinistra aperta su una tabella "Turni"
a questa tabella e' collegata 1 a molti una tabella "Esami" aperta su un'altra casella di riepilogo a destra
mi muovo nella prima casella riepilogo "Turni" e con un pulsante voglio poter cancellare un record da "Turni" quando non ci sono "esami" collegati
ma non trovo il modo con VBA
addirittura neanche saltando il controllo e applicando al pulsante la macro preimpostata per eliminare record
Private Sub pulCancella_Click()

Dim somma
P_NumTurno = 0
somma = 0
If Not IsNull(Me.crpElencoTurniTeoria) Then
    P_NumTurno = Me.crpElencoTurniTeoria.Value
End If
If P_NumTurno > 0 Then
    somma = DCount("*", "Esami", "COD_TURNI = " & P_NumTurno)
    If somma = 0 Then
        If MsgBox("Confermi la cancellazione", vbYesNo) Then
            'qui dovrei inserire la cancellazione record
            MsgBox ("Adesso cancello")
        End If
    Else
        MsgBox ("Impossibile cancellare" & vbCrLf & "Sono presenti uno o più Esami nel Turno")
    End If
End If
End Sub
mi aiutate a capire?

7 Risposte

  • Re: Cancellare record in una casella riepilogo

    Devi cancellare il record in Tabella con una query Action di tipo delete passando come WHERE il.criterio con la PK ed il valore restituito dalla lista... poi fai il requery.
  • Re: Cancellare record in una casella riepilogo

    Grazie Alex
    il problema era quello
    risolto con questo codice
    Private Sub pulCancella_Click()
    Dim somma
    Dim strSQL
    P_NumTurno = 0
    somma = 0
    If Not IsNull(Me.crpElencoTurniTeoria) Then
        P_NumTurno = Me.crpElencoTurniTeoria.Value
        strSQL = "Delete * From [Turni] WHERE [Turni.ID_TURNI]=" & P_NumTurno & ";"
    End If
    If P_NumTurno > 0 Then
        somma = DCount("*", "Esami", "COD_TURNI = " & P_NumTurno)
        If somma = 0 Then
            If MsgBox("Confermi la cancellazione", vbYesNo) = vbYes Then
                DoCmd.SetWarnings False
                DoCmd.RunSQL strSQL
                DoCmd.SetWarnings True
                Me!crpElencoTurniTeoria.Requery
            End If
        Else
            MsgBox ("Impossibile cancellare" & vbCrLf & "Sono presenti uno o più Esami nel Turno")
        End If
    End If
    End Sub
    Adesso ancora una cosa da controllare
    nella maschera ci sono appunto due caselle di riepilogo popolate da due tabelle diverse
    come si fa a sapere su quale delle due caselle ha il cursore (o il focus...) l'utente a momento che mi pigia un pulsante?
    ovvero
    mi pigia il pulsante cancella e come faccio a sapere se e' posizionato sulla c.riepilogo di SX o di DX ?
  • Re: Cancellare record in una casella riepilogo

    Walter61 ha scritto:


    come faccio a sapere se e' posizionato sulla c.riepilogo di SX o di DX ?
    A giudicare dall'immagine, visto che c'è quella riga selezionata nera, direi sicuramente SX.
  • Re: Cancellare record in una casella riepilogo

    Perchè ti interessa sapere quale Casella di Riepilogo ha il Focus...?
  • Re: Cancellare record in una casella riepilogo

    Perche' se il focus e' sull'elenco degli esaminandi piuttosto che sui turni d'esame potrei fare cose diverse
    ad esempio
    se doppio click o pulsante modifica e il focus e' sugli esaminandi
    potrei permettergli di spostare l'esaminando ad un altro turno
    oppure con tasto cancella permettergli di cancellare l'esaminando da quel turno e lasciarlo con 'turno vacante'
  • Re: Cancellare record in una casella riepilogo

    Walter61 ha scritto:


    Perche' se il focus e' sull'elenco degli esaminandi piuttosto che sui turni d'esame potrei fare cose diverse
    ad esempio
    se doppio click o pulsante modifica e il focus e' sugli esaminandi
    potrei permettergli di spostare l'esaminando ad un altro turno
    oppure con tasto cancella permettergli di cancellare l'esaminando da quel turno e lasciarlo con 'turno vacante'
    Fai cose semplici a prova di errore... metti PULSANDI dedicati... ed evita di complicarti le cose, oltretutto se guardo il tuo codice hai Riferimenti FISSI quindi dovresti modificare diverse cose...
  • Re: Cancellare record in una casella riepilogo

    Grazie Alex in effetti...
    comunque non mi riesco a spiegare una cosa
    anche volendo non riesco a spostare il focus sulla c.riepilogo di DX
    'Impossibile modificare. Controllo associato al campo ' ' sconosciuto"
    ma la casella dovrebbe darmi in risposta la numero 1 la PK della tabella
    e le due c.riepilogo hanno le medesime caratteristiche
Devi accedere o registrarti per scrivere nel forum
7 risposte