Utilizzo casella di riepilogo con selezione multipla come criterio Query

Anonimo
2015-06-24T15:31:21+00:00

Buona sera,

come da oggetto sto tentando di utilizzare  una selezione multipla di dati da inserire come criteri in una query.

Premetto che non sono un grande conoscitore di VBA, però mi diletto ad adattare I codici alle mie esigenze.

In pratica sto tentando di usare questo codice:

Private Sub Imp_filt_Click()

Dim strSQL As String

Dim varItm As String

If Elenco12.ItemsSelected.Count = 0 Then

   MsgBox "Selezionare almeno una categoria.", vbInformation

   Exit Sub

End If

For Each varItem In Elenco12.ItemsSelected

  If Elenco12.Selected(varItem) = True Then

    strSQL = strSQL & Elenco12.ItemData(varItem) & ", "

  End If

Next

strSQL = Left(strSQL, Len(strSQL) - 2)

Testo16.Value = strSQL

DoCmd.RunSQL "SELECT Accessi.ID, Accessi.Utente, Accessi.[Data e ora ingresso] INTO Prova FROM Accessi WHERE (((Accessi.ID)In(Testo16)))"

End Sub

Il problema che mi si presenta è il seguente:

se selezione una sola voce dall'elenco "Elenco12" funziona perfettamente, se nel commando dell'SQL anzichè "Testo16" metto "1,2" funziona correttamente, mentre eseguendo quanto sopra, ma selezionando nella casella di riepilogo più di una voce, la tabella creata non riporta nessun dato.

Secondo me mi sfugge una stupidata... Spero la troviate voi.

Grazie.

Ciao.

Salvatore.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2015-06-24T16:23:11+00:00

ciao Salvatore.

meglio dichiarare variant la variabile che usi per ciclare la listbox.

L'errore era nella stringa strSql.

Ciao, Sandro.

Dim strSQL  As String

Dim varItm  As Variant

If Elenco12.ItemsSelected.Count = 0 Then

    MsgBox "Selezionare almeno una categoria.", vbInformation

    Exit Sub

 End If

For Each varItm In Elenco12.ItemsSelected

   If Elenco12.Selected(varItm) = True Then

     strSQL = strSQL & Elenco12.ItemData(varItm) & ", "

   End If

 Next

strSQL = Left(strSQL, Len(strSQL) - 2)

Testo16.Value = strSQL

DoCmd.RunSQL  "SELECT Accessi.ID, Accessi.Utente, Accessi.[Data e ora ingresso] INTO Prova FROM Accessi WHERE Accessi.ID in (" & Me.Testo16 & ")"

La risposta è stata utile?

0 commenti Nessun commento

5 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-06-25T08:22:46+00:00

    Grazie mille.

    Funziona tutto perfettamente. Ho solo un'altra domanda:

    la funzione "In" della SQL funziona anche se nella casella di riepilogo seleziono dei nomi anzichè degli ID.

    Lo chiedo perchè ho provato  con questo codice

    DoCmd.RunSQL "SELECT Accessi.ID, Accessi.Utente, Accessi.[Data e ora ingresso] INTO Prova FROM Accessi WHERE Accessi.Utente In(" & strSQL & ")"

    dove "str SQL" è uguale a "Salvatore" e mi chiede di specificare il valore per "Salvatore".

    Ho provato anche così:

    DoCmd.RunSQL "SELECT Accessi.ID, Accessi.Utente, Accessi.[Data e ora ingresso] INTO Prova FROM Accessi WHERE Accessi.Utente In(" & "Salvatore" & ")"

    ma mi da lo stesso problema.

    Grazie mille per l'aiuto che mi state dando.

    Saluti.

    Salvatore.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-06-24T16:47:37+00:00

    Ciao Salvatore,

    Grazie mille... la provo appena posso. Come devo modificare il codice per passare direttamente strSQL? Ci avevo provato ma mi chiedeva il valore di STRSQL...

    Grazie ancora!

    ti va bene se ti disattivo un attimo i warnings anche ?

    DoCmd.SetWarnings False

    SELECT Accessi.ID, Accessi.Utente, Accessi.[Data e ora ingresso] INTO Prova FROM Accessi WHERE Accessi.ID In (" & strSQL & ")"

    DoCmd.SetWarnings True

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-06-24T16:39:36+00:00

    ...dimenticavo....

    puoi evitare se non ti serva la textbox in cui visualizzi le selezioni dell'operatore IN e passare direttamente la variabile strSql...

    ciao, Sandro.

    Grazie mille... la provo appena posso. Come devo modificare il codice per passare direttamente strSQL? Ci avevo provato ma mi chiedeva il valore di STRSQL...

    Grazie ancora!

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-06-24T16:29:11+00:00

    ...dimenticavo....

    puoi evitare se non ti serva la textbox in cui visualizzi le selezioni dell'operatore IN e passare direttamente la variabile strSql...

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento