Appendix BClient端元件\AnyQuery

AnyQuery

 

【功能說明】

提供一個查詢畫面,讓用戶自定義條件,對表進行查詢, AnyQuery 可以在 InfoNavigator 中設定使用,也可以貼在畫面上單獨使用。

 

【屬性】

Name ( 名稱 ) (string)

元件名稱,用於識別該組件。

 

BindingSource ( 選擇查詢資料源 )(string)

選擇綁定的 InfoBindingSource ,也就是我們進行查詢的資料源。

 

Columns( 查詢欄位 )(Collection)

用於設定查詢的欄位

AutoSelect(bool) :設定查詢時,此欄位是否自動選中。

Caption(string) :欄位的標題(設定 Column 的時候會自動取出 DD 中的設定)

         Column(string) :選擇欄位的名稱

ColumnType(string) :選擇編輯的控制項類型,其中有如下選項 : AnyQueryTextBoxColumn , AnyQueryComboBoxColumn , AnyQueryCheckBoxColumn , AnyQueryRefValColumn , AnyQueryCalendarColumn 和 AnyQueryRefButtonColumn

DataCover(bool) :日期格式中否顯示時間, true 表示顯示時間。此時請將 Column 選為 AnyQueryCalendarColumn 。

Condition(string) :2 個條件之間的連接符( And 或 Or )

DefaultValue(string) :查詢預設值

InfoRefVal(Srvtools.InfoRefVal) :選擇對應關聯選單的 InfoRefVal ,注意:此時請將 Column 選為 AnyQueryRefValColumn 。

InfoRefButtonAutoPanel ( bool ) :使用 InfoRefButton 是否使用自動產生 Panel ,注意 : 當該屬性設定為 True 時,需配合 InfoRefVal 使用,使得InfoRefVal 作為 RefButton 開窗的資料源,同時將 Column 選為 AnyQueryRefButtonColumn 。

InfoRefButtonPanel ( string ) :選擇對應關聯選單的 InfoRefButton ,注意使用該屬性時, InfoRefButtonAutoPanel 為 false ,同時將 Column 選為 AnyQueryRefButtonColumn

Items(string[]) :當選擇 ComboBox 類型的時候,除了可以連 WebRefVal 取得資料之外,還可以在 Items 中輸入自己需要的 Item 。注意:此屬性只當 InfoRefVal 為空時有效。

Operator(string) :選擇欄位與值之間的操作符,其中符號有 "=" , "!=" , ">" , "<" , ">=" , "<=" , "%**" , "**%" , "%%" , "!%%" , "<->" , "!<->" , "IN" 和 "NOT IN"

         Width(int) :設定欄位元控制項的寬度

IsNvarchar( 是否是Nvarchar )(bool):設置此欄位元在資料庫裡對應的欄位的類型是否為Nvarchar。

DataType( 是否是Nvarchar )(enum):設置此欄位在資料庫裡對應的欄位的類型。

Enable( 使能 )(bool):設置此欄位的組件是否使能。

 

 

AutoDisableColumns( 自動自動失能控制 )(bool)

當此屬性設為 True 時,打開 AnyQuery ,所有的查詢條件欄位不能馬上更改,只有選中每行之前的 CheckBox ,才能對相應行的條件進行修改;設為 False 的話,則沒有此限制,直接就可以對任何條件進行更改。

AnyQueryID(AnyQuery 名稱 )(string)

由於 anyQuery 的資訊保存在 SYS_ANYQUERY 中,此屬性是為了保存時區別不同畫面的 AnyQuery 用的,默認為( AnyQuery 的 ID )

 

AllowAddQueryField( 允許添加查詢欄位 )(bool)

用於設定是否允許用戶在使用 AnyQuery 查詢時,自行新增條件。

 

QueryColumnMode( 查詢欄位元選擇模式 )(enum)

用於設定查詢欄位元的來源模式選擇,當模式選擇的是 ByBindingSource 的時候,在選擇欄位的時候會把所關聯的表的所有的欄位都添加進來讓用戶選擇;當模式選擇的是 ByColumns 的時候,在選擇欄位的時候只會把 AnyQuery 中的 Columns 裏所存在的欄位添加進來。

 

MaxCloumnCount( 最大查詢欄位數 )(int)

用於設定最多能設定多少個查詢欄位。(默認為 -1 ,表示沒有限制),如果 ByBindingSource 的時候為所有欄位,或 ByColumns 的時候為 AnyQuery 中 Columns 的數量超過了 Columns 的最大數,則以 Columns 的最大數為准。注意:程式默認當設定的欄位大於 5 個的時候,第一次打開 AnyQuery 時只顯示 5 個。

 

DetailBindingSource(明細資料源)(InfoBindingSource)

給Detail的查詢使用,設定Detail的InfoBindingSource,並且需要設定和Master的關聯Key。在DetailKeyField屬性中設定。

 

DetailKeyField(明細關聯欄位)(string)

給Detail的查詢使用,設定和Master的關聯Key,需要先設定DetailBindingSource屬性。

 

【使用說明】

AnyQuery 可以在 InfoNavigator 中設定使用,也可以貼在畫面上單獨使用。

在 InfoNavigator 中的使用方法
在 InfoNavigator 中先把 QueryMode 設為 AnyQuery ,然後在 QueryField 中設定回應的欄位,就可以在運行時,點擊 InfoNavigator 上的 Query 按鈕時就會Show 出 AnyQuery 的主畫面。就可以使用了。如果要保存在 AnyQuery 中所定義的範本,則需要在 InfoNavigator 中的 AnyQueryID 屬性中輸入一個 AnyQuery 的 ID ,這個 ID 的作用是用來過濾不同畫面的 AnyQuery 。

直接在畫面中貼 AnyQuery 使用方法
從工具欄中把 AnyQuery 貼到畫面上,選擇需要查詢的 InfoBindingSource ,這時 Columns 會自動把 InfoBindingSource 所連接的表的欄位元全部填充進來(控制項類型:當欄位的類型是 DateTime 的時候,控制項的類型為 AnyQueryCalendarColumn ,其他的則為 AnyQueryTextBoxColumn ),之後設計者可以根據自己的需要,把不需要的欄位刪除,或者更改相應的設置。當這個設定完之後,只要調用 AnyQuery.Execute() 就可以 Show 出 AnyQuery 的主畫面進行操作了。

 

主畫面

Query :對所設定的條件進行查詢(只有打勾的條件才會被執行)

Add :新增一個欄位作為查詢條件

Subtract :刪除一個條件(最下面的一個)

Save :保存當前的設定(另存為一個 Xml 檔)

Load :讀取之前的設定(注意:讀取的 XML 檔必須和當前的 AnyQuery 所連接的相同的表)

Quit :退出

 

【注意】在選擇欄位元的時候,會根據 AnyQuery 裏的 Columns 或者 InfoNavigator 裏的 QueryFields 裏設定更改 Value 的輸入方式。

 

 

Top of Page