Per più performante intendo dire la modalità di composizione
della query. Ma credo che a questo punto sia secondario.
Fai le sostituzioni che ti suggerisco di seguito. Poi guarda
bene il tuo codice.
Benchè tu componga una query SQL, non la esegui mai, ma
apri sempre solo la tabella Alcolici senza mai filtrarla,
per cui ti ritrovi sempre il primo record.
codice:
' Sostituisci
sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['tequila';'secco']"
' Con
sql = "SELECT * FROM Alcolici WHERE Ingredienti IN ('tequila','secco')"
' E
sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['rum';'dolce']"
' Con
sql = "SELECT * FROM Alcolici WHERE Ingredienti IN ('rum','dolce'])
Poi :
1) Apri la connessione una sola volta
2) Apri il recordset dentro le if e con la SQL
Ti riporto le correzioni.
Ancora una cosa : fai la close del recordset prima di
conservarti i valori del record da qualche parte.
Prima ti trovava il primo record solo per sbaglio. Ora
dovrebbe trovarlo per calcolo. Gestisci il record prima
di chiudere il recordset.
codice:
m_cnConnessioneADO.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Documents and Settings\Mirco Web Master\Documenti\lo.mdb")
If RadioButton3.Checked = True And RadioButton5.Checked = True Then
Dim sql As String
sql = "SELECT * FROM Alcolici WHERE Ingredienti = [rum;dolce]"
NomeCok.Text = ""
NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
m_rsAlcolici.Open(sql, m_cnConnessioneADO, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
' A questo punto hai il record
' ma lo chiudi subito
m_rsAlcolici.Close()
m_cnConnessioneADO.Close()
End If
If RadioButton4.Checked = True And RadioButton6.Checked = True Then
Dim sql As String
sql = "SELECT * FROM Alcolici WHERE Ingredienti = [tequila;secco]"
NomeCok.Text = ""
NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
m_rsAlcolici.Open(sql, m_cnConnessioneADO, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
' A questo punto hai il record
' ma lo chiudi subito
m_rsAlcolici.Close()
m_cnConnessioneADO.Close()
End If
Così com'è adesso dovrebbe andare, ma si può ancora
migliorare il codice. Per prima cosa ti consiglio di
farlo girare. Poi, se funziona, ti dedichi all'ottimizzazione
Ciao,