Appendix BClient端元件\ClientQuery

ClientQuery

 

【功能說明】

用途:可以用來設定 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)對應InfoRefButtonAutoPanel屬性。

 

InfoRefButtonPanel( 参考按钮Panel )(Panel)對應InfoRefButtonPanel屬性。

 

 

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 , 而且訂單日期大於  1/1/2007,而且訂單日期小於 10/31/2007" 等條件說明。

 

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( );

 

 

Top of Page