Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 388
  • Last Modified:

Help streamlining some logic

I have four checkboxes on a form that, when selected correspond to a search term for a single field.

My code surely can be condensed but I'm not as fluent as some of you all!

Please help me make this prettier code:

dim sFieldName as string 'this will become a piece of sql that searches on FieldName

If me.chkBox1 then sFieldName = 'Field like 'mammal'"
end if

if sfieldName = "" and me.chckbox2 then
     sFieldName = "Field like 'reptile'"
    elseif sFieldName <> "" and chkbox2 then
     sFieldName = sFieldName & " OR Field like 'reptile'"
end if

if sfieldName = "" and me.chckbox3 then sFieldName = "Field like 'crustacean'"
    elseif sFieldName <> "" and chkbox3 then sFieldName = sFieldName & " OR Field like 'crustacean'"
end if

if sfieldName = "" and me.chckbox4 then sFieldName = "Field like 'fish'"
    elseif sFieldName <> "" and chkbox4 then sFieldName = sFieldName & " OR Field like 'fish'"
end if

Thanks for the help. :)
0
epuglise
Asked:
epuglise
  • 5
  • 4
1 Solution
 
sshah254Commented:
Why don't you do something like

field in ('mammal', 'reptile', ....).

This should be easier to implement.

Unless you need to use the "like" option (this is done if the search will have a wildcard in it).

Ss
0
 
RunriggerCommented:

Private Sub Test()
Dim sConditions() As String, sCriteria As String

    'Set the intial size of the array to 1
    ReDim Preserve sConditions(0)
   
    If Me.chckbox1 Then sConditions(UBound(sConditions)) = "Field like 'mammal'"
   
    If Me.chkcbox2 Then
        ReDim Preserve sConditions(UBound(sConditions) + 1)
        sConditions(UBound(sConditions)) = "Field like 'reptile'"
    End If
   
    If Me.chkcbox3 Then
        ReDim Preserve sConditions(UBound(sConditions) + 1)
        sConditions(UBound(sConditions)) = "Field like 'crustacean'"
    End If
   
    If Me.chkcbox4 Then
        ReDim Preserve sConditions(UBound(sConditions) + 1)
        sConditions(UBound(sConditions)) = "Field like 'fish'"
    End If

    sCriteria = Join(sConditions, " OR ")

End Sub
0
 
epugliseAuthor Commented:
I may start thinking in arrays... a concept I totally understand but whose language I can not yet speak.  I like this abstraction a lot. Thanks.  I have another similar thorny problem that I'll also be able to use this checking method with!! Thanks.
0
Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

 
epugliseAuthor Commented:
That is a great piece of code!  Thanks!
0
 
RunriggerCommented:
you are very welcome, I am certain that some other experts will be able to streamline further!

try the below, should work regardless of a part of the array being empty

Happy playing.
Regards
Dave



Private Sub Test()
Dim sConditions() As String, sCriteria As String

    'Create a blank array
    ReDim Preserve sConditions(3)
   
    If Me.chckbox1 Then sConditions(0) = "Field like 'mammal'"
   
    If Me.chkcbox2 Then  sConditions(1) = "Field like 'reptile'"
   
    If Me.chkcbox3 Then  sConditions(2) = "Field like 'crustacean'"
   
    If Me.chkcbox4 Then  sConditions(3) = "Field like 'fish'"

    sCriteria = Join(sConditions, " OR ")

End Sub
0
 
RunriggerCommented:
let me know.
Dave
0
 
epugliseAuthor Commented:
Ok Dave, I hit a snag when I have a single condition that is true. I need to know how many items are in the array right? I'd be happy to open another question if necessary. Title suggestions welcomed.
0
 
RunriggerCommented:
I didn't think that it would join a single entry array, I am surprised!

Check this condition;

If Ubound(sConditions)=0 then
sCriteria=sConditions(0)
else
sCriteria = Join(sConditions, " OR ")
end if
0
 
epugliseAuthor Commented:
So the problem was in a new version of the code you gave me i was dealing with text boxes that might or might not have entries. I think I figured it out, but the problem was that it would occasionally populate the first (0) entry of the array with a null so the first element of the join statement was blank. Weird.  I solved it by adding a check to the code (similar to yours) that determined if the (0) entry was empty, and if so, fill it.  Thanks for the follow up help.  BTW they've asked me to build another tool (actually upgrade someone else's) so I'm sure I'll be back with more questions!  
0
 
RunriggerCommented:
Glad that I was able to help.

Good luck
Dave
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now