【功能說明】
用途:可以用來設定
Query 的對話框的各欄位條件 , 並可組合 User 輸入的條件產生
Query 的 SQL 語句 , 可輔助 InfoNavigator.Query 不足之功能 , 並可作為報表條件輸入的對話框 , 不必另外再設計任何 Form 。除此以外, ClientQuery 還支援特殊輸入元件(如: InfoRefValBox , InfoComboBox ,
InfoDateTimePicker 等)
【元件屬性】
Name( 名稱 )(string)
元件名稱,用於識別該元件。
BindingSource (資料源) ( InfoBindingSource)
關聯的資料源 ( BindingSource) ,透過本元件對 BindingSource 所對應的資料。
Caption( 抬頭 )(String)
元件抬頭,如果是配合 Panel 顯示時,本屬性無效。
Columns( 欄位明細 )(collection)
條件欄位的設定值。可同時設定多個 Columns ,每個 Columns 有以下幾個屬性
Caption( 抬頭 )(string) :查詢欄位的抬頭,如果有設定資料字典時,會在選 Column 時自動決定此抬頭。
Column( 欄位 )(string) :查詢的欄位名稱。
NewLine( 換行 )(bool) :是否將目前查詢欄位放到新的一行中,如果為 False 則會排在前一個欄位的右方。
ColumnType( 欄位類別 )(string) :該欄位的類別,包括“ ClientQueryTextBoxColumn ” ( 一般 ) ,“ ClientQueryComboBoxColumn ”
(Combo) ,“ ClientQueryRefValColumn ” ( 關連選單 ) ,“ ClientQueryCalendarColumn ” ( 日曆輸入 ) , Client CheckBox Column ” ( 鈎選輸入 ) 等五種,預設為 ClientQueryTextBoxColumn 。
DefaultMode(
預設值模式 )(enum) :該欄位的類別, Inital 和 Focused 兩种,用于當設定欄位的預設時,是開啟 Form 時有預設,還是在進入焦點時才執行預設值,預設為 Initial 。
Operator( 查詢條件 )(string) :選擇查詢的條件,包括“ = “,“>”,“<”“>= ”“<= ”“ % ”“ %% ”。
Condition( 查詢關係 )(string) :選擇與上一個查詢的關係,包括“ or ”,“ and ”。
TextAlign( 對齊方式 )(string) :選擇用戶輸入時的 Caption 對齊方式,包括“ Left ”,“ Right ”,“ Center ”。
Width(
顯示寬度 )(int) :欄位的顯示寬度。
DefaultValue( 預設值 )(string) :設定該欄位的預設值。此處可以使用字串或數字的常數 ( 固定值 ) 或使用函數方式。
InfoRefVal( 關聯的 InfoRefVal)(String) :當欄位類別設定為“ ClientQueryComboBoxColumn ”或“ ClientQueryRefValColum ”時,需要選擇一個
InfoRefVal 作為條件欄位的元件對象與資料源。
ExternalRefval( 關聯的外部 InfoRefVal ) (string) :可以用來選擇別的 Form 或 Dll 中的 InfoRefVal 物件 , 而非一定要選擇目前 Form 上的
InfoRefVal 物件。
Visible(
可否顯示 )(bool) :用於設定該查詢欄位是否現實,一般可以用於非 User 輸入的固定條件查詢
IsNvarchar( 是否是Nvarchar )(bool):設置此欄位元在資料庫裡對應的欄位的類型是否為Nvarchar。
InfoDateTimeBox(InfoDateTimeBox)(
InfoDateTimeBox):選擇使用哪個InfoDateTimeBox。
InfoRefButtonAutoPanel(
參考按鈕自動Panel )(bool):對應InfoRefButton的AutoPanel屬性。
InfoRefButtonPanel(
参考按钮Panel )(Panel):對應InfoRefButton的Panel屬性。
GapHorizonal( 欄位水平間距 )(int)
欄位水平間距
GapVertical( 欄位垂直間距 )(int)
欄位垂直間距
KeepCondition(保存查詢條件)(bool)
設定是否將上一次查詢的條件保存,以便在下一次查詢中可以自動設定好。
Margin (查詢邊緣)( Margins )
用來設定查詢時,所有欄位標題的最大長度,用此來解決Caption 很長時會無法完整顯示的問題。
Botton ( int) 設定欄位標題的下邊距;
Left( int) 設定欄位標題的左邊距寬度;
Right( int) 設定欄位標題的右邊距寬度;
Top( int) 設定欄位標題的上邊距寬度。
TextColor(文字顏色)(System.Drawing.Font)
設定顯示文字的顏色。
【事件】
QueryWhere( EventArgs e)
通過此方法可以控制 Query 時的 Where 條件語句,同時提供 e.Cancel 來控制是否放棄查詢。
【功能函數】
Execute() :開啟查詢視窗,使用對話框的形式。
Show(PanelObject): 將查詢欄位顯示在 PanelObject 上 , 一般都是用 Dialog( 交談窗 ) 的方式來顯示查詢的欄位 , 如果使用本 Method
時即可將 Query 欄位顯示在 PanelObject 中。
Clear(PanelObject) : 可以將此 Panel 上所有的查詢欄位設定的查詢內容清除 , 即清除查詢條件。
Execute(PanelObject) : 將 Panel 上的查詢欄位顯示出來,並讓 User 輸入條件,當 User 按下 OK 時會自動組成 SQL 的 Where 語法 , 並透過配合的 InfoBindingSource 送往 Server 端 , 重新取得資料。
string Execute(bool ExecuteSQL) :
ExecuteSQL 為 True 時與前面 Execute() 一樣,如果為 False 代表不會去執行 Where 條件,而是在 User 按下 OK 時傳回查詢條件 , 按下 CANCEL
時則傳回 NULL 內容代表 User 按下取消。
String GetWhere():
让设计者取得 ClientQuery 所得到的 SQL 語句,自行組織 SQL 语句。
String GetWhere(Panel):
从 Panel 中取得组好的查询 Where 语句。
String GetWhereText() :
可以取得各個查詢欄位的 Captions 與條件內容,並以
sysmsg.xml 中的多語言取得條件的翻譯,如 " 客戶編號等於 2101 , 而且訂單日期大於
Control GetControl(index)
此 Method 可以取得查詢窗口中該 Column 對應的元件。 Index 是指在
Columns 中的序號,此功能配合 DefalutMode=Focused ,可以用來動態預設與前面條件欄位相關的預設值。
【其他說明】
1. ClientQuery 具有自動排版與預視( Preview )功能,可隨時在設計過程中查看排版情況。除了自動產生對話框的方式,可免除設計條件輸入表單外,亦可配合現有的 SpliterPanel 來自動顯示查詢條件,達到設計 Layout 為目的。
2. ClientQuery 支援 Varchar 8 或 Char 8 的日期格式之查詢,只要是對方欄位為此型態,系統會自動轉換與處理。
【範例】
ClientQuery 以程式方式設定預設值
(QueryColumns)(clientQuery1.Columns[3]).DefaultValue=
DateTime.Today.ToShortDateString();
clientQuery1.Execute( );