Utilizzo di array come criterio di un recordset

di il
4 risposte

Utilizzo di array come criterio di un recordset

Buonasera,
ho creato una maschera con sottomaschera ed una textbox dove un utente può inserire dei valori numerici separati da virgole del tipo: 1,2,3,5,8, ecc.
Attraverso un pulsante vorrei che l'utente possa visualizzare nella sottomaschera soltanto i record associati ai suddetti valori.
Quello che ho pensato di fare è sfruttare la funzione split operante su un array per estrarre i valori indicati nella textbox:
Private Sub cmd_stamp_sel_Click()
Dim text_array() As String, i As Integer
text_array = Split(Me.txt_sel_schede, ",")

For i = LBound(text_array) To UBound(text_array)
If Len(text_array(i) & vbNullString) <> 0 Then

 'istruzioni da inserire per popolare il recordset.
 
End If
Next

End Sub
A questo punto l'unica idea che mi viene è quella di associare al recordset una query di accodamento temporanea utilizzando i valori dell'array. Mi sembra un pò tortuosa come soluzione.
Esiste un'alternativa?
Spero di essermi spiegato.
Grazie.

4 Risposte

  • Re: Utilizzo di array come criterio di un recordset

    Pensa che non devi fare altro che applicare la stringa alla proprietà FILTER della SubForm...
  • Re: Utilizzo di array come criterio di un recordset

    Si hai ragione. Ripensandoci meglio dovrei usare la proprietà filter. ho modificato cosi
    Private Sub cmd_stamp_sel_Click()
    Dim text_array() As String, i As Integer, str As String
    text_array = Split(Me.txt_sel_schede, ",")
    Form_SM_Schede_Lavoro.FilterOn = True
    
    For i = LBound(text_array) To UBound(text_array)
        If Len(text_array(i) & vbNullString) <> 0 Then
            str = str & "Numero_Campione like '" & text_array(i) & "' or "
            If i = UBound(text_array) Then
                Form_SM_Schede_Lavoro.Filter = Mid$(str, 1, Len(str) - 4)
                Debug.Print str
            End If
        End If
    Next
    
    End Sub
    Sarà la stanchezza ma no capisco perchè non riesco a sbarazzarmi della or finale nella stringa all'uscita dal ciclo for.
  • Re: Utilizzo di array come criterio di un recordset

    Ma ti rendi conto di quello che hai fatto...?
    Se il nome campo a cui applicare il filtro è [ID] Numerico intero lungo.. basta 1 riga di codice.
    Me!NomeSubForm.Form.Filter="ID IN (" & txt_sel_schede & ")" 
    Me.NomeSubForm.Form.FilterOn=True
    Se il campo è di tipo testo devi solo usare buildCeiteria per convertire automaticamente il criterio con la sintassi giusta.

    Tu hai scomposto una stringa in un Array per poi rifare una stringa...?
    Mah....
  • Re: Utilizzo di array come criterio di un recordset

    Ho fatto un girò più largo perché non conoscevo il criterio che hai indicato.
    Grazie.
Devi accedere o registrarti per scrivere nel forum
4 risposte