Utilizzo di array come criterio di un recordset

di eddy1973 il
4 risposte
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

  • Pensa che non devi fare altro che applicare la stringa alla proprietà FILTER della SubForm...
  • 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.
  • 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....
  • 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