Query in vba

di il
2 risposte

Query in vba

Ciao a tutti,
mi sto spaccando la testa e non ne vengo fuori. Sto creando una macro che contiene una query per una maschera. Ho prima di tutto creato una tabella con il campo "Numeri", che contiene i seguenti dati:
1
2
6
7
8
10
Nel corpo della maschera ho inserito il campo "Numeri", ma in determinati casi io vorrei ad esempio che i campi dall'8 al 10 non siano visibili. E' possibile? Nella query della maschera ho selezionato tutto dall'1 all'8. Nella macro vorrei che in determinate condizioni siano presenti tutti i numeri, in altre alcune, ecc

O è possibile inserire nel corpo della maschera una casella di testo, che mi mostri il risultato di una query che estragga solo i numeri da 1 a 6 e le caselle di testo dei valori da 7 a 10 siano invisibili? Solo per i casi che voglio io però!
All'inzio ho pensato di creare una query e salvare i risultati in un rs, ma non mi fa quello che voglio. Mi potreste aiutare? Grazie
Francesco

2 Risposte

  • Re: Query in vba

    Quello che chiedi è fattibile ma serve gestire la Proprietà FILTER della Maschera...!

    Se metti una textBox chiamata [txtFilter] ed un CommandButton chiamato [cmdFilter]
    puoi, su Evento Click del Button puoi scrivere
    
    Private Sub cmdFilter_Click()
       On Error Resume Next
       If Len(Me!txtFilter.Value)=0 Then
           Me.FilterOn=False
           Me.Filter=vbNullstring
       Else
           Me.FilterOn=False
           Me.Filter="[Numeri]" & Me!txtFilter
           Me.FilterOn=True
       End If
    End Sub
    Ora se nella TextBox scrivi "<6" e premi il Button deve farti vedere tutti i Record in cui [Numeri]<6

    Se nella textBox non scrivi Nulla il filtro viene rimosso e vedrai tutti i Records.
  • Re: Query in vba

    Ok. grazie alex.
    Ma una cosa vorrei sapere: io faccio una select per la maschera che mi estrae tutti i numeri e me li mostra in automatico se carico il campo nel corpo della maschera. Ora non è possibile fare ciò al caricamento della maschera? O meglio, io ho un campo precaricato da una maschera precedente. SE un campo ha un certo valore allora, quando carico questa nuova maschera che conterrà i numero, la maschera mi dovrà mostrare direttamente i numeri ad essa collegati. Vorrei fare ciò tramite macro e non da tabella, perchè creare una tabella così diventa molto complesso, in quanto tali numeri possono apparire per uno o più valori del campo.
    Ij altri termini, se il I valore vale materia, allora mostrami i campi 1-2-3, se è ore, me li mjostra tutti, ecc. Grazie


    Ad esempio io ho usato questo codice:

    Dim sql As String
    Dim rs As Recordset


    sql = "select Numeri from numero"
    Set db = CurrentDb()
    Set rs = db.OpenRecordset(sql)
    If (rs("Numeri") = 6) Then
    Sezione.Visible = False


    Ma in questo caso mi mostra tutti i dati. Se metto, <>6, allora non mi mostra più nulla. Sembra che prenda solo I valore della tabella
Devi accedere o registrarti per scrivere nel forum
2 risposte