Newsgroup: it.comp.appl.access
Titolo: Casella combinata per ricerca record: come gestire il Non in elenco?

Ho una maschera nella quale ho posizionato una casella combinata per la
ricerca del record che mi interessa. Tutte le volte che inserisco un nome
che non fa parte dei record già presenti uso il tasto Esc e vado a Nuovo
record.
Vorrei sfruttare la proprietà Su non in elenco per richiamare una macro che
mi vada ad aprire un nuovo record. L'ho fatto, attivando l'azione Vai a
record > Nuovo e inserendo anche gli altri elementi richiesti... è successo
il finimondo.
Il primo ad apparire è stato un messaggio di Errore di stack, memoria
insufficiente (96MB con solo Access 97 caricato mica sono bruscolini), poi a
sequenza ciclica "Il testo immesso non corrisponde ecc.." OK "Impossibile
passare al record specificato" OK "Azione macro non riuscita" OK e di nuovo
"Il testo immesso..." senza venirne fuori. Ho dovuto ricorrere ai tasti
Ctr+Alt+Canc per chiudere Access97.
In definitiva, vorrei poter immettere nella casella combinata un cognome che
se non è nell'elenco dei record presenti mi apra una nuovo record e mi
consentisse di continuare a inserire il resto delle informazioni per quel
nuovo record.
Potreste aiutarmi? Grazie
--
Cordiali Saluti
N.Santini

 wrote in message
a3FT6.12639$Zo3.1...@news1.tin.it...

_____________
In una maschera con una casella combinata Cliente (che effettua una ricerca
nelle sottoschede)
ho inserito:
Private Sub AggiungiCliente()
On Error GoTo Err_AggiungiCliente
    Dim lngClienteID As Long
    If IsNull(Me![Cliente]) Or Me!Cliente = "" Then
        Me![Cliente].Text = ""
    Else
        lngClienteID = Me![Cliente]
        Me![Cliente] = Null
    End If
    Me.Visible = False
    DoCmd.OpenForm "Clienti_Caricamento", , , , acFormAdd, , "GotoNew"
    Me![Cliente].Requery
    If lngClienteID <> 0 Then Me![Cliente] = lngClienteID
Exit_AggiungiCliente:
    Exit Sub
Err_AggiungiCliente:
    MsgBox err.Description
    Resume Exit_AggiungiCliente
End Sub
Private Sub Cliente_NotInList(NewData As String, Response As Integer)
Dim strMess As String
strMess = "E' stata inserito un Nominativo non caricato!" & vbCrLf & vbCrLf
& "Lo si vuole aggiungere?"
If MsgBox(strMess, vbInformation + vbOKCancel) = vbOK Then
    Response = acDataErrContinue
    AggiungiCliente
Else
    Response = acDataErrContinue
    Me.Cliente = ""
    Me.Requery
End If
End Sub
funziona perfettamente.
ciao Riccardo

Costui un dì scrisse:

Nella tabella principale di inserimento (es rubrica), inserisci l'opzione 
di ricerca automatica su un'altra tabella (es. cognomi).
Crea le maschere.
Apri la maschera "cognomi" in modalità struttura e, in corrispondenza del 
campo cognome, apri la scheda proprietà.
Vai sulla sottoscheda "tutte" e in corrispondenza di "in uscita", applica 
una "routine evento".  Poi, tramite i tre puntini, entra nell'evento e 
nella seconda riga, dai un apazio TAB e scrivi: 
"nome del campo".Requery
Apri poi la maschera principale rubrica in modalità struttura, posizionati 
sul campo cognome e clicca tasto dx per proprietà.
Su scheda "proprietà", alla sottoscheda "tutte", in corrispondenza di 
"doppio click", clicca sui tre puntini e seleziona "genera macro".
Dai un nome alla macro (es. cognome) e dalgi il comando "ApriMaschera".
Nel dettaglio scheda, seleziona la maschera che vuoi aprire (cognomi).
Poi, in corrispondenza di "su attivazione" inserisci "routine evento", 
entraci e scrivi:
"nome del campo".Requery.
(il nome del campo, lo trovi, quando entri nella "routine evento", alla 
prima riga.
Facendo questo, quando dal campo dove c'è la casella combinata ti accorgi 
che non c'è un cognome, tramite un doppio click sul campo stesso, si apre 
la maschera "cognomi" dove puoi fare il tuo nuovo inserimento.
C'è bisogno di "Requery", perchè access non aggiorna automaticamente gli 
inserimenti quindi, se lo ometti, si apre si la maschera "cognomi" dove 
puoi inserire il nuovo record, però, una volta chiusa, non lo ritrovi nella 
casella combinata.
E' più difficile a dirsi che a farsi, ma spero di esser stato abbastanza 
chiaro.
ciao
-- 
\\\f=l=e=x=e=r///