Buongiorno a tutti.
Sto progettando una maschera per l'immissione dei prodotti in una subform che si avvale di due combobox per la selezione dell'ID Prodotto e della quantità.
Una routine che intercetta l'evento click di un pulsante si occupa di compilare i controlli della subform in un nuovo record.
Ecco un'immagine:

Questo è il codice relativo al pulsante:
Private Sub cmdInserisci1_Click()
'Ricava descrizione Prodotto
Dim DescrizioneProdotto As String
DescrizioneProdotto = DLookup("Descrizione", "tabProdotti", "IDProdotto = " & Me.cboIDProdotto1)
'Ricava IDListino
Dim Listino As Integer
Listino = DLookup("IDListino", "tabClienti", "IDCliente =" & [Forms]![frmNuovaPrestazione]![cboIDCliente])
'Se la sottomaschera è vuota creo un nuovo record
Dim Count As Long
Count = DCount("[IDDettaglioPrestazione]", "qryDettagliPrestazioni", "[IDPrestazione] = " & Me.IDPrestazione)
If Count = 0 Then
Me!subfrmDettaglioPrestazioni1.SetFocus
Me!subfrmDettaglioPrestazioni1.Form!Descrizione.SetFocus
DoCmd.GoToRecord , , acNewRec
End If
'Compilo i campi della SubForm e vado ad un nuovo record
With Me![subfrmDettaglioPrestazioni1]
![PrezzoUnitarioEff] = retrieveIdPrezzoUnitario(Me.cboIDProdotto1, Listino, Me.Data)
![IDPrestazione] = Me.IDPrestazione
![IDPaziente] = Me.cboIDPaziente1
![IDProdotto] = Me.cboIDProdotto1
![Quantità] = Me.cboQuantita1
![Descrizione] = DescrizioneProdotto
![SubTotaleApllicato] = Round(![PrezzoUnitarioEff] * ![Quantità], 1)
End With
Me!subfrmDettaglioPrestazioni1.SetFocus
Me!subfrmDettaglioPrestazioni1.Form!Descrizione.SetFocus
DoCmd.GoToRecord , , acNewRec
End Sub
L'ho testata a fondo e funziona tutto correttamente.
Ho successivamente agito sulla combobox che si occupa di selezionare l'IDProdotto dal menu a tendina.
Siccome avrò un numero molto elevato di prodotti in catalogo, vorrei che alla digitazione di caratteri all'interno della combobox vengano elencati non solo i prodotti che iniziano, ma anche quelli che contengono la stringa digitata.
Per farlo ho utilizzato questo codice che intercetta l'evento KeyUp
Private Sub cboIDProdotto1_KeyUp(KeyCode As Integer, Shift As Integer)
Dim strSQL As String
strSQL = "SELECT tabProdotti.IDProdotto, tabProdotti.Descrizione" & _
" FROM tabProdotti" & _
" WHERE [Descrizione] LIKE '*" & Me.cboIDProdotto1.Text & "*'" & _
" ORDER By tabProdotti.Descrizione;"
Me.cboIDProdotto1.RowSource = strSQL
Me.cboIDProdotto1.Dropdown
End Sub
La cosa strana a cui non riesco a dare una spiegazione, è che implementando questa funzionalità ora al digitare di una stringa nella combobox tutti i record della subform spariscono.
Non riesco a trovare una spiegazione a questo comportamento e quindi non so come sistemarlo.
Avete idee?
Grazie infinite!