Originariamente inviato da nikkysixx
Scusa la domanda idiota ma una volta ottenuta la stringa sql come faccio ad eseguirla?
E poi una domanda per capire il tuo ragionamento,perchè 1 diverso da 1?
select * from prova where 1<>1

p.s. dillo che sei un bot
Ho messo 1<>1 perchè all'inizio della stringa "select * from prova where " devo concatenare le scelte fatte dall'utente

or a=-1
or a=-1 or b=-1

eccetera

poichè non posso scrivere

select * from tabella where or a=-1 or b=-1, mi serve una condizione che non infici quanto segue. Siccome nel tuo caso usi or, metterai 1<>1.

Se invece avessi dovuto mettere

and a=-1 and b=-1 eccetera, allora avresti usato 1=1 che è sempre vera, mentre 1<>1 è sempre falsa.
Al posto di 1<>1 potresti anche scrivere 0 e al posto di 1=1 semplicemente 1.

Per quel che riguarda l'esecuzione della query dipende da ciò che vuoi fare. Vuoi aprire un report, un form, o cos'altro?

Del bot non me l'avevano ancora dato.

edit.
Uno dei modi per verificare il risultato della query è questo:

codice:
Private Sub Comando11_Click()
Dim strSQL As String
Dim i As Integer
Dim dbs As Database
Dim rs As Recordset
Dim qdf As QueryDef

Set dbs = CurrentDb()


If Elenco.ItemsSelected.Count = 0 Then
    MsgBox "selezionare almeno una voce"
    Exit Sub
End If

strSQL = "select * from prova where 1<>1 "
For i = 0 To Elenco.ListCount - 1
        If Elenco.Selected(i) Then
         strSQL = strSQL & "or " & Elenco.Column(0, i) & "=-1"
        End If
Next i
'MsgBox strSQL

Set rs = dbs.OpenRecordset(strSQL, dbOpenSnapshot)

With dbs
    Set qdf = .CreateQueryDef("tmpQuery", strSQL)
    DoCmd.OpenQuery "tmpQuery"
    'nel caso volessi impedire le modifiche sul risultato della query 
    'sostituisci la riga precedente con quella sottostante
    'DoCmd.OpenQuery "tmpQuery", , acReadOnly
.QueryDefs.Delete "tmpQuery"
End With
dbs.Close
qdf.Close

End Sub