stored procedures - How do I group a few fields to one indicator to reference later in Access VBA? -


note: i'm pretty new vba. i'm trying create or feature our custom filter users can have option filter 1 or another. i'm thinking user needs select 3 field, comparison , criteria make 1 selection , when or button hit selection generated , on... until click on filter button. have code on filter work far.

enter image description here silly draft have far private sub cmdor_click()

    dim selector integer         

here i'm not sure how set these 3 fields 1 indicator

    selector = field & comparison & criteria      if isnull(selector)         msgbox "all 3 fields, comparison , criteria must selected", vbokcancel, "filter"     else 

here want increment selector users can select many or option can

        selector 1 end sub 

i hope i'm being clear, if not please let me know! thanks!

here have in filter button far. note: there dictionaries, collections other modules used.

private sub cmdok_click()         dim filter ifilter, filterstring string, filtercomparison string, filtercriteria string, sanitizedfiltercriteria     string, primaryfilter string, primaryschema string,     primarytable string, primarykey string, targettable string,     targetfield string, target() string, filteritem     controldefinition_filter              me.dirty = false              'gather data primary filter active form              xformtofilter                 .resetfilter                 set .filterbuilder.formtofilter = formtofilter                  primaryfilter = iif(.basefilter = vbnullstring, _                                         .nullfilter, _                                         .basefilter)                 primarytable = .filtertable                 primarykey = .key             end              me.recordsetclone                 if .recordcount > 0                     .movefirst                     while not .eof                         'get schema, table/view, , control targetted filter                         target = split(.fields("field").value, ".")                         targettable = iif(left(target(0), 6) = "select", gettablename(target(0)), target(0))                         targetfield = target(1)                          filtercomparison = nz(.fields("comparison").value, vbnullstring)                         filtercriteria = nz(.fields("criteria").value, vbnullstring)                          set filteritem = filterdict.item(.fields("field").value)                         if filteritem.hascriteria 'get stored equivalent criterion if available                             sanitizedfiltercriteria = filteritem.getcriteriavalue(filtercriteria)                             if sanitizedfiltercriteria <> vbnullstring _                                 filtercriteria = sanitizedfiltercriteria                         end if                          filterstring = _                             createfilterstring(.fields("fieldtype"), targetfield, targettable, _                                                 filtercomparison, filtercriteria)                         filterstring = filterregexp(filterstring)                          if filter nothing                             set filter = xformtofilter.filterbuilder                             filter.setprimaryfilter primaryfilter, primarytable, primarykey                         end if                          filter.addsubfilter "filter" & .fields("id"), _                             filterstring, targettable, subformdict(targettable)                         .movenext                     loop                 end if             end              if not filter nothing                 dim finalfilter string                 filter.openfilteredrecordset                 xformtofilter.setfoundrecords                  docmd.close acform, "filter_create_popup", acsaveno             end if         'error handling here     end sub` 

i have , feature search limited number of comboboxes (so not dynamically add them. see helps on way.

dim ctrl control dim search_string string search_string = "" each ctrl in me.controls     if ctrl.controltype = accombobox         if ctrl.value <> ""             if len(search_string) > 1                 search_string = search_string & " , "             end if             search_string = search_string & lcase(replace(ctrl.value, " ", "_"))             if ctrl.column(1) = "number"                 search_string = search_string & " '*" & cstr(me.controls("cval" & right(ctrl.name, 1)).value) & "*'"             elseif ctrl.column(1) = "date"                 search_string = search_string & "=#" & me.controls("cval" & right(ctrl.name, 1)).value & "#"             else                 search_string = search_string & " '*" & me.controls("cval" & right(ctrl.name, 1)).value & "*'"             end if         end if     end if next ctrl docmd.openform "frmsearchresults", acnormal, , search_string 

it loops through controls , builds filter string openform event. mine contains additional code data types in case.


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -