Vraag : De hulp van de behoefte met het filtreren van een rapport van een vorm

Ik heb een vraag over het filtreren van rapporten van een vorm. Ik heb momenteel een vorm die 3 combodozen en een subreport omvat. Het eerste combovakje selecteert de te bekijken lijst en bevolkt het tweede combovakje. De tweede staat u toe om te selecteren wat aan filter afhandelen, en bevolkt ook het derde met waarden van de bepaalde lijst/het gebied. Het derde combovakje laat u een punt en dan filters selecteren het rapport op alle 3 combovakjes wordt gebaseerd met aaneenschakeling die. (lijst-gebied-verslag) wanneer ik de derde doos beëindig het uit alles in het rapport zal filtreren, die slechts een leeg verslag verlaten. Kan iedereen me met dit helpen? Hier is de code ik gebruikt voor de vorm om te zien hoe ik gedaan het heb:
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
expliciete Option Privé SubcboReport_Change () Schemerige strReport als Koord 'Wijs variabelen toe strReport = Me.cboReport.Value 'Bevolkt cboField met opties op cboReport worden gebaseerd die. Me.cboField.RowSource = strReport Me.cboField.RowSourceType = de „Lijst van het Gebied“ Me.cboField.Value = "" Me.cboFilter.Value = "" Me.Refresh 'Deze verklaring vindt het geselecteerde punt in het combovakje en opent respectief 'rapport in het subgebied van het Rapport. Als IsNull (cboReport.Value) toen Me.subReport.SourceObject = "" Anders Als cboReport.Value = „Werknemer“ toen Me.subReport.SourceObject = „Report.rptEmployee“ Anders Me.subReport.SourceObject = „Report.rptInventory“ Eind als Eind als Sub van het eind Privé SubcboField_Change () Schemerige strReport als Koord, strField als Koord, strFilter als Koord 'Wijs variabelen toe strReport = Me.cboReport.Value strField = Me.cboField.Value strFilter = „UITGEZOCHTE verschillend“ & „[“ & strReport & „]“ & „.“ & „[“ & strField & „]“ & „VAN“ & „[“ & strReport & „]“ & „; “ 'Bevolkt cboFilter met opties op cboReport worden gebaseerd die en cboField. Me.cboFilter.RowSourceType = „Lijst/Vraag“ Me.cboFilter.RowSource = strFilter Me.cboFilter.Value = "" Me.Refresh Sub van het eind Privé SubcboFilter_Change () Schemerige strField als Koord, strFilter als Koord, strApply als Koord 'Wijs variabelen toe strField = Me.cboField.Value strFilter = Me.cboFilter.Value strApply = „[“ & strField & „] =“ & """ & strFilter & """ 'Pas geselecteerde filter op subReport toe Me.subReport.Report.Filter = strApply Me.subReport.Report.FilterOn = Waar Me.Refresh Sub van het eind

Antwoord : De hulp van de behoefte met het filtreren van een rapport van een vorm

Veronderstellend dat alle gebieden de gebruiker waaruit in elk van deze lijsten kon selecteren tekst zijn, probeer:

strApply = „[“ & strField & „] = """ & strFilter & """"

Als alle gebieden die zouden kunnen worden geselecteerd geen tekst zijn, dan gaat u een manier moeten berekenen om datatype van het gebied te bepalen alvorens strApply tot te leiden.  U kon een functie als het volgende gebruiken:

Overheidsfunctie FieldType (TableName als Koord, Fieldname als Koord) als Geheel

    Schemerige strSQL als Koord
    Schemerige rs als DAO.Recordset
   
    strSQL = „SELECTEER [“ & Fieldname & „] VAN [“ & TableName & „] WAAR Vals“
    strSQL = vervang (vervang (strSQL, „[[“, „[“), „]]“, „]“)
   
    Plaats rs = CurrentDb.OpenRecordset (strSQL, dbfailonerror)
   
    FieldType = rs. Gebieden (0). Type
    rs. Sluit
    Plaats rs = niets
   
Beëindig Functie

En doe dan iets als:

intFieldType = FieldType (strReport, strField)
SELECTEER Geval intFieldType
    Geval dbBigInt, dbBoolean, dbByte, dbNumeric dbDouble cbCurrency, dbDecimal, dbFload, dbInteger, dbLong,
        strApply = „[“ & strField & „] =“ & strFilter
    dbChar geval, cbText, dbMemo
        strApply = „[“ & strField & „] = """ & strFilter & """"
    Geval dbDate, dbTime
        strApply = „[“ & strField & „] = #“ & strFilter & „#“
    Geval anders
        msgbox „Onverwacht gegevenstype =“ & intFieldType
        'Dit men zou alle waarden moeten omvatten
        strApply = ""
Uitgezocht eind

me.subReport.Report.Filter = strApply
me.subReport.Report.FilterOn = (strApply <> "")
Andere oplossingen  
 
programming4us programming4us