Newsgroup: it.comp.appl.access
Titolo: Effettuare una Ricerca sui Campi della tabella (sito Baraldi)

Il codice sottostante fa parte di un Demo messo a disposizione nel sito
di Alex. Lo trovo molto performante anche con una sostanziosa quantità
di dati.
Vorrei però inserire la possibilità effettuare un between su date e
importi (un >= piuttosto che un <=). Qualcuno saprebbe darmi qualche
indicazione sul come mettere le mani a questo codice in questo senso?
Private Sub cmdFind_Click()
    Dim fld As DAO.Field
    Dim ctl As Access.Control
    Dim sSQL As String
    Dim Attr As String
    Dim RicAss As String
    Dim ctlVal  As Variant
    Attr = " AND "
    If Me!boxAttr = 2 Then
        Attr = " OR "
    End If
    RicAss = ""
    If Me.boxRicerca = 1 Then
        RicAss = "*"
    End If
    For Each ctl In Me.Controls
        Select Case ctl.ControlType
            Case acTextBox, acComboBox
                If ctl <> "" Then
                   ctlVal = ctl.Value
                   If Me.RecordsetClone.Fields(ctl.Name).Type = dbText
Then
                        ctlVal = RicAss & ctlVal & RicAss
                   End If
                   sSQL = sSQL & BuildCriteria(ctl.Name,
Me.RecordsetClone.Fields(ctl.Name).Type, ctlVal) & Attr
                End If
        End Select
    Next
    If Len(sSQL) > 0 Then
        sSQL = Mid$(sSQL, 1, Len(sSQL) - Len(Attr))
    End If
    DoCmd.OpenForm "Impiegati", , , sSQL
End Sub
Grazie
Paolo

 Paolo
E' performante ma un pò rigido, per renderlo flessibile serve poter
disporre di indicatori
sull'azione, in questo caso puoi sfruttare la proprietà TAG del
controllo, ma a quel punto
devi processare una serie di IF...End If e comporre la stringa in modo
dedicato.
If ctl.Tag="X" then ...
   Nuovo Metodo
Else
   Vecchio metodo
End if
Ciao
@Alex

 @Alex
Grazie
Paolo

Announced ha scritto:

...non potresti darmi qualche indicazione un più, non ho molta
familiarità con questo tipo di soluzioni via codice. Se non puoi, non
insisto!
Ciao
Paolo

 Paolo
Avevo letto il tuo post....... se non rispondevo magari c'era un
motivo...?
In ogni caso, se contrassegni i controlli con un TAG poi puoi applicare
una
Formattzaione personalizzata.
Il problema di darti indicazioni è che questo è da fare per ogni tipo
di formattazione personalizzata, quindi devi metterti giù a
provare...!
Es: tutti i controlli con il TAG X non verranno processati dalla
funzione che ho scritto
nel demo, quindi li dovrai processare singolarmente:
If ctl <> "" Then
  If ctl.Tag="" Then
      sSQL = sSQL & BuildCriteria(ctl.Name,
Me.RecordsetClone.Fields(ctl.Name).Type, ctlVal) & Attr
  Elseif ctl.Tag="X" Then
     'Qu' li devi processare uno per volta
     If ctl.Name="Nome1" then
        sSQL="......"
     ElseIf ctl.Name="Nome2 Then
        sSQL="....."
     End if
   End if
End If
La cosa è in questo termine, se poi hai 2 Date per il Beetwen devi
memorizzare
la validità della prima, oppure controllare anche la 2° mentre
controlli la 1°.....
Insomma detto questo, darti dettagli ulteriori significa scriverti il
codice............
@Alex

 @Alex
Alex ti ringrazio delle ulteriori indicazioni, con queste nuove ho un
punto di partenza più chiaro.
Grazie ancora
Ciao
Paolo