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.
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 manyor
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
Post a Comment