ComboBox chiudere Elenco Valori da Vba

di il
6 risposte

ComboBox chiudere Elenco Valori da Vba

Salve a tutti 

Descrizione:

  • IdProduct è una combobox inserita in una form in visualizzazione Foglio Dati ed è un campo del recordsource
    • consente solo elementi presenti nell'elenco
    • non consente modifiche all'elenco
    • non consente valore null
    • ha due colonne di cui la prima lunghezza = 0 (non visibile = Id key primaria)
    • colonna associata = 1 (espone il codice del prodotto di tipo string)
  •  Se immesso un valore non presente nell'elenco allora si apre la form di ricerca prodotti
    • se da ricerca viene ritornato un valore valido allora si assume il valore e si procede all'inserimento del record
    • se dalla ricerca non viene selezionato nessun prodotto allora esegui Undo per ripristinare la combobox

Problema: 

Quando ritorna dalla ricerca senza aver selezionato nessun prodotto:

Me.Undo elimina i caratteri di ricerca immessi nella combobox (e questo va bene sia in fase di edit che di insert record)

Ma non riesco a chiudere l'elenco della combobox. 

Ho provato di tutto, con setfocus sulla combo, con setfocus su un altro controllo e poi a ridare il focus alla combo, con cancelevents, con Dropdown… etc..
ma niente da fare, la combobox si ripresenta sempre con l'elenco aperto.
Solo con il SendKeys "{ESC}" riesco a chiudere l'elenco, ma questo metodo proprio non mi piace.  Esiste un metodo più ortodosso? 

Questo la routine dove nell' Else della IF devo resettare la combobox così come se non fosse mai successo nulla :

' SET SEARCH
Private Sub IdProduct_NotInList(NewData As String, Response As Integer)
' run search
lngIdProductSearch = 0
DoCmd.OpenForm "Frm_ProductSelect", acNormal, , , , acDialog, NewData
' set return value search
If lngIdProductSearch <> 0 Then
   Me.IdProduct = lngIdProductSearch
   ' retrive price
   MyRetrivePrice
   Me.DocQuantity.SetFocus
Else
   Me.Undo
   SendKeys "{ESC}"
End If
' set response
Response = acDataErrContinue
End Sub

esempio:

Ricerca prodotti "mele"

Dalla ricerca non ho selezionato nulla e quindi ritorno all'inserimento… e l'elenco rimane aperto (noto anche 
che si è posizionato sull'ultimo elemento della combobox)

Ma come caspiterina si chiude sto coso ;))


Grazie !

6 Risposte

Devi accedere o registrarti per scrivere nel forum
6 risposte