Condividi tramite

modificare l' immagine di un pulsante di comando al variare dell'operazione da compiere.

Anonimo
2014-12-01T13:59:27+00:00

Buongiorno a tutti, ho creato un pulsante di comando che vorrei utilizzare per scopi diversi, al quale abbinare il codice che esegue due condizioni diverse e che contemporaneamente faccia assumere allo stesso l'immagine classica di Access.

Premetto che Il pulsante in argomento dovrebbe fungere per queste operazioni

  1. inserire nuovo record;
  2. annullare l'operazione di inserimento nuovo record e tornare sul record precedente.

Ho creato il codice che vi riporto (nel pulsante per ora ho aggiunto il testo che lo descrive, ma vorrei inserire le immagini classiche di Access che indicano l'operazione di nuovo record e quella che annulla l'operazione effettuata, cioè la freccia blu ricurva a sinistra) ma ho questo problema:

Con la Caption del pulsnate di comado impostata a " Indietro" esegue la procedura contraria, cioè mi aggiunge il record anzichè tornare al precedente, dove sbaglio.

Per cortesia spiegatemi perchè fa l'esatto contrario (voglio imparare) e vi chiedo l'aiuto per visualizzare le immagini nel pulsante di comando anzichè il testo, poichè mi sembra più bello e performante da punto di vista estetico.

Grazie per l'aiuto che vorrete darmi.

Vi saluto con sincera stima e grandissimo  affetto.

Ciao, Nicola.

P.S. per  maggiore chiarezza circa il mio quesito, vi indico che all'apertura della maschera il pulsante de quo riporta il testo"Aggiungi Record".

Vi posto il codice:

Private Sub Comando83_Click()

On Error Resume Next

Me.Painting = False

Me.Comando98.Enabled = True

Call ScoloraControlli(Me)

DoCmd.GoToRecord , , acNewRec

DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

controlForm

If Me.Comando83.Caption <> "Indietro" Then

    Me.Comando83.Caption = "Indietro"

    DoCmd.RunCommand Command:=acCmdUndo

    DoCmd.GoToRecord , , acPrevious

    Call Riposiziona_Fascicolo

   controlForm1

   Exit Sub

Else

Me.Comando83.Caption = "Aggiungi Record"

End If

Me.Painting = True

End Sub

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

14 risposte

Ordina per: Più utili
  1. Anonimo
    2014-12-01T20:48:27+00:00

    Chiedo a voi tutti di spiegarmi, per favore, se quello che indico come commento a fianco di ogni riga di codice sottoriportato se è giusto come lo interpreto io:

    '''''Questo è il codice abbinato al pulsante di comando

    Private Sub Comando83_Click()

    On Error Resume Next

    Me.Painting = False

    Me.Comando98.Enabled = True

    DoCmd.GoToRecord , , acNewRec

    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

    controlForm

    If Me.Comando83.Caption <> "Indietro" Then

        Me.Comando83.Caption = "Indietro"

        'DoCmd.RunCommand Command:=acCmdUndo

        DoCmd.GoToRecord , , acPrevious

        Call Riposiziona_Fascicolo

       controlForm1

       Exit Sub

    Else

    Me.Comando83.Caption = "Aggiungi Record"

    'Me.Comando83.Picture = LoadPicture("c:\windows\argyle.bmp")

    End If

    Me.Painting = True

    End Sub  

    da qui commento il codice in base a quello che penso faccia e che voi  mi confermerete oppure no:

    all'apertura della maschera il controllo  è chiamato Aggiungi Record;

    quando clicco su questo in realtà accade questo e funziona bene:

    DoCmd.GoToRecord , , acNewRec ' il record viene regolarmente aggiunto per inserire nuovi dati

    DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

    controlForm ' con questo codice sblocco i vari controlli sulla maschera ( li abilito)

    If Me.Comando83.Caption <> "Indietro" Then ' avviene regolarmente il cambio della Caption in "Indietro"

      Me.Comando83.Caption = "Indietro"

    e da questo punto in poi che avviene il contrario e cioè con la Caption " Indietro", quando clicco sul pulsante aggiunge il record e non il contrario, cosa ho sbagliato?

    Spero di essere stato chiaro, attendo il vostro prezioso e cortese aiuto.

    P.s. questo è il link : http://1drv.ms/1vClPGw

    dove ho pubblicato il mio file ed il codice in questione è quello del pulsante chiamato Aggiungi Record nell'unica maschera che si apre.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-12-01T20:18:17+00:00

    Ciao Mimmo, mi cogli impreparato, il codice che ho impostato (DoCmd.RunCommand Command:=acCmdUndo) è stato frutto di ricerche in internet ponendo nel motore di ricerca questo:

    codice vba che annulla l'inserimento del nuovo record ecc.

    Comunque, sono a chiedere il vostro aiuto su questo:

    ritornare sul record precedente dopo aver inserito quest'ultimo e aver deciso di annullare l'operazione esattamente ciò che accade nei programmi exe quando premi il pulsante con la freccia ricurva a sinistra.

    Inoltre, non so come cambiare l'immagine del pulsante di comando come chiesto nel post precedente, ho seguito il tuo consiglio (Me.Comando83.Picture = LoadPicture("c:\windows\argyle.bmp")ma mi va in errore e non trova quell'immagine, mi aiuti a capire come fare per questo.

    Grazie e buona serata.

    Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-12-01T16:35:03+00:00

    Scusa Nicola ma non ho seguito i precedenti Posts.

    Per quel che ne sò, se l'inserimento è stato finalizzato, l'istruzione:

    DoCmd.RunCommand Command:=acCmdUndo

    non può annullare l'inserimento effettuato dell'ultimo record.

    Immagino che Undo equivale ad Esc in fase di digitazione dei valori previsti in un record, quindi, ha effetto se il record non è stato ancora inserito.

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-12-01T15:03:57+00:00

    Ciao Mimmo , grazie per il tuo intervento, non va,  con il tuo consiglio avviene solo l'aggiunta del nuovo record e non ritorna indietro.

    Con il codice che ti ho postato il cambio del nome nel pulsante di comando avviene bene ( cioè alla partenza il pulsante riporta "Aggiungi Record", al primo click cambia la Captio in "Indietro" e quello che non va è l'esecuzione del codice che dovrebbe annullare l'operazione.

    Ho verificato che da questo punto in poi il codice fa l'opposto di quello che desidero:

    DoCmd.RunCommand Command:=acCmdUndo

        DoCmd.GoToRecord , , acPrevious

        Call Riposiziona_Fascicolo

       controlForm1

       Exit Sub

    Else

    Ti saluto, Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2014-12-01T14:46:14+00:00

    Ciao Nicola,

    cambia il tuo codice :

    If Me.Comando83.Caption = "Indietro" Then

        Me.Comando83.Caption = "Aggiungi Record"

        DoCmd.RunCommand Command:=acCmdUndo

        DoCmd.GoToRecord , , acPrevious

        Call Riposiziona_Fascicolo

        controlForm1

       Exit Sub

    Else

    Me.Comando83.Caption = "Indietro"

    Per l'immagine dovresti utilizzare :

    Me.ControlName.Picture = LoadPicture("c:\windows\argyle.bmp")

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento