用C# 2.0做了一個Query Builder(一些系統把它叫做“萬能查詢”):
“添加”按鈕添加一個運算式或一個運算式邏輯運算子AND或OR;
“清除”按鈕清除所有的運算式和運算式間的邏輯運算子;
“確定”按鈕獲得構造的WHERE clause。
特點:
1、 運算子是由所選擇欄位的欄位來確定的,如欄位為字元時,可能支援的運算子包括:大於、等於、小於、前包括、後包括、包括、不包括、小於等於、大於等於、不等於、介於之間、在列表中
2、 欄位取值由所選欄位和所選運算子共同決定的,如日期時間類型的欄位取值用DateTimePicker來輸入,和其他表關聯的欄位取值使用下拉式清單方塊來輸入
3、 可以增加或減少每個表達前面或後面的括弧的數目來形成複雜查詢,並自動判斷括弧數目是否正確
作用:
設定表單或DataGridView資料的過濾條件;選擇資料進行批次更新
這個東東實現了Query Builder的準系統,但是自己總是覺得不太滿意:使用者會認為這樣設計的查詢條件構造工具方便嗎?
先來看看一個供銷存系統的所謂“萬能查詢”:
這個Super Filter也能完成基本的功能,但是操作起來不方便,功能也不完全,但是以前見過的“萬能查詢”基本上都是這個樣子的。
再來看看Access的查詢設計工具:
微軟所有產品的查詢設計工具都與此相類似,顯然這是一個給程式員或具有資料庫知識的人使用的工具:要求使用者自己輸入條件(運算子和值),雖然條件有“或”選項,但是能構造的查詢條件還是有限的。倒是欄位的選擇做的比下拉式清單來得方便多了。另外,它允許多表之間的串連,但這對終端使用者來說是不現實的——他們不可能瞭解資料庫的結構。
如果按照程式員的思路來的話,Query Builder可以做得更強大,實現的功能也會更多;如果按照終端使用者的思路來的話,應該越簡單越好,能夠快速掌握,符合使用者的習慣。如何在這兩者之間權衡,是很麻煩的事情。在此虛心向各位請教,徵集更好的、適合終端使用者使用的Query Builder設計方案!