Newsgroup: it.comp.appl.access
Titolo: MsgBox se non in elenco

Sto provando questo codice per inserire un messaggio nel caso si scelga
un valore non in elenco nella mia combo
Private Sub cittadinanza_NotInList(NewData As String, Response As
Integer)
If MsgBox("Attenzione! State inserendo un valore non in elenco.
Verificate che non vi sia già una voce corrispondente. Questo campo
viene riportato  in alcuni documenti collegati, ricordarsi di inserire
la cittadinanza es: italiana e non il nome dello stato es: Italia.
Aggiungere comunque la nuova voce?", vbYesNo + vbInformation) = vbYes
Then
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub
Se inserisco un nuovo valore mi compare il mio MsgBox, scegliendo OK
però spunta la finestra che mi avvisa che ho scelto un valore non in
elenco e mi rimanda a sceglierne uno tra quelli in elenco
(ho impostato il valore "Solo in elenco" a si, se la imposto a no non
accade nulla).
Se invece nel MsgBox scelgo annulla mi rimanda correttamente
all'elenco.
Come posso evitare la finestra di access che mi dice di aver scelto una
voce non in elenco?

 ha scritto nel messaggio news:1151667694....@p79g2000cwp.googlegroups.com...



Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub

[risposta]
Impostando a no la proprietà "solo in elenco" riesci a gestire tu l'errore tramite proprio l'evento "non in elenco".
Nella tua routine ti manca l'istruzione che ti permette di inserire il nuovo valore nell'elenco.
Per semplificare potrebbe essere:
'---
If MsgBox("Valore non presente nell'elenco. Aggiungere?", vbOKCancel) = vbOK Then
' Imposta l'argomento Response per indicare che i dati vengono aggiunti.
    Response = acDataErrAdded
' qui servono le istruzioni per aggiungere il nuovo valore
Else
    ' Se si sceglie Cancel, si elimina il messaggio di errore e si annullano le modifiche.
    Response = acDataErrContinue
    Me!nomeCasellaCombinata.Undo '<-- annullo l'inserimento
End If
'---
Ora bisognerebbe sapere la casella combinata che origine riga ha, se una query su una tabella o un elenco di valori...
Ciao.
-- 
Sergio MAZZA 

Sergio MAZZA ha scritto:

La casella combinata ha come origine riga la tabella cittadinanze che
ho ottenuto con una query di creazione tabella dopo aver raggruppato
per cittadinanza.
Ora provo subito il codice che mi hai postato

Searc...@yahoo.it
 ha scritto:

Prendendo spunto anche dall'help ho provato questo:
Dim ctl As Control
Set ctl = Me!CasellaCombinata182
If MsgBox("Valore non presente nell'elenco. Aggiungere?", vbOKCancel) =
vbOK Then
Response = acDataErrAdded
ctl.RowSource = ctl.RowSource & ";" & NewData
Else
Response = acDataErrContinue
ctl.Undo
End If
End Sub
Se imposto solo in elenco a no si prende il nuovo valore senza batter
ciglio...

 ha scritto nel messaggio news:1151671550.2...@x69g2000cwx.googlegroups.com...
Prendendo spunto anche dall'help ho provato questo:
Dim ctl As Control
Set ctl = Me!CasellaCombinata182
If MsgBox("Valore non presente nell'elenco. Aggiungere?", vbOKCancel) =
vbOK Then
Response = acDataErrAdded
ctl.RowSource = ctl.RowSource & ";" & NewData
Else
Response = acDataErrContinue
ctl.Undo
End If
End Sub
Se imposto solo in elenco a no si prende il nuovo valore senza batter
ciglio...
[risposta]
Difatti era quello che ti dicevo; impostare a no la proprietą "solo in elenco", ma l'esempio non č quello che ti serve, perché va 
bene per un elenco di valori "fisso", tu invece hai un elenco dinamico preso dalla tabella.
Quindi un nuovo inserimento deve essere scritto in tabella e fare anche un requery della casella combinata...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Per favore Sergio, prima che io e te a furia di sentirci ci fidanziamo
:) postami il codice che mi servirebbe, da solo non so proprio come
arrivarci...
come ti ho detto l'origine riga è la tabella che ho creato, e la combo
va ad alimentare il mio campo cittadinanze che poi viene raggruppato
dalla query di creazione tabella.
Se ti servono altri dati fammi sapere...mi spiace impegnarti per tutto
questo tempo...


Dai un'occhiata s u 
www.accessgroup.it
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 questo tempo...
ops, il tuo amore è tempo??? Ti fai pagare???
Ahh ma allora io lo chiamo in tutt'altro modo!!!


MA ha scritto:

Intanto non è carino intromettersi così in un fraseggio amoroso... :)
Scherzi a parte, non scambiamo l'ironia e la riconoscenza con altro
please....

 please....
Non è colpa tua, è Sergio che fa pensare a male


MA ha scritto:

Ragazzi, ho risolto diversamente, mi sono messo a compilare una tabella
cittadinanze ad hoc e se qualcuno inserisce dati a capocchia sarà
fustigato direttamente senza MsgBox.
Grazie comunque, è un gran bel NG e credo proprio mi iscriverò.
A presto.

 ha scritto nel messaggio news:1151672361.6...@d56g2000cwd.googlegroups.com...
Per favore Sergio, prima che io e te a furia di sentirci ci fidanziamo
:) postami il codice che mi servirebbe, da solo non so proprio come
arrivarci...
come ti ho detto l'origine riga č la tabella che ho creato, e la combo
va ad alimentare il mio campo cittadinanze che poi viene raggruppato
dalla query di creazione tabella.
Se ti servono altri dati fammi sapere...mi spiace impegnarti per tutto
questo tempo...
[risposta]
Ti rispondo comunque, anche se non mi vuoi piů.
'--
If MsgBox("Valore non presente nell'elenco. Aggiungere?", vbOKCancel) = vbOK Then
' Imposta l'argomento Response per indicare che i dati vengono aggiunti.
    Response = acDataErrAdded
' Aggiunge la stringa nell'argomento NewData a origine riga.
    Dim rst As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("nomeTabella")
    rst.AddNew
    rst!nomeCampo = NewData
    rst.Update
    rst.Close
    Set rst = Nothing
Else
    ' Se si sceglie Cancel, si elimina il messaggio di errore e si annullano le modifiche.
    Response = acDataErrContinue
    Me!nomeCasellaCombinata.Undo
End If
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Grazie mille in ogni caso Sergio, sei sempre nel mio cuore :))))