Modifica valore NewData

di il
3 risposte

Modifica valore NewData

Devo risolvere un piccolo probleba legato all'evento NotInList. Quando si verifica l'evento perche viene digitato un cognome ed un nome separati da virgola nella combobox di ricerca gestico l'evento NotInList aprendo la form per l'aggiunta del nuovo nome passandolo tramite OpenArgs. Nella form di aggiunta del nuovo nome il dato passato potrebbe essere modificato rispetto al NewData dell'evento NotInList per una serie di motivi ( es. nome digitato errato o diminituivo etc...). Anche se il nuovo dato viene correttamente registrato in anagrafica la combo non lo riconosce perche non corrisponde al NewData originario che non riesco a modificare mentre l'evento NotInList è in corso. Ringrazio chi vorrà darmi indicazioni.


Private Sub cboRifIdAnagrafica_NotInList(NewData As String, Response As Integer)
   
   Dim strName As String
   Dim intI As Integer
   Response = acDataErrContinue
   
   
   ' analisi ed estazione del cognome e del nome se presente
   strName = NewData
   ' Cerca la virgola che separa il cognome dal nome
   intI = InStr(strName, ",")
   If intI = 0 Then
       ' Assumere solo il cognome - impostare il predicato di prova
       strWhere = "[Cognome] = '" & strName & "'"
   Else
       ' Estrarre l'ultimo e il primo - costruire il predicato
       strWhere = "[Cognome] = '" & Left(strName, intI - 1) & "'"
       
       strWhere = strWhere & " AND [Nome] = '" & Trim(Mid(strName, intI + 1)) & "'"
   End If
   ' fine analisi ed estazione del cognome e nome
   
   
   ' Verificare che si voglia aggiungere il nuovo contatto.
   
   If MsgBox("Il nuovo nome " & StrConv(NewData, 3) & " che stai tentado di registrare" & vbCrLf & _
       "non è presente in Anagrafica! " & vbCrLf & _
       "Lo vorresti aggiungere?", vbYesNo + vbQuestion + vbDefaultButton1, _
       gstrAppTitle) = vbYes Then ' se utente sceglie di aggiungere il nuovo dato in anagrafica
       
       selTipo = 1 'seleziona il tipo di contatto come ricorrente
       
       DoCmd.OpenForm "frmAnagraficaDettPvt", DataMode:=acFormAdd, WindowMode:=acDialog, OpenArgs:=strName
       
       ' Il codice aspetterà fino alla chiusura della form anagrafica che aggiunge il nuovo nome e poi verifica che sia stato aggiunto
       
       ' verifica esistenza nuovo nome
       
       If IsNull(DLookup("idanagrafica", "qryanagrafica", strWhere)) Then
           
           ' se non trova il nuovo nome avverte con un messaggio ed esce
           MsgBox "Attenzione, qualcosa non ha funzionato." & vbCrLf & _
           "Non è stato possibile aggiungere il nome >> " & StrConv(NewData, 3) & " <<" & vbCrLf & "Potresti riprovare.", 48, gstrAppTitle
           
           ' fine verifica esistenza nuovo nome
       Else ' se la registrazione del nuovo nome è riuscita conferma l'aggiunta
           
           Response = acDataErrAdded
       End If
       
       
   Else
       MsgBox "Il nome >> " & StrConv(NewData, 3) & " << non sarà aggiunto." & vbCrLf & _
       "Il dato sarà cancellato.", vbInformation, gstrAppTitle
       
       Me!cboRifIdAnagrafica.Undo ' correggere errore cancellazione nome
       Me!cboRifIdAnagrafica.Dropdown
       Exit Sub
   End If
   
   
End Sub

3 Risposte

  • Re: Modifica valore NewData

    Mi pare che fai un pippone per nulla…

    Hai le idee chiare di quando si scatena l'evento NotInList…?

    Quando il dato inserito NON È PRESENTE… 

    Quindi mi chiedo perchè comporre la stringa WHERE…?

    La maschera di inserimento che apri saprai se hai salvato il record o meno… a cosa serve il Dlookup…?

    Ci sono almeno il 90% di righe di codice non necessarie… oltre a non sapere come lavora la Form di inserimento Anagrafica…

    Dai una studiata a questo… il tuo esempio non è il primo… anche se operi in maschera esterna è comparabile con quello della query insert o DAO

    https://learn.microsoft.com/en-us/office/vba/api/access.combobox.notinlist

  • Re: Modifica valore NewData

    Crossposting (a circa 12 minuti di distanza da questo)

    https://answers.microsoft.com/it-it/msoffice/forum/all/gestire-cambiamento-newdata/46cb7183-8e54-44bd-9135-93403ce34225

  • Re: Modifica valore NewData

    Qui il cross posting non è ammesso, invito l'autore della discussione a leggere il regolamento prima di postare.

    Chiudo il thread

Devi accedere o registrarti per scrivere nel forum
3 risposte