Innanzitutto se il tuo intento è di inserire Criteri Multpli la sintassi da usare cambia… l'ideale è sempre usare una ListBox per poter selezionare Items in modalità Multipla-Estesa.
Diciamo che se la sintassi per un singolo Item è questa:
SELECT * FROM T1 WHERE IDCommessa=Forms!NomeForm!NomeTuaTextBox
Se i criteri sono 2 la sintassi diverrebbe questa:
SELECT * FROM T1 WHERE IDCommessa=Forms!NomeForm!NomeTuaTextBox1 OR IDCommessa=Forms!NomeForm!NomeTuaTextBox2
quindi cosi:
SELECT * FROM T1 WHERE IDCommessa=356 OR IDCommessa=475
Come vedi ben lontano da quanto hai fatto che in sostanza è errato.
Se i criteri poi fossero 25, la cosa diventa troppo lunga, e si preferisce usare la CLAUSOLA IN, così:
SELECT * FROM T1 WHERE IDCommessa IN (356,387,456,521,ecc...)
In questo senso potresti usare sempre una TextBox ma devi ricostruire il criterio, oppure FILTRARE il RS di ListBox con il Criterio
Se tu pertanto nella TextBox scrivessi:
356,387,456,521
Ti basterebbe filtrare il RS
Dim rs AS DAO.Recordset
Dim rstFiltered As DAO.Recordset
Set rs=Me!NomeListBox.Recordset
rs.Filter = "IDCommessa = (" & Me!TuaTextBox & ")"
Set rstFiltered = rs.OpenRecordset
Set Me!NomeListBox.Recordset=rstFiltered
Tuttavia questo stralcio di codice non funzionerà correttamente in quanto va conservato il RS originale per poter gestire la variazione del Filtro… e questo dipende dalla tua autonomia nel scrivere il codice.
La cosa più semplice è formattare la stringa SQL della Query di origine della ListBox:
Dim qdf As DAO.Querydef
Set qdf=DbEngine(0)(0).Querydefs("NomeTuaQuery")
qdf.SQL="SELECT * FROM T1 WHERE IDCommessa IN (" & Me!TuaTextBox & ")"
Me!NomeListBox.Requery
Se la ListBox non ha la Query compilata e salvata si fa così:
Me!NomeListBox.RowSource="SELECT * FROM T1 WHERE IDCommessa IN (" & Me!TuaTextBox & ")"
Ma devi sempre mettere dei criteri di validazione del codice…