Valore bob in elenco in loop

di il
13 risposte

Valore bob in elenco in loop

Ciao a tutti,

in una maschera persone, ho una combo con l'elenco istituto; per aggiungere un nuovo elemento, in corrispondenza dell'evento "Su non in elenco" attivo una nuova maschera in cui inserire il nuovo istituto (con aggiornamento del Data Base). Fin qui tutto bene nel senso che il nuovo record viene creato.
Private Sub istituto_NotInList(NewData As String, Response As Integer)
Dim intReturn As Integer
intReturn = MsgBox(NewData & " non esiste nella lista Istituti. Vuoi inserirlo?", vbYesNo)
If intReturn = vbYes Then
DoCmd.OpenForm "addistituto", , , , acFormAdd, acDialog, NewData
Else
End If
Response = acDataErrContinue
End Sub
Quando però ritorno alla maschera persone di origine mi succede che si attiva ancora l'evento "Su non in elenco" della combo istituto. Come posso fare per dirgli che è tutto a posto?
Qualcuno mi sa dare un suggerimento su come procedere?

Grazie e buona giornata

13 Risposte

  • Re: Valore bob in elenco in loop

    Le combo lo fanno in automatico. Senza bisogno di codice in nessun evento
    Devi impostare permetti aggiunte su si ed eredita valori su si ed impostare la maschera di immissione dati.
    A meno che non hai una versione veramente vintage di access.
    Se invece non vuoi o non puoi utilizzare l automatismo, devi impostare una variabile globale ed usarla come check, in modo che quando ritorna su non in list puoi confrontarla ed uscire dalla sub.
  • Re: Valore bob in elenco in loop

    Prova a scrivere prima di Else
    Me!istituto.Requery
  • Re: Valore bob in elenco in loop

    Ho risolto aggiungendo alla funzione questo codice
    Response = acDataErrAdded
    Me!NAZIONE.Undo
    Me!NAZIONE.Requery
    
  • Re: Valore bob in elenco in loop

    Mi si corregga se sbaglio (agli utenti più esperti), ma a rigore di (mia) logica ha senso mettere Requery subito dopo DoCmd.OpenForm, cioè entro la condizione True di If=Yes. Se si risponde No, non occorre manomettere nulla. Inoltre Undo...non so a cosa serva...io non l'ho mai usato. Riepilogando
    Private Sub istituto_NotInList(NewData As String, Response As Integer)
    Dim intReturn As Integer
    intReturn = MsgBox(NewData & " non esiste nella lista Istituti. Vuoi inserirlo?", vbYesNo)
    If intReturn = vbYes Then
    	DoCmd.OpenForm "addistituto", , , , acFormAdd, acDialog, NewData
    	Me!istituto.Requery
    	Else
    End If
    Response = acDataErrContinue
    End Sub
  • Re: Valore bob in elenco in loop

    Le combo lo fanno da sole......(e penso che gia access 2002 aveva la funzione integrata)
  • Re: Valore bob in elenco in loop

    Per quello che ne so io:
    DoCmd.OpenForm "addistituto", , , , acFormAdd, acDialog, NewData
    acDialog crea una situazione "sincrona" e impedisce al codice VBA di proseguire le istruzioni successive. Nella situazione sincrona la maschera addistituto è aperta, accoglie il NewData compilando il nuovo record. Una volta compilato completamente il record in addistituto...l'operazione più spontanea da parte dell'utente è quella di chiudere la maschera addistituto. A questo punto il codice che si era fermato continua a seguire le istruzioni successive. La combobox non sa ancora nulla di cosa è accaduto in addistituto e necessita di Requery.
  • Re: Valore bob in elenco in loop

    Confesso che questo è uno di quei post dove per me, è persino difficile comprendere la richiesta.
    Titolo del post : Valore bob in elenco in loop -> che caspita significa ? Di cosa stiamo parlando ? Di qualche figura di pattinaggio artistico? Bob vs Slittino?

    lucavalentino ha scritto:


    ...Quando però ritorno alla maschera persone di origine mi succede che si attiva ancora l'evento "Su non in elenco" della combo istituto.

    lucavalentino ha scritto:


    Ho risolto aggiungendo alla funzione questo codice
    Response = acDataErrAdded
    Me!NAZIONE.Undo
    Me!NAZIONE.Requery
    
    Quindi il problema è su un combobox denominato istituto e la soluzione al problema è Annullare le modifiche ad un altro combobox (si presume) denominato NAZIONE ??? Ma veramente possiamo/dobbiamo crederci???

    E' così difficile provare a rileggere con un minimo di attenzione quello che si scrive ?
  • Re: Valore bob in elenco in loop

    L'unica cosa che ho capito è che voleva scrivere

    non
  • Re: Valore bob in elenco in loop

    Ecco chi era bob ed io che credevo c'etrassero i Kennedy
  • Re: Valore bob in elenco in loop

    max.riservo ha scritto:


    ...
    E' così difficile provare a rileggere con un minimo di attenzione quello che si scrive ?
    Concordo, infatti segnalarerei alla prima la "superficialità" recuperabile... poi opterei per astensione, visto che le critiche pare difficilmente vengono capite, anzi la sindrome di calimero spopola, ma se non si risponde più... forse capiscono meglio.
  • Re: Valore bob in elenco in loop

    lucavalentino ha scritto:


    Ho risolto aggiungendo alla funzione questo codice
    Response = acDataErrAdded
    Me!NAZIONE.Undo
    Me!NAZIONE.Requery
    
    Nel copiare il codice ho sbagliato intendevo Istituto.
    Cosa nin va nel codice sopra
  • Re: Valore bob in elenco in loop

    Non
    Non
    Non

    Prova ad esercitarti
  • Re: Valore bob in elenco in loop

    Di suggerimenti e soluzioni ne sono stati dati tanti, quindi penso che ora la palla possa tornare allo sviluppatore che li deve mettere in pratica.
    Inoltre ci possono essere decine di altre soluzioni.
    Del tipo non aprire la maschera di immissione ma aggiungere direttamente il record nella tabella, e poi requery.
    Usare dlookup su null per uscire dalla sub e poi requery.
    Usare una variabile globale come check e poi requery.
    Usare la funzione integrata della combo, che il requery lo fa da sola.
    Oppure mettere requery al codice originale.
    un requery salverà il mondo.
    Requery a tutti.

    Però quando si copia da internet un codice, dovresti capire anche il contesto e quello che fa.
    Quell undo che cosa dovrebbe fare in questa situazione?
    Chiedo perché non usando questo sistema per aggiungere nuove voci, cosi a naso è messo li a caso.
Devi accedere o registrarti per scrivere nel forum
13 risposte