Link to home
Create AccountLog in
Avatar of Giulio Benvenuti
Giulio BenvenutiFlag for Italy

asked on

DoCmd.OpenForm [...] - Conditions in WHERE

Hello,

I want open a form "frmMenù" where [DataIncarico] is a date. If [r1] AND [r2] are null i have something like "BETWEEN ## AND ##".

Is possible to change something in this code? I want:


  1. If [r1] and [r2] are null then " AND DataIncarico BETWEEN #" & [r1] & "# AND #" & [r2] & "#" the value becomes "*"
  2. If [r1] is not null and [r2] is null then "//"  the value is equal to [r1]
  3. If [r2] is not null and [r1] is null then "//" the value is equal to [r2]
  4. If [r1] and [r2] are not null "//" is ok --> BETWEEN [r1] AND [r2]


Hello this is the code:

Private Sub cmdOpenRecords_Click()
        DoCmd.OpenForm "frmMenù", , , "StatoPratica LIKE " & "'*" & [b1] & "*'" & _
                                            " AND TVisita LIKE " & "'*" & [b2] & "*'" & _
                                            " AND UfficioSinistri LIKE " & "'*" & [b3] & "*'" & _
                                            " AND nSinistro LIKE " & "'*" & [b4] & "*'" & _
                                            " AND TValutazione LIKE " & "'*" & [b5] & "*'" & _
                                            " AND Liquidatore LIKE " & "'*" & [b6] & "*'" & _
                                            " AND IDPaziente LIKE " & "'*" & [b7] & "*'" & _
                                            " AND DataIncarico BETWEEN #" & [r1] & "# AND #" & [r2] & "#"
                                            
        Forms![frmMenù]![SubFrmListaPratiche].Form.Filter = "StatoPratica LIKE " & "'*" & [b1] & "*'" & _
                                                            " AND TVisita LIKE " & "'*" & [b2] & "*'" & _
                                                            " AND UfficioSinistri LIKE " & "'*" & [b3] & "*'" & _
                                                            " AND nSinistro LIKE " & "'*" & [b4] & "*'" & _
                                                            " AND TValutazione LIKE " & "'*" & [b5] & "*'" & _
                                                            " AND Liquidatore LIKE " & "'*" & [b6] & "*'" & _
                                                            " AND IDPaziente LIKE " & "'*" & [b7] & "*'" & _
                                                            " AND DataIncarico BETWEEN #" & [r1] & "# AND #" & [r2] & "#"
        Forms![frmMenù]![SubFrmListaPratiche].Form.FilterOn = True
End Sub

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of Gustav Brock
Gustav Brock
Flag of Denmark image

Link to home
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
See answer
Avatar of Giulio Benvenuti

ASKER

Now it works :) thanks
i just added min and max from main tbl
Private Sub cmdOpenRecords_Click()

        Dim Date1, Date2, Date3, Date4, Date5, Date6 As String
        
                Date1 = Format(Nz([r1], [txtMinDataIncarico]), "yyyy\/mm\/dd")
                Date2 = Format(Nz([r2], [txtMaxDataIncarico]), "yyyy\/mm\/dd")
                Date3 = Format(Nz([r3], [txtMinDataSinistro]), "yyyy\/mm\/dd")
                Date4 = Format(Nz([r4], [txtMaxDataSinistro]), "yyyy\/mm\/dd")
                Date5 = Format(Nz([r5], [txtMinDataConsegna]), "yyyy\/mm\/dd")
                Date6 = Format(Nz([r6], [txtMaxDataConsegna]), "yyyy\/mm\/dd")
                
        DoCmd.OpenForm "frmMenù", , , "StatoPratica LIKE " & "'*" & [b1] & "*'" & _
                                            " AND TVisita LIKE " & "'*" & [b2] & "*'" & _
                                            " AND UfficioSinistri LIKE " & "'*" & [b3] & "*'" & _
                                            " AND nSinistro LIKE " & "'*" & [b4] & "*'" & _
                                            " AND TValutazione LIKE " & "'*" & [b5] & "*'" & _
                                            " AND Liquidatore LIKE " & "'*" & [b6] & "*'" & _
                                            " AND IDPaziente LIKE " & "'*" & [b7] & "*'" & _
                                            " AND DataIncarico " & IIf(IsNull([r1] & [r2]), "Is Not Null", "Between #" & Date1 & "# And #" & Date2 & "#") & _
                                            " AND DataSinistro " & IIf(IsNull([r3] & [r4]), "Is Not Null", "Between #" & Date3 & "# And #" & Date4 & "#") & _
                                            " AND DataConsegna " & IIf(IsNull([r5] & [r6]), "Is Not Null", "Between #" & Date5 & "# And #" & Date6 & "#")
        Forms![frmMenù]![SubFrmListaPratiche].Form.Filter = "StatoPratica LIKE " & "'*" & [b1] & "*'" & _
                                                            " AND TVisita LIKE " & "'*" & [b2] & "*'" & _
                                                            " AND UfficioSinistri LIKE " & "'*" & [b3] & "*'" & _
                                                            " AND nSinistro LIKE " & "'*" & [b4] & "*'" & _
                                                            " AND TValutazione LIKE " & "'*" & [b5] & "*'" & _
                                                            " AND Liquidatore LIKE " & "'*" & [b6] & "*'" & _
                                                            " AND IDPaziente LIKE " & "'*" & [b7] & "*'" & _
                                                            " AND DataIncarico " & IIf(IsNull([r1] & [r2]), "Is Not Null", "Between #" & Date1 & "# And #" & Date2 & "#") & _
                                                            " AND DataSinistro " & IIf(IsNull([r3] & [r4]), "Is Not Null", "Between #" & Date3 & "# And #" & Date4 & "#") & _
                                                            " AND DataConsegna " & IIf(IsNull([r5] & [r6]), "Is Not Null", "Between #" & Date5 & "# And #" & Date6 & "#")
        Forms![frmMenù]![SubFrmListaPratiche].Form.FilterOn = True
        
End Sub

Open in new window