I am creating a very basic screen in a desktop app that shows a customer service representative a customer's order history. As of now, there are 4 criteria by which you can search:

  1. By order No.
  2. By product No/product description
  3. By date
  4. By Order type (e.g., cancelled orders, dispatched orders, fully paid orders, etc)

A user can search by any number of these criteria at once.

So far, simple, but there are two things that are causing me a lot of trouble.

  1. If you choose to search by Order type, then, you must also choose a date range, as the system is unable to return all orders of a type, only orders of that type within a date range.

  2. If you choose to search by order no, then all of the other search fields should be ignored (if they have anything in them). I.e., the order no search field is independent of the others.

How can I convey this to the user?

So far, I have come up with this:

Order No[       ][Search!]       Product No [          ]
                                 Order type [          ]
                                 Date       [          ]

To solve 2, I placed the order no field far away from the other fields to convey its independence of them. But this looks ugly, and I don't even know if it conveys independence.

To solve 1, I auto-fill the date field if the user selects an option from the order type field. But I have doubts about this, as the user may not understand why the date field has suddenly been populated, and may get frustrated when they try to clear it but can't.

I've been pulling my hair out for 2 days over this. I'm just a programmer who has been given the responsibility of designing and implementing every aspect of this new large application. I have no UX or UI experience or knowledge.

  • You should probably try something like Balsamiq or a simple tool to mockup the user interface as it will be easier for you and anyone who wants to provide feedback for the design.
    – Michael Lai
    Commented Oct 21, 2019 at 3:05
  • @Michael I have created the skeleton of the form. See my answer.
    – JRG
    Commented Oct 21, 2019 at 8:18

3 Answers 3


You might be best not forcing your system constraints on a user and approaching it from the user point of view first (rather than what the system is capable of).

A simple design might be: If your user needs to search using the different fields at different occasions to achieve whatever goals they need (presumably finding an order so they can answer a query?) - offer them all and work it out from there.

I.e. does it matter if you let them type in an order no and a product no and it doesn't return any results? If it is really important, maybe you just needed two separate screens?

Your date problem - again try and design it out. Does it matter if they don't enter a date range - could you just return it by date order descending so you get the top ones first (and probably the ones they are most interested in). If you have system constraints (like how much data you are bringing back), there are ways to handle this (like tell the user you have only brought the last 10 back and if they want more to enter a date, ask for more etc).

Most importantly, if you have the luxury of it, ask you end users. If you can offer a couple of different solutions, go talk to them and see what they would find most useful and listen (don't tell).

A simple example


Order No
[       ]       

Product No 
[          ]

Order type 
[          ]

[          ]

One way of approaching this would be to have an input field where the user can enter any type of information. You perform the search in all types of data and display the results with facets (disabling facets that have no results) but this might be too complex to handle technically.

Another way would be to let the user select a first search criteria (any of the four criteria possible), then enter a corresponding string.

  • If they choose Order No as 1st criteria: they can't add any additional criteria.
  • If they choose Order type as 1st criteria, then date range appears, and they can't launch the search unless they fill in a period of time.
  • If they choose Product Nr as their 1st choice, they can add Date or Order type.
  • If they choose Date, they can add Order type or Product Nr.

In both cases, the idea is to provide a simple search first, which might be enough for the user to find what they're looking for, and then break down the advanced search in small steps that are easier to manage rather than showing a complex form upfront.

  • I basically did what you suggested in your first paragraph. The "big" search of product no/order no is at the top. Then the user can filter those results below with the other search criteria.
    – JRG
    Commented Oct 21, 2019 at 8:16

I have decided to go with this interface: enter image description here

As it turns out, the users rarely search by order no, so it's OK to hide that field behind a click (in a drop down). Now, Since the user must explicitly chooses the Order No field, I know what context the search is in, so I can disable/blank out the appropriate fields.

Whenever you click search, the search criteria below the line will reset to all orders, and to no date option selected. If the user wishes to further refine their search, they can by changing the order type and/or selecting a new date option.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.