Grazie di tutto
Fabio
RISPOSTA:
Non inviare messaggi in html, grazie.
Nell'Help, alla voce "Non in elenco", c'è proprio un esempio che spiega come
fare...
Ciao.
Grazie della disponibilità
Fabio
--
Posted from [212.177.135.172]
via Mailgate.ORG Server - http://www.Mailgate.ORG
*****************************************************+
L'esempio dovrebbe essere questo che ti riporto integralmente:
(da Maschera - Struttura - Casella Combinata - Help su NonInElenco -
EventoNonInElenco
Routine Evento - EventoNonInElenco - Routine Evento - Esempio )
-------------------------------------------------------------------------
Evento NonInElenco - Esempio di routine evento
Nell'esempio riportato di seguito si utilizza l'evento NonInElenco per
aggiungere una voce a una casella combinata.
Per provare l'esempio, creare in una maschera una casella combinata chiamata
Colori. Impostare a Sì la proprietà Solo in elenco della casella combinata.
Per riempire la casella combinata, impostarne la relativa proprietà Tipo
origine riga a Elenco valori e fornire un elenco di valori separati da punti
e virgola come impostazione della proprietà Origine riga. È possibile ad
esempio fornire i valori seguenti come impostazione di questa proprietà:
Rosso; Verde; Blu.
Aggiungere quindi la routine evento riportata di seguito alla maschera.
Passare alla visualizzazione Maschera e immettere un nuovo valore nella
parte testo della casella combinata.
Private Sub Colori_NotInList(NewData As String, _
Response As Integer)
Dim ctl As Control
' Restituisce l'oggetto Control che fa riferimento alla casella
combinata.
Set ctl = Me!Colori
' Richiede di verificare se si desidera aggiungere un nuovo valore.
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.
ctl.RowSource = ctl.RowSource & ";" & NewData
Else
' Se si sceglie Cancel, si elimina il messaggio di errore
' e si annullano le modifiche.
Response = acDataErrContinue
ctl.Undo
End If
End Sub
Nota L'esempio riportato sopra aggiunge una voce a una casella combinata
non associata. Quando si aggiunge una voce a una casella combinata
associata, si aggiunge un valore a un campo dell'origine dati sottostante.
Nella maggior parte dei casi, non è possibile aggiungere semplicemente un
campo in un nuovo record. Secondo la struttura dei dati contenuti nella
tabella, è probabilmente necessario aggiungere uno o più campi per
soddisfare le richieste dei dati. È necessario ad esempio che il nuovo
record includa i valori per qualsiasi campo che comprende la chiave
primaria. Se è necessario aggiungere voci in modo dinamico a una casella
combinata associata, è necessario richiedere all'utente di immettere i dati
per tutti i campi richiesti, salvare il nuovo record e quindi rieseguire la
query sulla casella combinata per visualizzare il nuovo valore.
----------------------------------------------------------------------------
---------------------
Mi pare pero' che la cosa aggiorni un elenco di valori da fornire ma non un
campo in una tabella.
Io in un caso del genere avevo trovato un esempio su di un testo ed era il
seguente:
__________________________________________________________________
Option Compare Database
Option Explicit
Const conNomeApp = "Riviste"
----------------------------------------------------------------------------
---------------------
Public Function VisualizzaMessaggio(strMessaggio As String)
' Visualizza il messaggio della stringa strMessaggio, nel bos con punto
esclamativo
MsgBox strMessaggio, vbExclamation, conNomeApp
End Function
Public Function Conferma(strMessaggio As String) As Boolean
'Chiede di confermare una azione, restituendo True o False
Dim bytScelta As Byte
bytScelta = MsgBox(strMessaggio, vbQuestion, conNomeApp)
If bytScelta = vbOK Then
Conferma = True
Else
Conferma = False
End If
End Function
___________________________________________-
Questa parte è un modulo generale che imposta la costante "Riviste" che è il
nome della applicazione
e la funzione Conferma che è un messaggio di uso generale richiamato poi con
una stringa del mes-
saggio specifico.
Nella maschera con la cesella combinata avevo messo: vedi sotto
(dove Utilizzo è il nome della tabella richiamata dalla cesella combinata e
TipoUtilizzo è il campo
da aggiornare con il nuovo valore immesso non in elenco)
Purtroppo il tutto funzionava in Access97 ma non funziona in Access2000 e
non sono riuscito a
capirne il motivo.
Auguri. Enzo
--
enzo...@mclink.it
Enzo Radice Sola
__________________________________________________________________
Private Sub CasellaCombinata27_NotInList(NewData As String, Response As
Integer)
Dim strMessaggio As String
Dim dbsRiviste As Database
Dim rstUtilizzo As Recordset
strMessaggio = "Sei sicuro di voler aggiungere ' " & NewData & " '
all'elenco degli utilizzi?"
If Conferma(strMessaggio) Then
Set dbsRiviste = CurrentDb()
Set rstUtilizzo = dbsRiviste.OpenRecordset("Utilizzo")
rstUtilizzo.AddNew
rstUtilizzo!TipoUtilizzo = NewData
rstUtilizzo.Update
Response = acDataErrAdded
Else
Response = acDataErrDisplay
End If
End Sub