Problema con cancella record

di il
7 risposte

Problema con cancella record

Sera a tutti,
sto diventando matto per una cosa che proprio non capisco... spero in una imbeccata.
allora io ho questo codice:
Private Sub elimina_Click()

Dim intRisposta As Integer
intRisposta = MsgBox("stai per eliminare questa prenotazione", vbOKCancel, "CANCELLAZIONE PRENOTAZIONE")
If intRisposta = vbCancel Then
   ' qui se hai premuto Annulla
Else
   ' qui se hai premuto OK
   DoCmd.RunMacro "Macroannullaprenotazione"
End If

Me.Requery

End Sub
e funziona perfettamente tutto, poi per evitare errori di digitazione volevo aggiungere che se non togli il flag dalla casella di controllo la macro non parte, quindi...
Private Sub elimina_Click()

If Me!completato = True Then
Exit Sub
End If

Dim intRisposta As Integer
intRisposta = MsgBox("stai per eliminare questa prenotazione", vbOKCancel, "CANCELLAZIONE PRENOTAZIONE")
If intRisposta = vbCancel Then
   ' qui se hai premuto Annulla
Else
   ' qui se hai premuto OK
   DoCmd.RunMacro "Macroannullaprenotazione"
End If

Me.Requery

End Sub
funziona anche questo ma il problema che dopo aver eseguito la macro esce l'errore "errore di run-time '3167' record eliminato"
e non fà il requery quindi vedo la maschera con i campi "#eliminato" cosa che nel primo caso non accade.

grazie

7 Risposte

  • Re: Problema con cancella record

    Aggiungo...
    Private Sub elimina_Click()
    
    'If Me!completato = True Then
    'Exit Sub
    'End If
    
    Dim intRisposta As Integer
    intRisposta = MsgBox("stai per eliminare questa prenotazione", vbOKCancel, "CANCELLAZIONE PRENOTAZIONE")
    If intRisposta = vbCancel Then
       ' qui se hai premuto Annulla
    Else
       ' qui se hai premuto OK
       DoCmd.RunMacro "Macroannullaprenotazione"
    End If
    
    Me.Requery
    
    End Sub
    pure così mi da lo stesso errore... con la virgoletta davanti per non far leggere quella riga
  • Re: Problema con cancella record

    Se è vero che la macro funziona prova a modificare il codice nel seguente modo:
    
    Private Sub elimina_Click()
    
    If Me!completato = True Then Exit Sub
    
    Dim intRisposta As Integer
    intRisposta = MsgBox("stai per eliminare questa prenotazione", vbOKCancel, "CANCELLAZIONE PRENOTAZIONE")
    If intRisposta = vbCancel Then
       ' qui se hai premuto Annulla
    Else
       ' qui se hai premuto OK
       On Error Resume Next	'che dovrebbe intercettare l'eventuale errore e quindi spostare l'esecuzione sulla riga successiva ovvero End If
       DoCmd.RunMacro "Macroannullaprenotazione"
    End If
    
    Me.Requery
    
    End Sub
  • Re: Problema con cancella record

    Grazie Stifone,
    ma anche così mi da errore e si ferma sul requery
  • Re: Problema con cancella record

    No scusa,
    non va in errore ma il requery non mi aggiorna la maschera levando il record cancellato...

    poi ho provato sul finale a dare un refresh prima del requery, non so se è il modo giusto pero' così funziona
  • Re: Problema con cancella record

    Non si fa refresh prima del requery..
    Ma se il flag è True non può passare di li... fai debug mettendo un breackpoint e seguendo con F8
  • Re: Problema con cancella record

    Potino ha scritto:


    funziona anche questo ma il problema che dopo aver eseguito la macro esce l'errore "errore di run-time '3167' record eliminato"
    e non fà il requery quindi vedo la maschera con i campi "#eliminato" cosa che nel primo caso non accade.
    La prima versione non aveva problemi, la seconda dà grane. Dov'è il controllo "Completato"? Cosa contiene la mac... mac... mac... sì, insomma, quella cosa che finisce con "annullaprenotazione"?
    (VBA è bene, macro è male)
    Aggiungo: a volte quel problema si risolve con un compatta e ripristina. Backup e tentativo.
  • Re: Problema con cancella record

    @Alex ha scritto:


    fai debug mettendo un breackpoint e seguendo con F8
    Ciao Alex,
    ho fatto come hai detto, ho messo apostrofo prima del refresh lasciando solo il requery poi ho seguito con f8.

    Prima di tutto preciso che la maschera in oggetto si chiama Prenotazioni e contiene la sottomaschera Anagrafica Cliente e le sottomaschere dove si vedono gg per gg le prenotazioni.
    al rigo

    Potino ha scritto:


    DoCmd.RunMacro "Macroannullaprenotazione"
    esegue la macro che prima azzera la camera prenotata facendola risultare libera (sottomaschere in basso verde libera rossa occupata) poi apre Anagrafica Cliente e elimina il record (cancellando i dati dalla sottomaschera anagrafica cliente) poi elimina il record di Prenotazioni.
    Dopo questo passaggio la sottomaschera anagrafica cliente ha i campi con la scritta #annullato e i dati sulla maschera ancora visibili anche se il record è stato cancellato.
    Poi dopo il requery la sottomaschera anagrafica cliente ha i campi vuoti mentre la maschera ha i campi con la scritta #annullato ed esce l'errore.
    Ovviamente fatto la stessa prova abilitando il refresh, i campi della sottomaschera diventano vuoti e quelli della maschera con #annullato e al requery tutto vuoto senza errori

    Philcattivocarattere ha scritto:


    (VBA è bene, macro è male)
    Ti avevo già letto in un'altro post che balbetti se scrivi o leggi ma*** ed è meglio che non ti dica che quella è la prima di una serie ops... mi è scappato. Scherzo ovviamente, sono imposta valore in base a determinate condizioni, se è 1 fai la due, se è 2 fai la 3 10 volte etc.. tutto in VBA adesso è un po' troppo per me.

    Philcattivocarattere ha scritto:


    Dov'è il controllo "Completato"?
    Sulla maschera Prenotazioni... non sottomaschere o altre maschere ma su quello non ho problemi.

    aggiungo immagine
    Allegati:
    29278_f694bac5c85f585a9882eb40c31273cf.jpg
    29278_f694bac5c85f585a9882eb40c31273cf.jpg
Devi accedere o registrarti per scrivere nel forum
7 risposte