Newsgroup: it.comp.appl.access
Titolo: SOS Casella combinata aggiungere nuovo valore

ho una maschera (abbinata ad una tabella "anagrafe") in cui vi è un
controllo "Codice fiscale" abbinato al campo CF della tabella "anagrafe"
tale campo è sia indice che relazione con un altra tabella
Vorrei che quando si inserisce un CF , si affina la ricerca se è gia
esistente tipo come per le caselle combinate, ma che mi possa permettere
di inserirne uno nuovo se in archivio non esiste.
ho provato a fare una casella combinata ma un nuovo valore non mi permette
di inserirlo.
come posso fare? evitando anche di inserire duplicati.
luigi
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel messaggio 
news:f9pcpf$fbr$1...@news.newsland.it...

Sostituisci il termine medico con il nome della casella che contiene il cod 
fisc
dovrebbe funzionare
Io uso questa routine per aggiungere nuovi nomi di medici alla tabella 
medici, il tutto dalla casella combinata medico. la seguente routine va 
inserita nell'evento non il elenco..
Private Sub medico_NotInList(NewData As String, Response As Integer)
Dim rs As Recordset
Dim ctl As Control
Set ctl = Me.medico
Dim messaggio As String
messaggio = "Aggiungere il medico " & UCase(NewData) & "?"
'richiesta conferma per nuova aggiunta medico
If MsgBox(messaggio, vbOKCancel) = vbOK Then
        Response = acDataErrAdded
        Set rs = CurrentDb.OpenRecordset("medici")
        rs.AddNew
        rs.Fields("medico") = StrConv(NewData, 3)
        rs.Update
        rs.Close
        Set rs = Nothing
    Else
        'se no sceglie il pulsanta annulla
        Response = acDataErrContinue
        ctl.Undo
End If
End Sub
Ciao NSantini 

 luigi
Con il seguente codice quando digiti il CF nell'uscire dalla comboBox vieni 
avvertito se il Cf esiste gia' con la scelta, qualora il dato sia già 
censito, di spostarsi sul record esistente.
Private sub TuaCombo_beforeupdate(cancel as integer)
Dim vCodFisc
If Not IsNull(DLookup("CF", "anagrafe", _
    "CF = " & Chr$(34) & Me!CF & Chr$(34))) _
    And Me!CF <> Nz(Me!CF.OldValue) Then
    If MsgBox("Il Codice Fiscale: " & Me!CF & " già esiste." & Chr(10) & 
"Vuoi passare al record esistente?", vbYesNo + vbCritical, "Duplicato!") = 
vbNo Then
  Cancel = True
Else
If MsgBox("Sei sicuro di voler annullare le modifiche e/o l'inserimento 
corrente?", vbYesNo + vbCritical, "Attenzione") = vbYes Then
vCodFisc = Me.CF.Text
Me.CF.Undo
DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
DoCmd.FindRecord vCodFisc, acAnywhere, , acSearchAll, , acAll
Else
Cancel = True
end if
end if
end if
end sub
-- 
Ciao
Access 

 end sub
NON TANGE!  e non so dove sbaglio!



Vediamo di fae il punto: hai una maschera collegata alla tabella tbAnagrafe 
la quale ha una campo CodFisc che ha il corrispettivo controllo nella 
maschera. Se così è, crea una casella combinata con l'autocomposizione e in 
questa fase segli "trova un record... ecc" vai avanti e ti chiede quali 
campi scegliere. Scegli la chiave e il campo CodFisc. Vai avanti fino alla 
fine e ti ritrovi con una casella combinata che "affina la ricerca se è già 
esistente". Se non c'è non solo smette di afffinare la ricerca e quindi 
potrai agire sul pulsante Esc e andare a nuovo record e inserire la nuova 
anagrafica. Oppure puoi sfruttare l'evento su non in elenco e inserire il 
codice tipo questo:
Private Sub CasellaCombinata22_NotInList(NewData As String, Response As 
Integer)
DoCmd.CancelEvent
Me.CasellaCombinata22 = ""
DoCmd.GoToRecord acActiveDataObject, , acNewRec
DoCmd.GoToControl "cognome"
Me.cognome = UCase(NewData)
Response = acDataErrContinue
End Sub
che devi personalizzare per la tua maschera.
Ciao- NSantini