版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
[PB]-數(shù)據(jù)窗口對(duì)象(一)////////////////////////////////////////數(shù)據(jù)窗口對(duì)象的數(shù)據(jù)源PB提供5種數(shù)據(jù)源:QuickSelect(快速選擇類型)、SQLSelect(SQL選擇類型)、Query(查詢類型)、External(外部類型)和StoredProcedure(存儲(chǔ)過(guò)程類型)QuickSelect只能從一個(gè)數(shù)據(jù)表或者視圖中選取數(shù)據(jù)(無(wú)關(guān)聯(lián)的表或者視圖)??SQLSelect1、選擇表可以一次選擇多個(gè)表2、選擇字段SelectAll//選擇所有字段SelectTables〃重新選擇表ConverttoSyntax//進(jìn)入SQL語(yǔ)法狀態(tài)Compute〃計(jì)算字段,右鍵->Columns〃選擇字段右鍵->Functions〃選擇函數(shù)3、指定檢索條件RetrievalArguments〃定義檢索參數(shù)變量的類型和名稱where〃檢索條件,右鍵->Columns〃選擇字段右鍵->Functions〃選擇函數(shù)右鍵->Arguments〃選擇參數(shù)右鍵->Value//選擇值右鍵->Select//從其他表中選擇QueryPB可以將特定的SQL語(yǔ)句保存為Query對(duì)象,不同的Query數(shù)據(jù)源的數(shù)據(jù)窗口都可以使用這些已經(jīng)保存好的SQL語(yǔ)句來(lái)提取數(shù)據(jù)External當(dāng)和不存在于數(shù)據(jù)庫(kù)中的數(shù)據(jù)打交道或者要利用數(shù)據(jù)窗口的某些特性但不進(jìn)行數(shù)據(jù)處理時(shí),使用此數(shù)據(jù)源。無(wú)SQL語(yǔ)句。StoredProcedure使用已經(jīng)定義好的存儲(chǔ)過(guò)程來(lái)做數(shù)據(jù)源////////////////////////////////////////數(shù)據(jù)窗口對(duì)象的顯示樣式數(shù)據(jù)窗口對(duì)象顯示樣式有11種:Grid、Tabular、Group、Freefrom、Label、N-Up、Crosstab、Graph、Composite、RichText、OLE2.0Grid:字段橫向排列在detailband中,標(biāo)簽橫向排列在headerband中,和字段相對(duì)應(yīng),字段和字段之間有網(wǎng)格線分隔,類似于電子表格。在數(shù)據(jù)窗口的預(yù)覽狀態(tài)下可以調(diào)整字段的順序,并且自動(dòng)反饋到數(shù)據(jù)窗口的設(shè)計(jì)狀態(tài)中,調(diào)整字段順序時(shí),對(duì)應(yīng)的標(biāo)簽順序也相應(yīng)地自動(dòng)調(diào)整。缺省情況下,字段不能隨意移動(dòng),只能在detailband中做上下移動(dòng)。這種顯示樣式的數(shù)據(jù)窗口布局整齊,但不能靈活地安排字段、標(biāo)簽、表頭的布局,所以常用來(lái)顯示數(shù)據(jù)或錄入數(shù)據(jù),而很少用來(lái)做報(bào)表。Grid顯示樣式的數(shù)據(jù)窗口中,表頭只能和標(biāo)簽放置在同一個(gè)headerband中,在放置表頭處仍然有網(wǎng)格線。Tabular:當(dāng)剛剛創(chuàng)建這種樣式的數(shù)據(jù)窗口時(shí),字段、標(biāo)簽的布局和Grid顯示樣式的數(shù)據(jù)窗口相同,都是橫向排列的,但是字段之間沒(méi)有網(wǎng)格線分隔。字段和標(biāo)簽的布局可以隨意調(diào)整,在headerband中的標(biāo)簽可以隨意拖放到detailband中,detailband中的字段也可以拖動(dòng)到headerband中。這種顯示格式的數(shù)據(jù)窗口布局安排非常靈活,開(kāi)發(fā)人員可以根據(jù)需要設(shè)計(jì)字段和標(biāo)簽的布局,然后手工畫(huà)線制作表格,在制作中國(guó)式報(bào)表時(shí)經(jīng)常使用,雖然比較煩瑣,但是表格比較美觀,比較適合中國(guó)式報(bào)表的要求,另外,這種格式的數(shù)據(jù)窗口在數(shù)據(jù)錄入、查詢時(shí)也經(jīng)常使用。Group:Group分組顯示樣式的數(shù)據(jù)窗口可以指定按哪個(gè)(或哪些)字段進(jìn)行分組,可以用指定的分組條件將數(shù)據(jù)分組顯示,并且允許為每組指定一些計(jì)算。例如,要顯示某公司在各地區(qū)的銷售數(shù)據(jù),可以按地區(qū)分組,為每個(gè)分組指定統(tǒng)計(jì)計(jì)算,在地區(qū)改變時(shí)顯示地區(qū)的銷售總金額。當(dāng)選擇多個(gè)字段時(shí),這幾個(gè)字段共同作為分組的條件,而不是以每個(gè)字段都創(chuàng)建一個(gè)分組。使用Group類型只能創(chuàng)建一個(gè)分組,要?jiǎng)?chuàng)建多個(gè)分組必須在DataWindow畫(huà)板中完成。Freefrom:前面討論的三種顯示樣式都是一次可以顯示多行數(shù)據(jù)的。對(duì)于比較重要的數(shù)據(jù),用戶可能需要一次只編輯一行這時(shí)可以使用Freefrom顯示樣式的數(shù)據(jù)窗口。該類型的數(shù)據(jù)窗口將標(biāo)簽放置在字段的左例,字段和標(biāo)簽放置在同一個(gè)detailband中,先從上到下再?gòu)淖蟮接乙来闻帕?。?shí)際上,這種顯示樣式的數(shù)據(jù)窗口布局也很靈活,可以隨意安排字段和標(biāo)簽的位置。這種顯示樣式的數(shù)據(jù)窗口在卡片式數(shù)據(jù)的錄入和顯示方面也經(jīng)常使用。Label:如果用戶想要生成郵件標(biāo)簽,可以使用Label顯示樣式的數(shù)據(jù)窗口來(lái)實(shí)現(xiàn)。N-Up:這是可以在同一頁(yè)上顯示多列相同字段的一種特殊的顯示樣式。當(dāng)要顯示的字段比較少或者不同行之間的數(shù)據(jù)需要做比較時(shí),經(jīng)常使用這種顯示樣式。使用向?qū)Э梢詣?chuàng)建N-up顯示樣式的數(shù)據(jù)窗口,需要指定的一個(gè)重要參數(shù)是每行重復(fù)顯示的字段的次數(shù),也就是Numberofrowsperdetailband缺省為2。該參數(shù)的大小視需要顯示的字段總長(zhǎng)度和報(bào)表使用的打印紙寬度而定。N-up顯示樣式的數(shù)據(jù)從左到右顯示。另外,當(dāng)選中行數(shù)據(jù)時(shí),并不能選中實(shí)際上看到的一整行,而是邏輯上的一行。CrossTab:當(dāng)需要做數(shù)據(jù)統(tǒng)計(jì)和分析時(shí),最好使用CrossTab顯示樣式的數(shù)據(jù)窗口,雖然報(bào)表在顯示格式方面不適合中國(guó)人的口味,但還沒(méi)有哪個(gè)C/S數(shù)據(jù)庫(kù)開(kāi)發(fā)軟件將數(shù)據(jù)統(tǒng)計(jì)分析做得如此之好。使用CrossTab顯示樣式可以創(chuàng)建復(fù)雜的分類統(tǒng)計(jì)表,不管是表頭分類還是行分類。創(chuàng)建CrossTab顯示樣式的數(shù)據(jù)窗口時(shí),有幾個(gè)重要參數(shù)需要指定。這些重要參數(shù)是行、列和統(tǒng)計(jì)值。每個(gè)參數(shù)可以指定多個(gè)字段,也可以使用表達(dá)式。當(dāng)指定多個(gè)字段(或表達(dá)式)時(shí),字段的順序決定在表中的分組順序。比如,統(tǒng)計(jì)某銷售公司某年各個(gè)月份各種產(chǎn)品、不同花色在各個(gè)地區(qū)的銷售情況,可以用月份和地區(qū)作為列,用產(chǎn)品名稱和花色作為行。在Columns列表框中按Month、Region的順序加入字段,沒(méi)有Month可以使用表達(dá)式Month(sales_date)來(lái)獲取銷售時(shí)的月份。Rows列表框中的字段對(duì)應(yīng)數(shù)據(jù)窗口中左側(cè)的表頭,Columns列表框中的字段對(duì)應(yīng)數(shù)據(jù)窗口中上面表頭,Values是出現(xiàn)在數(shù)據(jù)窗口表格單元中的統(tǒng)計(jì)值;SourceData列表框中是可以使用的字段,使用鼠標(biāo)選中并拖動(dòng)到相應(yīng)的列表框即可。在Rows、Columns.Values三個(gè)列表框中都可以用鼠標(biāo)雙擊已有字段,可以在接下來(lái)的對(duì)話框中輸入組合表達(dá)式。比如,使用year作為Columns是可以的,也可以雙擊然后在上面的窗口中輸入下面的表達(dá)式:year+〃年〃Graph:Graph顯示樣式的數(shù)據(jù)窗口可以以多種圖形樣式將數(shù)據(jù)顯示出來(lái),例如餅圖、柱狀圖、折線圖等。Graph顯示樣式的數(shù)據(jù)窗口給用戶的感覺(jué)是使用方便、表達(dá)直觀。從開(kāi)發(fā)者的角度來(lái)講,創(chuàng)建Graph顯示樣式的數(shù)據(jù)窗口也是很簡(jiǎn)單的事情,所以在開(kāi)發(fā)應(yīng)用程序時(shí)不要忘記這費(fèi)力不多卻很受用戶歡迎的顯示樣式。創(chuàng)建Graph顯示樣式的數(shù)據(jù)窗口時(shí),最重要的參數(shù)是Category、Values及Series。在創(chuàng)建向?qū)е锌梢灾付ㄟ@幾個(gè)參數(shù)。指明這三個(gè)參數(shù)的操作很簡(jiǎn)單,在下拉列表框中選擇合適的字段即可。Category可以理解成顯示在橫向坐標(biāo)鈾上的字段,Values可以理解成顯示在縱向坐標(biāo)軸上的字段,而Series是橫向坐標(biāo)軸上同組比較時(shí)的分組標(biāo)準(zhǔn)。Composite:這種顯示樣式的數(shù)據(jù)窗口可以將多種類型的、多個(gè)邏輯上毫不相關(guān)的數(shù)據(jù)窗口放置到一起,是一種靈活的數(shù)據(jù)表現(xiàn)形式。因?yàn)镃omposite顯示樣式的數(shù)據(jù)窗口不允許修改其中的數(shù)據(jù),所以不能用于數(shù)據(jù)錄入和數(shù)據(jù)修改,只能在報(bào)表時(shí)使用這種顯示祥式的數(shù)據(jù)窗口。使用這種顯示樣式的數(shù)據(jù)窗口創(chuàng)建報(bào)表,經(jīng)常將對(duì)同一問(wèn)題不同表現(xiàn)形式的數(shù)據(jù)窗口或者是關(guān)系緊密的數(shù)據(jù)放到一起。例如,將幾個(gè)關(guān)鍵數(shù)據(jù)的統(tǒng)計(jì)結(jié)果以Graph顯示樣式顯示在最上面,用CrossTab類型的數(shù)據(jù)窗口將比較詳細(xì)的數(shù)據(jù)統(tǒng)計(jì)結(jié)果顯示在中間,然后是Grid類型的詳細(xì)數(shù)據(jù),這樣的報(bào)表數(shù)據(jù)表現(xiàn)能力要比任何單一的一種數(shù)據(jù)窗口要強(qiáng)得多。RichText:RichText祥式的數(shù)據(jù)窗口使數(shù)據(jù)庫(kù)中的數(shù)據(jù)和文字可以在一起排版,可以方便地特?cái)?shù)據(jù)庫(kù)中的數(shù)據(jù)和文字內(nèi)容一起形成文檔、報(bào)告等;提供了很強(qiáng)的文字編輯處理能力,可以很方便地處理文字的多種格式:可以開(kāi)發(fā)更有表現(xiàn)力的應(yīng)用系統(tǒng),自動(dòng)生成報(bào)告、文檔資料,省去了使用PowerBuilder的應(yīng)用程序卻需要切換到其他文字處理軟件中的麻煩。OLE2.0:OLE是ObjectLinkandEmbedding的字頭縮寫(xiě),表示對(duì)象鏈接和嵌入。使用這種技術(shù),可以將其他軟件的功能引入到PowerBuilder開(kāi)發(fā)的應(yīng)用程序中。PowerBuilder中不僅提供了OLE2.0顯示樣式的數(shù)據(jù)窗口,而且在窗口中提供了OLE2.0控件。例如,在數(shù)據(jù)庫(kù)中保存的圖像在OLE2.0顯示樣式的數(shù)據(jù)窗口中,可以借助一些專門(mén)的圖像處理軟件來(lái)處理,并可以把處理結(jié)果返回保存到數(shù)據(jù)庫(kù)中。只有當(dāng)數(shù)據(jù)庫(kù)的表中包含blob類型的字段時(shí),才有必要使用OLE2.0顯示樣式的數(shù)據(jù)窗口。將blob類型的字段作為OLE2.0列,在處理其中的數(shù)據(jù)時(shí),可以直接觸發(fā)調(diào)用相關(guān)的軟件進(jìn)行處理,并能夠?qū)⑻幚斫Y(jié)果返回保存到數(shù)據(jù)庫(kù)中。例如,某字段中保存的是Excel文檔,可以創(chuàng)建OLE2.0顯示樣式的數(shù)據(jù)窗口,當(dāng)雙擊該字段時(shí)可以調(diào)用Excel,然后在Excel中編輯處理數(shù)據(jù),保存編輯結(jié)果返回到數(shù)據(jù)窗口時(shí),可以將結(jié)果反映到數(shù)據(jù)窗口中。創(chuàng)建OLE2.0顯示樣式的數(shù)據(jù)窗口,需要指定三類參數(shù)。SourceData框中顯示的是所有可用字段,可以使用鼠標(biāo)選中并拖動(dòng)到其他兩個(gè)列表框中;Groupby列表框中顯示的是用來(lái)分組的字段,由于OLE2.0數(shù)據(jù)窗口的特殊性,它的分組不在設(shè)計(jì)時(shí)創(chuàng)建,只能在向?qū)е袆?chuàng)建;TargetData框中顯示的是在數(shù)據(jù)窗口中要顯示的字段,使用了分組,則對(duì)該框中的字段做統(tǒng)計(jì)(字符串型的列將統(tǒng)計(jì)記錄數(shù),數(shù)值型的列將統(tǒng)計(jì)累加和),沒(méi)有使用分組,則直接顯示它們的值。接下來(lái)要設(shè)置的是和OLE對(duì)象關(guān)系緊密的內(nèi)容////////////////////////////////////////數(shù)據(jù)窗口對(duì)象的畫(huà)板、band和層次數(shù)據(jù)窗口畫(huà)板整個(gè)數(shù)據(jù)窗口畫(huà)板由6個(gè)視窗構(gòu)成,分別是:Design:設(shè)計(jì)數(shù)據(jù)窗口對(duì)象視窗,可以使用菜單Design-Options來(lái)改變Design窗口的外觀Preview:預(yù)覽數(shù)據(jù)窗口的外觀,顯示相應(yīng)表中的對(duì)應(yīng)的數(shù)據(jù),及對(duì)數(shù)據(jù)的各種操作ControlList:數(shù)據(jù)窗口中所有的部件構(gòu)成的一個(gè)列表Data:顯示此數(shù)據(jù)窗口對(duì)象所對(duì)應(yīng)的表中的各個(gè)字段的值Propertie,:屬性ColumnSpecification:該視窗是個(gè)比較重要的視窗,可以增加、刪除、修改列的初始值、檢驗(yàn)表達(dá)式或者校驗(yàn)信息數(shù)據(jù)窗口對(duì)象的band數(shù)據(jù)窗口用帶-band將其分隔成四部分:Header:出現(xiàn)在每頁(yè)的頂端,用于顯示標(biāo)題和列的題頭Detail:包含了數(shù)據(jù)窗口對(duì)象的主體,顯示了各行的數(shù)據(jù)和相關(guān)的標(biāo)簽。在DataWindow對(duì)象高度的范圍內(nèi),細(xì)節(jié)條能夠按照需要自動(dòng)擴(kuò)大任意倍Footer:出現(xiàn)在每頁(yè)的底端,用來(lái)顯示文本和頁(yè)號(hào)Summary:出現(xiàn)在DataWindow對(duì)象的最后一頁(yè),用來(lái)為整個(gè)數(shù)據(jù)窗口對(duì)象顯示總計(jì)和總和數(shù)據(jù)窗口對(duì)象的層次數(shù)據(jù)窗口分為三個(gè)層次,即背景層(background)、帶層(band)和前景層(foreground)o在數(shù)據(jù)窗口上放置的部件可以屬于任意一個(gè)層次,但如果設(shè)計(jì)不當(dāng),數(shù)據(jù)顯示會(huì)凌亂不堪。通常情況下,背景層放置繪圖對(duì)象以設(shè)置漂亮的背景;帶層放置字段、計(jì)算域、標(biāo)簽等和報(bào)表內(nèi)容緊密相關(guān)的內(nèi)容,在運(yùn)行狀態(tài)下,PowerBuilder會(huì)自動(dòng)格式化帶層;前景層放置一些無(wú)需打印的內(nèi)容,最典型的是Graph部件。設(shè)置部件屬于哪個(gè)層的方法是首先選中部件,然后在屬性視窗中進(jìn)入到Positon屬性頁(yè),修改該部件的Layer屬性,在Layer下拉列表框中選擇適當(dāng)?shù)膶蛹纯伞2还苣膫€(gè)層上的對(duì)象,鼠標(biāo)右鍵彈出菜單中都有SendtoBack和BringtoFont兩個(gè)選項(xiàng)。這兩個(gè)功能和層之間有什么關(guān)系呢?沒(méi)有任何關(guān)系!不管部件屬于哪個(gè)層,都可以使用這兩個(gè)菜單項(xiàng),使用完后部件也不會(huì)屬于其他的層,只是重疊部件的前后關(guān)系發(fā)生了變化。所以當(dāng)部件沒(méi)有重疊時(shí),使用這兩個(gè)菜單選項(xiàng)沒(méi)有什么意義,雖然這兩個(gè)菜單選項(xiàng)也可以使用。選中數(shù)據(jù)窗口上的部件不區(qū)分層。也就是說(shuō),選中操作不受層的影響,可以同時(shí)選中不同層上的部件。當(dāng)設(shè)置了較大的背景圖片時(shí),可能不能使用拖動(dòng)鼠標(biāo)來(lái)直接選中多個(gè)對(duì)象,因?yàn)橥蟿?dòng)時(shí),鼠標(biāo)的起點(diǎn)可能就在背景圖片上。解決方法是在所有操作都完成后再放置背景圖片,也可首先將背景圖片剪切掉,進(jìn)行其他操作后再粘貼圖片,或者先將背景圖片拖到?jīng)]有其他對(duì)象的位置上,操作完成后再將圖片背景拖放到原來(lái)位置////////////////////////////////////////數(shù)據(jù)窗口對(duì)象及字段的修改屬性數(shù)據(jù)窗口只能修改一個(gè)數(shù)據(jù)表。當(dāng)數(shù)據(jù)窗口的數(shù)據(jù)來(lái)源于不止一個(gè)數(shù)據(jù)表時(shí),可以用腳本控制數(shù)據(jù)窗口的修改屬性來(lái)對(duì)數(shù)據(jù)表逐個(gè)進(jìn)行修改。當(dāng)數(shù)據(jù)窗口是用來(lái)接受用戶的手工錄入數(shù)據(jù)時(shí),應(yīng)該設(shè)置兩方面的屬性才能確保數(shù)據(jù)窗口能夠用來(lái)修改數(shù)據(jù)表。一個(gè)是修改數(shù)據(jù)窗口的修改屬性,另一個(gè)是用戶可以修改的字段的相關(guān)屬性值數(shù)據(jù)窗口對(duì)象的修改屬性Rows->UpdateProperties如果數(shù)據(jù)窗口對(duì)應(yīng)的數(shù)據(jù)表中定義了主鍵或者唯一性索引,則數(shù)據(jù)窗口創(chuàng)建時(shí)默認(rèn)的就是允許修改,并且正確設(shè)置了所有的修改屬性。否則就需要手工進(jìn)行設(shè)置。當(dāng)增加、刪除、或者重新選擇了字段時(shí),PB將數(shù)據(jù)窗口的的修改屬性為不允許,這時(shí)也應(yīng)該進(jìn)行手工設(shè)置。AllowUpdates:允許更新。TabletoUpdate:指定要被更新的表。WhereClauseforUpdate/Delete配置如何在Update和DeleteSQL語(yǔ)句中構(gòu)造where子句1、KeyColumns當(dāng)開(kāi)發(fā)單用戶應(yīng)用程序或者用戶都以加鎖方式訪問(wèn)數(shù)據(jù)庫(kù)時(shí)可以選中該選項(xiàng)。該選項(xiàng)表示數(shù)據(jù)窗口只使用在"UniqueKeyColumn”列表框中指定的唯一列進(jìn)行數(shù)據(jù)更新。使用這種方式來(lái)修改數(shù)據(jù)庫(kù),并發(fā)性很高,不同的用戶都可以并發(fā)地訪問(wèn)數(shù)據(jù)庫(kù),但是數(shù)據(jù)的完整性卻非常差。因此要保護(hù)數(shù)據(jù)完整性,只有在單用戶程序或者加鎖訪問(wèn)方式下才使用這種修改方式。如:在add_book(通訊錄)數(shù)據(jù)表中定義了4個(gè)字段,id為主鍵,name,address,telephone三個(gè)字段為可修改字段,有如下一條數(shù)據(jù)(001,陳,杭州,1395813)。若想把name改為“萬(wàn)”,數(shù)據(jù)窗口產(chǎn)生如下的update語(yǔ)句:updateadd_booksetname='萬(wàn)'whereid='001'2、KeyandUpdateableColumns這種修改方式是默認(rèn)的修改方式,它用主鍵列和可以修改的列來(lái)創(chuàng)建where子句,具有很高的數(shù)據(jù)完整性,但是并發(fā)性不是太好。推薦使用這種修改方式。保存數(shù)據(jù)時(shí)將產(chǎn)生如下的SQL語(yǔ)句:updateadd_booksetname='萬(wàn)’whereid='001'andname=’陳’andaddress='杭州’andtelephone='1395813'3、KeyandModifiedColumns該方法是上面兩種方法的折中,當(dāng)不同的用戶并發(fā)修改同一行數(shù)據(jù)的不同字段時(shí),都能成功修改,所以它的并發(fā)性有了一定的限制,數(shù)據(jù)的完整性比第一種修改方式有所提高。這種修改方式使用主鍵和數(shù)據(jù)發(fā)生了變化的列來(lái)產(chǎn)生where子句。保存數(shù)據(jù)時(shí)產(chǎn)生如下的SQL語(yǔ)句:updateadd_booksetname='萬(wàn)'whereid='001'andname='陳'KeyModification:該組框用來(lái)指定當(dāng)用戶修改了主鍵時(shí),數(shù)據(jù)窗口如何來(lái)更新數(shù)據(jù)表中的主鍵字段。有兩種選擇UseDeletethenInsert和UseUpdate。第一個(gè)選項(xiàng)是先刪除原有的主鍵值,然后再使用新的主鍵值插入一個(gè)完整的行。使用這種更新主鍵的方式可以減少組織數(shù)據(jù)的工作量,但在數(shù)據(jù)庫(kù)中各個(gè)數(shù)據(jù)表之間存在父子制約關(guān)系,并且依賴該主鍵的外部鍵被指定為級(jí)聯(lián)刪除時(shí),操作就不會(huì)成功的。因?yàn)榧?jí)聯(lián)刪除方式要求當(dāng)依賴主鍵的外部鍵有數(shù)據(jù)時(shí)就不能刪除主鍵。當(dāng)DBMS允許更新主鍵列時(shí),可以使用第二個(gè)選項(xiàng),該選項(xiàng)直接修改主鍵值,所以防止了級(jí)聯(lián)刪除帶來(lái)的操作不成功的問(wèn)題。UpdateableColumns:指定被更新的字段。當(dāng)數(shù)據(jù)窗口中的字段來(lái)自不止一個(gè)數(shù)據(jù)表時(shí),這時(shí)一定要選擇同一個(gè)表中的字段,因?yàn)橐粋€(gè)數(shù)據(jù)窗口一次只能更新一個(gè)數(shù)據(jù)表,當(dāng)數(shù)據(jù)窗口中增添了字段時(shí),新增添的字段往往是不允許修改的,一定要在該列表框中選擇該字段。UniqueKeyColumn:選擇唯一標(biāo)識(shí)一行的列。如果在定義數(shù)據(jù)表時(shí)定義了主鍵,單擊右面的"PrimaryKey”按鈕可以在該列表框中選中主鍵。IdentityColumn:該下拉列表框用于為下拉列表框中所指定的列(通常是主鍵列)生成序號(hào),當(dāng)且僅當(dāng)DBMS支持序號(hào)生成時(shí)該作用才有效數(shù)據(jù)窗口對(duì)象字段的修改屬性**相關(guān)屬性數(shù)據(jù)窗口中字段的相關(guān)屬性:1、字段的TabOrder值2、字段的Protect屬性3、字段的DisplayOnly屬性4、字段的Visible屬性上述屬性前3個(gè)中任意一個(gè)都可以讓用戶無(wú)法修改字段中的數(shù)據(jù):最后一個(gè)屬性決定字段是否可見(jiàn),不可見(jiàn)的字段不管其他屬性如何設(shè)置.用戶都無(wú)法修改字段中的數(shù)據(jù)。當(dāng)字段的TabOrder值為0時(shí),肯定不能獲得焦點(diǎn),但是非0時(shí)也不一定能獲得焦點(diǎn),還得看字段的Protect屬性是否設(shè)置為1;當(dāng)字段的TabOrder值不為0,Protect屬性不為1并且字段的Visible屬性為T(mén)rue時(shí),肯定可以獲得焦點(diǎn)。DisplayOnly屬性和焦點(diǎn)是否能夠獲得無(wú)關(guān)(即選中Displayonly時(shí)可以選中字段,可以復(fù)制,但不能更新)。**數(shù)據(jù)保護(hù)可以用以下三種方法將字段設(shè)置為用戶不可修改的字段:在數(shù)據(jù)窗口設(shè)計(jì)時(shí)將這些字段的TabOrder值置為0,以使該字段不能獲得焦點(diǎn),用戶無(wú)法選中和編輯該字段。將字段的DisplayOnly屬性設(shè)置為T(mén)rue。該字段可以獲得焦點(diǎn),可以選中該字段,還可以拷貝復(fù)制該字段的內(nèi)容,但不能編輯該字段中的內(nèi)容。設(shè)置字段的Protect屬性。字段的Protect屬性如果設(shè)置為“1”,則該字段的TabOrder值即使不是0也不會(huì)得到焦點(diǎn)。使用該屬性可以保護(hù)一些重要的數(shù)據(jù)。////////////////////////////////////////數(shù)據(jù)窗口對(duì)象的字段操作字段的編輯類型PB提供了六種編輯類型:Edit是字段的缺省編輯類型,可以用于所有類型的字段上。CheckBox編輯類型在這里是一種狀態(tài)選擇,可以為其規(guī)定選中和非選中狀態(tài)時(shí)的文字,當(dāng)字段的輸入內(nèi)容非此即彼時(shí),可以使用這種編輯類型。DropDownDW是一種用來(lái)限制用戶輸入數(shù)據(jù)的非常好的編輯方式,用戶只能通過(guò)選擇錄入數(shù)據(jù),并且選擇的數(shù)據(jù)來(lái)自其他數(shù)據(jù)窗口的某字段,從而可以確保數(shù)據(jù)的一致性和正確性。當(dāng)錄入外部鍵時(shí),經(jīng)常使用這種編輯類型。使用這種方式可以增強(qiáng)程序的適應(yīng)性和靈活性。DropDownListBox在外觀上和DropDownDW類型相同,但它的數(shù)據(jù)不會(huì)發(fā)生變化,是固定的,適合用來(lái)錄入諸如學(xué)歷、省份、月份等范圍固定的數(shù)據(jù)項(xiàng)。EditMask經(jīng)常用來(lái)錄入整型或日期型數(shù)據(jù)。它底優(yōu)勢(shì)在于可以給用戶提供清晰的數(shù)據(jù)格式,對(duì)用戶的操作有很強(qiáng)的提示性;還可以為該編輯類型設(shè)置Spin,以便用鼠標(biāo)單擊上下箭頭來(lái)增大或減小數(shù)據(jù)。RadioButtons在錄入取值為比較小范圍內(nèi)的數(shù)據(jù)經(jīng)常使用,用戶使用鼠標(biāo)進(jìn)行選擇操作即可錄入數(shù)據(jù),操作比較方便。字段的編輯格式1、Limit-限制輸入長(zhǎng)度可以規(guī)定在該字段中輸入的信息長(zhǎng)度,缺省是字段在數(shù)據(jù)表中定義的長(zhǎng)度。如果在數(shù)據(jù)窗口創(chuàng)建以后又添加了字段,這時(shí)缺省長(zhǎng)度是0,這時(shí)用戶所能輸入的長(zhǎng)度取決于編輯框的長(zhǎng)度(如果沒(méi)有設(shè)置字段的AutoHorzScroll屬性或者設(shè)置了該屬性并且Limit屬性為0,則用戶輸入的最大長(zhǎng)度取決于編輯框所能接受的最大長(zhǎng)度),應(yīng)該手工修改其限制長(zhǎng)度為字段在表中定義的長(zhǎng)度。修改方法是,在字段屬性窗口的Edit頁(yè)Limited輸入框中輸入一個(gè)整數(shù)即可2、DisplayOnly-不允許用戶修改選中字段對(duì)應(yīng)屬性窗口中的DisplayOnly選項(xiàng)即可。在程序運(yùn)行時(shí),該字段中的內(nèi)容可以顯示,并且可以獲得焦點(diǎn),但是用戶不能修改字段的內(nèi)容,從而起到保護(hù)數(shù)據(jù)的作用。建議使用這種方式來(lái)保護(hù)字段中的數(shù)據(jù),雖然不能編輯字段內(nèi)容,但可以選中并復(fù)制,比設(shè)置字段的TabOrder值有更多的靈活性3、Required-必須輸入有些信息要求用戶必須輸入,這時(shí)可以選中字段的Required屬性。不輸入數(shù)據(jù)就無(wú)法離開(kāi)該字段。4、Password-密碼輸入選中字段屬性窗口中Edit頁(yè)上的Password屬性即可,字段上數(shù)據(jù)顯示為“*”號(hào)5、Format-格式屬性視圖中Edit屬性頁(yè)中包含F(xiàn)ormat屬性,并且還有一個(gè)專門(mén)的Format屬性頁(yè)。Edit屬性頁(yè)的Format屬性可以設(shè)置字段編輯時(shí)的顯示格式,F(xiàn)ormat屬性頁(yè)中的Format設(shè)置字段不被編輯時(shí)的顯示格式。Format的設(shè)置:Numbers:可以使用“0”、“#”、“.”和一些算術(shù)符號(hào)來(lái)表示,使用保留字“[general]”或者“[Currency]”時(shí),PB將使用操作系統(tǒng)的設(shè)置格式。關(guān)于操作系統(tǒng)的格式,Windows可以在控制面板的區(qū)域設(shè)置中修改。[General]5-50.505-510.005.00-5.000.50札##05-51#,##0.005.00-5.000.50$#,##0;($#,##0)$5($5)$1$#,##0;-$#,##0$5-$5$1$#,##0;[RED]($#,##0)$5($5)$1$#,##0.00;($#,##0.00)$5.00($5.00)$0.50$#,##0.00;[RED]($#,##0.00)$5.00($5.00)$0.500%500%-500%50%0.00%500.00%-500.00%50.00%0.00E+005.00E+00-5.00E+005.00E-01Strings:可以用兩部分來(lái)表示該類型數(shù)據(jù)的顯示,前面是必需部分,后面是NULL時(shí)表示?!癅”代表一個(gè)字符。如:〃[red](@@@)@@@-@@@@〃Dates:使用幾個(gè)特定的字母代表特定的含義,它們的組合構(gòu)成Data類型的格式。d表示天的數(shù)字,沒(méi)有前綴09dd表示天的數(shù)字,有前綴009ddd星期幾的英文縮寫(xiě)Mondddd星期幾的英文全稱Mondaym沒(méi)有前綴0的月份6mm有前綴0的月份06mmm月份的英文縮寫(xiě)Junmmmm月份的英文全稱Juneyy兩位數(shù)字表示的年份97yyyy四位數(shù)字表示的年份1997兩位的年份如果小于50,PB則認(rèn)為是21世紀(jì);大于50則認(rèn)為是20世紀(jì)。比如,“85”表示的年份PB認(rèn)為是“1985”年;“40”表示的年份PB認(rèn)為是“2040”。Times:使用幾個(gè)特定的字母代表特定的含義,它們的組合構(gòu)成Time類型的格式。h沒(méi)有前綴0的表示小時(shí)的數(shù)字hh有前綴0的表示小時(shí)的數(shù)字m沒(méi)有前綴0的表示分鐘的數(shù)字,必須出現(xiàn)在h或者h(yuǎn)h之后mm有前綴0的表示分鐘的數(shù)字,必須出現(xiàn)在h或者h(yuǎn)h之后s沒(méi)有前綴0的表示秒的數(shù)字,必須出現(xiàn)在m或者mm之后ss有前綴0的表示秒的數(shù)字,必須出現(xiàn)在m或者mm之后ffffff沒(méi)有0前綴的毫秒,必須出現(xiàn)在s或者ss之后AM/PM兩個(gè)大寫(xiě)的縮寫(xiě)字母,代表上午和下午am/pm兩個(gè)小寫(xiě)的縮寫(xiě)字母,代表上午和下午A/P一個(gè)大寫(xiě)的縮寫(xiě)字母,代表上午和下午a/p一個(gè)小寫(xiě)的縮寫(xiě)字母,代表上午和下午6、AutoSelection-自動(dòng)選中當(dāng)字段獲得焦點(diǎn)時(shí),自動(dòng)選中當(dāng)前行字段中的內(nèi)容,這在需要?jiǎng)h除或者拷貝時(shí)用處比較大。選中字段對(duì)應(yīng)屬性窗口中Edit頁(yè)上的autoselection即可。7、設(shè)置滾動(dòng)條AutoHorzScroll--自動(dòng)橫向滾動(dòng)AutoVertScroll--自動(dòng)縱向滾動(dòng)HorzScrollBar--橫向滾動(dòng)條VertScrollBar--縱向滾動(dòng)條8、UseCodeTable-使用CodeTable使用CodeTable可以自動(dòng)轉(zhuǎn)換用戶的輸入信息,也可以校驗(yàn)用戶的輸入信息是否正確。a)選中字段的UseCodeTable屬性b)在CodeTable中定義代碼表,該輸入框中包括兩列,DisplayValue用來(lái)進(jìn)行顯示,DataValue是和該顯示值對(duì)應(yīng)的實(shí)際值,是保存在數(shù)據(jù)庫(kù)中的值。c)選中Validate選項(xiàng),從而可以確保用戶的輸入必須是代碼表中定義了的,否則就出現(xiàn)報(bào)錯(cuò)信息。9、ShowFocusRectangle-顯示焦點(diǎn)邊框焦點(diǎn)邊框就是當(dāng)字段獲得焦點(diǎn)時(shí),在字段編輯框的周?chē)@示一個(gè)矩形邊框,可以醒目地提醒用戶當(dāng)前的輸入位置,這是一個(gè)比較好的界面,建議使用該屬性。選中字段對(duì)應(yīng)屆性窗口Edit頁(yè)中的ShowFocusRectangle即可。Tabular默認(rèn)選中10、Accelerator-設(shè)置加速度可以為字段設(shè)置加速鍵,以便很快捷地定位到特定的字段上。只要在字段對(duì)應(yīng)屬性窗口Edit頁(yè)的Accelerator編輯框中輸入字母或數(shù)字即可,只能輸入一個(gè)字符。加速鍵由Alt和所輸入的字母或數(shù)字構(gòu)成。程序運(yùn)行時(shí),使用加速鍵可以將焦點(diǎn)馬上轉(zhuǎn)移到有該加速鍵的字段上。11、Case-選擇大小寫(xiě)可以給字符型字段指定大寫(xiě)、小寫(xiě)、還是原樣顯示輸入內(nèi)容。在字段對(duì)應(yīng)的屬性窗口Edit頁(yè)中的Case下拉列表框中選擇即可°Up代表始終大寫(xiě),Any代表原樣,Lower代表小寫(xiě)。增加和刪除字段進(jìn)入數(shù)據(jù)窗口對(duì)象的SQLSelect畫(huà)板后可以對(duì)字段進(jìn)行以下三種操作:1、增加字段2、刪除字段3、重選字段。取消某字段,再重新選中該字段。這看起來(lái)好像沒(méi)有什么作用。實(shí)際上,這樣做可以同步數(shù)據(jù)窗口對(duì)象和數(shù)據(jù)表的定義。當(dāng)創(chuàng)建了數(shù)據(jù)窗口后又修改了該數(shù)據(jù)窗口對(duì)象對(duì)應(yīng)數(shù)據(jù)表中某字段的定義,例如,增加了字段的長(zhǎng)度,這是應(yīng)該保證字段和數(shù)據(jù)窗口中的定義一致,使用上面的方法就可以做到數(shù)據(jù)的一致*當(dāng)添加字段時(shí),PB不能正確設(shè)定新添加字段的默認(rèn)屬性,必須認(rèn)真檢查新添加的屬性,最重要的屬性是Limit的大小以及ShowFocusRectangle、AutoSelection和AutoHorzScroll屬性是否選中。如果數(shù)據(jù)窗口對(duì)應(yīng)的數(shù)據(jù)表中既沒(méi)有定義主鍵也沒(méi)有定義唯一性索引,并且數(shù)據(jù)窗口還是用來(lái)進(jìn)行數(shù)據(jù)錄入的,這時(shí)不管是刪除了數(shù)據(jù)窗口中的字段或添加了字段,還是重新選擇了字段,都要仔細(xì)檢查并重新設(shè)置數(shù)據(jù)窗口的Update屬性了,如果數(shù)據(jù)表中定義了主鍵或者唯一性索引,就不用考慮這個(gè)問(wèn)題了。字段的顯示順序在大多數(shù)顯示樣式的數(shù)據(jù)窗口中都可以使用鼠標(biāo)拖放直接改變字段的位置,惟獨(dú)grid類型的數(shù)據(jù)窗口在Design窗口中不能。解決方法是,在預(yù)覽窗口中拖動(dòng)字段到適當(dāng)?shù)奈恢?,Design窗口中的字段順序就會(huì)自動(dòng)做相應(yīng)的調(diào)整??梢杂米侄蚊蛘咦侄翁?hào)來(lái)標(biāo)識(shí)一個(gè)字段。例如,產(chǎn)生數(shù)據(jù)窗口的SQL語(yǔ)句是:selectname,sex,addressfromaddr_book;在該數(shù)據(jù)窗口中,name和#1都是指同一個(gè)字段。顯示位置的調(diào)整不會(huì)影響字段號(hào),字段號(hào)和產(chǎn)生數(shù)據(jù)窗口的SQL語(yǔ)句中字段的順序相對(duì)應(yīng),在SQL語(yǔ)句中,第一個(gè)字段對(duì)應(yīng)的字段號(hào)為#1,依次增加一個(gè)。要調(diào)整字段號(hào)的順序,可以進(jìn)入到SQLselect畫(huà)板,取消所有字段,再按照正確的字段順序重新選擇字段;或者切換到語(yǔ)法狀態(tài),手工修改SQL語(yǔ)法中字段的順序。經(jīng)過(guò)這樣的調(diào)整后,可能字段在數(shù)據(jù)窗口中顯示的順序沒(méi)有變化,但是字段號(hào)卻進(jìn)行了重新分配。因?yàn)樵诖翱谀_本中引用數(shù)據(jù)窗口的數(shù)據(jù)時(shí),有可能用到字段號(hào),在數(shù)據(jù)窗口的計(jì)算域中也有可能用到字段號(hào),所以要保證字段號(hào)正確設(shè)定,尤其是習(xí)慣使用字段號(hào)引用數(shù)據(jù)時(shí)。////////////////////////////////////////計(jì)算域是指在數(shù)據(jù)窗口的設(shè)計(jì)狀態(tài)下添加到數(shù)據(jù)窗口中的ComputedField部件,它是一個(gè)數(shù)據(jù)窗口部件,具有部件的屬性特征。計(jì)算字段是指在數(shù)據(jù)窗口對(duì)應(yīng)的SQL語(yǔ)句中添加的表達(dá)式,計(jì)算字段是一個(gè)字段,它具有字段的屬性特征。它們的區(qū)別主要體現(xiàn)在腳本中。計(jì)算字段因?yàn)榫哂凶侄蔚奶卣鳎許etItem等對(duì)字段操作的函數(shù)可以用來(lái)操作計(jì)算字段而不能來(lái)操作計(jì)算域,當(dāng)需要在程序中動(dòng)態(tài)設(shè)置值時(shí),就應(yīng)該使用計(jì)算字段而不能使用計(jì)算域,典型情況是對(duì)計(jì)算出來(lái)的值進(jìn)行誤差校正。這兩個(gè)對(duì)象都可以使用GetItem一類的函數(shù)來(lái)讀取取值。常用函數(shù):條件判斷If(boolean,truevalue,falsevalue)Case(columnWHENvalue1THENresult1(WHENvalue2THENresult2{...})(ELSEresultelse})累積,(表格最右面一列各行是某列對(duì)應(yīng)行前面所有行的累加和)CumulativeSum(column{forrange})其中,column是列名、列號(hào),或者是由列名、列號(hào)、常量、運(yùn)算符,甚至其他函數(shù)構(gòu)成的表達(dá)式,但取值必須是數(shù)值型的。Forrange是進(jìn)行累積的范圍。大多數(shù)顯示樣式的數(shù)據(jù)窗口都可以使用如下內(nèi)容。All:缺省值,累積指定列的所有取值Groupn:在指定的分組內(nèi)對(duì)指定字段進(jìn)行累積運(yùn)算。Group是保留字,n代表組號(hào),如1。Page:在頁(yè)范圍內(nèi)進(jìn)行累積運(yùn)算。百分比Percent(column(FORrange(DISTINCT(expres1{,expres2{,...}}}}})Percent可以用來(lái)計(jì)算某字段在指定范圍內(nèi)當(dāng)前行的取值占該范圍內(nèi)該字段累計(jì)和的比例。其中,column以及Forrange和上面CumulativeSum函數(shù)中的完全相同。選項(xiàng)DISTINCT用來(lái)指定只統(tǒng)計(jì)不相等的字段,表達(dá)式expresX是用來(lái)區(qū)分行是否相同的標(biāo)準(zhǔn)。該函數(shù)和表達(dá)式column/sum(columnforrange)是等價(jià)的。CumulativePercent(column{FORrange})用來(lái)計(jì)算當(dāng)前的累積和占總和的比例其中的column和forrange和上面的相同。該函數(shù)和下面的表達(dá)式是等價(jià)的:CumulativeSum(columnforrange)/sum(columnforrange)引用不同行的數(shù)據(jù)在數(shù)據(jù)窗口的表達(dá)式中,可以直接使用列名數(shù)組引用不同行的字段值,下標(biāo)是一個(gè)相對(duì)數(shù),相對(duì)于當(dāng)前行而言的。例如,假設(shè)在數(shù)據(jù)窗口中有一列名為product_id,在數(shù)據(jù)窗口表達(dá)式中,product_id和product_id[0]是指當(dāng)前行的product_id值。product_id[-1]是指前面一行的product_id值,product_id[1]是指下一行的product_id值。使用這種引用方法,可以很簡(jiǎn)潔地提供更友好的數(shù)據(jù)顯示格式。例如,當(dāng)product_id改變時(shí),用另外一種顏色顯示月份、銷售量、庫(kù)存量等,可以修改這些字段的顏色表達(dá)式(應(yīng)該以product_id排序):if(getrow()=1,rgb(255,0,0),if(product_id=product_id[-1],rgb(255,0,0),rgb(255,255,255)))數(shù)據(jù)行的修改狀態(tài)isRowNew()isRowModified()if(isRowNew(),'新',if(isRowModified(),'改','舊'))其他dateisSelectedaveragecountsum////////////////////////////////////////排序、過(guò)濾和分組排序Rows->Sort*雙擊Columns列表框中的字段或表達(dá)式,進(jìn)入ModifyExpression窗口,可以進(jìn)行表達(dá)式定義,表示要使用該表達(dá)式進(jìn)行排序。上面的方法定義的排序是在客戶端執(zhí)行的,要在服務(wù)器端進(jìn)行數(shù)據(jù)排序,可以通過(guò)修改數(shù)據(jù)窗口對(duì)應(yīng)的SQL來(lái)實(shí)現(xiàn)。過(guò)濾Rows->Filter在對(duì)話框中輸入表達(dá)式,在定義表達(dá)式時(shí),有些經(jīng)常使用的運(yùn)算符,如like、betweem、in、match等需要特別關(guān)注一下。*特別是match具體可以在程序中測(cè)試,具體見(jiàn)PB幫助-match。上面的方法同排序是在客戶端執(zhí)行的,要在服務(wù)器端進(jìn)行數(shù)據(jù)排序,可以通過(guò)SQL語(yǔ)句中使用where子句,然后用帶參數(shù)的retrieve來(lái)過(guò)濾。分組Rows->CreateGroup*雙擊"Columns”列表框中的字段或表達(dá)式,進(jìn)入ModifyExpression窗口,進(jìn)行表達(dá)式定義。創(chuàng)建分組后,數(shù)據(jù)窗口中又增加了兩個(gè)帶(band),Headergroupname用來(lái)先死組名,放置用來(lái)分組的表達(dá)式或者字段;Trailergroupname放置分組的總結(jié)信息。數(shù)據(jù)窗口創(chuàng)建后定義的分組和使用分組樣式創(chuàng)建的數(shù)據(jù)窗口在顯示效果上相同,區(qū)別在于前面一中方式是在數(shù)據(jù)完全從服務(wù)器端傳送到客戶端后進(jìn)行的,后一種是直接在服務(wù)器按照分組取出數(shù)據(jù)的。*最后介紹一種方法,同樣可以達(dá)到Group的效果。比如,顯示各個(gè)地區(qū)產(chǎn)品銷售情況的數(shù)據(jù),應(yīng)該使用地區(qū)作為分組。在數(shù)據(jù)窗口畫(huà)板中選擇窗口菜單Rows->Sort,選擇以字段"region”進(jìn)行排序;然后再選擇窗口菜單Rows->SupressReaptingvalues…,指定壓縮字段“region"的重復(fù)值即可。////////////////////////////////////////其他數(shù)據(jù)窗口中的當(dāng)前頁(yè)和總共頁(yè)stringls_currentPageNostringls_totalPagels_currentPageNo=dw_1.Describe(〃evalue('page()',1)〃)//??獲取當(dāng)前頁(yè)號(hào)ls_totalPage=dw_1.Describe(〃evalue('PageCount()',1)〃)//獲取總共多少頁(yè)數(shù)據(jù)窗口對(duì)象的中備份和恢復(fù)數(shù)據(jù)備份:File->SaveRowsAs//或Preview窗口中右鍵->SaveRowsAs恢復(fù):Rows->Import////////////////////////////////////////[PB]-數(shù)據(jù)窗口對(duì)象(二)=獲取數(shù)據(jù)窗口信息※函數(shù)Describe使用函數(shù)Describe可以獲取數(shù)據(jù)窗口對(duì)象中的信息。該函數(shù)語(yǔ)法是:dwcontrol.Describe(propertylist)其中,dwcontrol是數(shù)據(jù)窗口控件名稱,propertylist是以空格分隔的特性或運(yùn)算表達(dá)式列表,它用來(lái)報(bào)告列與圖形對(duì)象的屬性值。表達(dá)式可以用特定行與列的值進(jìn)行運(yùn)算。Describe函數(shù)返回的是一個(gè)字符串,該字符串是對(duì)指定屬性的描述,不同的屬性占用不同的行(不同屬性用?n分隔)。如果有無(wú)效屬性則返回該屬性之前的屬性取值和一個(gè)驚嘆號(hào)(!)。如果某個(gè)屬性沒(méi)有值,則返回一個(gè)問(wèn)號(hào)(?)。如:dw_1.describe("datawindow.bandsdatawindow.objects")header~tdetail~tsummary~tfooter~nemp_id~temp_iddw_1.describe("datawindow.banddatawindow.objects")!dw_1.describe("datawindow.bandsdatawindow.object")header~tdetail~tsummary~tfooter!如果特性值容易引起混淆,例如,帶有感嘆號(hào)、問(wèn)號(hào)、Tab鍵或換行符,這些符號(hào)在返回字符串中將用引號(hào)括起來(lái)。為了測(cè)試這種情況,先給數(shù)據(jù)窗口中的標(biāo)簽name_t中輸入內(nèi)容為name?,然后使用下面的語(yǔ)句:dw_1.describe(〃name_t.text〃)上面的語(yǔ)句顯示"name?”,這是因?yàn)槿绻盗斜碇械牡谝粋€(gè)值用引號(hào)引著,那么該特性列表中的剩余值也用引號(hào)引著。*標(biāo)簽name_t和addr_t中分別輸入內(nèi)容為name?和zjhzdw_1.describe("name_t.textaddr_t.text")"name?"zjhzdw_1.describe("addr_t.textname_t.text")zjhz"name?"*最后不顯示空格(?n)※對(duì)列的引用在屬性描述時(shí),經(jīng)常要對(duì)列進(jìn)行引用。引用列的方法有兩種,或者使用列名,或者使用列號(hào)。應(yīng)盡量避免使用列號(hào),因?yàn)榱刑?hào)是和創(chuàng)建數(shù)據(jù)窗口時(shí)選擇字段的順序相對(duì)應(yīng)的。在以后的修改中很有可能取消某些字段或者調(diào)整字段的選擇順序,或者改變數(shù)據(jù)源,這時(shí)就很容易出現(xiàn)錯(cuò)誤,更糟糕的是這時(shí)很有可能沒(méi)有錯(cuò)誤信息,張冠李戴了。下面是一個(gè)使用列號(hào)進(jìn)行屬性描述的語(yǔ)句:dw_1.describe("#5.coltype")這種語(yǔ)法可以和函數(shù)getcolumn搭配使用,用來(lái)檢索當(dāng)前列號(hào)。下面是一個(gè)顯示數(shù)據(jù)窗口中所有字段類型的例程:integerli_count,li_indexli_count=integer(dw_1.describe("datawindow.column.count"))forli_index=1toli_countmessagebox(string(li_index),dw_1.describe(〃#〃+string(li_index)+"coltype"))next※函數(shù)Evaluate在使用Describe描述數(shù)據(jù)窗口對(duì)象中的相關(guān)信息時(shí),有一個(gè)非常重要的函數(shù)不能不掌握,就是Evaluate。雖然函數(shù)Describe可以獲取對(duì)象的信息,但是表達(dá)式的取值就不能正常讀取了,而這又是經(jīng)常遇到的。所以,函數(shù)Evaluate非常重要,它可以使函數(shù)Describe獲取表達(dá)式的取值。該函數(shù)的語(yǔ)法是:Evalute('expression',rowno)其中,expression是屬性表達(dá)式,rowno是要描述的行號(hào)。該函數(shù)放置在Describe的屬性列表中。例如,判斷第3行的salary工資是否大于1000,如果大于則返回1,否則返回0,可以使用下面的語(yǔ)句:dw_1.describe("evaluate('if(salary>1000,1,0)',3)")而使用下面的語(yǔ)法就是錯(cuò)誤的:dw_1.describe("if(salary>1000,1,0)")*單行(如第二行)dw_1.describe("evaluate('if(isnull(emp_no)oremp_no='',~~'*~~',emp_no)',2)")*多行l(wèi)ongll_istringls_empforll_i=1todw_1.rowcount()ls_emp=dw_1.describe("evaluate('if(isnull(emp_no),~~'NULL~~',emp_no)',"+string(ll_i)+")")dw_1.setitem(ll_i,'emp_no',ls_emp)next※函數(shù)LookUpDisplay字段使用了下拉列表框、下拉數(shù)據(jù)窗口和單選按鈕等有代碼表的編輯風(fēng)格時(shí),在數(shù)據(jù)窗口控件上顯示的值和字段實(shí)際得到的值并不相同,使用函數(shù)GetItemX只能讀取這樣的字段的真實(shí)取值,而不是用戶看到的值。如何才能讀取用戶看到的值?可以使用函數(shù)LookUpDisplay。LookUpDisplay函數(shù)不能直接從PowerScript調(diào)用,可以在Describe和Evaluate函數(shù)配合使用。因?yàn)楹瘮?shù)LookUpDisplay不能指定對(duì)哪行數(shù)據(jù)進(jìn)行操作,它的參數(shù)只有一個(gè)字段名稱,所以必須和Evaluate函數(shù)配合使用。該函數(shù)的語(yǔ)法是:LookUpDisplay(columnname)其中,參數(shù)columnname是字段的名稱,而不是一個(gè)字符串。函數(shù)執(zhí)行錯(cuò)誤則返回空字符串。下面是一個(gè)和函數(shù)GetItemString相比較的例子。假設(shè)在一個(gè)數(shù)據(jù)窗口中定義字段sex的編輯風(fēng)格為DropDownListBox,定義該字段使用編碼表,編碼表的定義是顯示值“Male”,“Female”分別對(duì)應(yīng)“男”和“女”。然后,在某個(gè)按鈕的clicked事件中編寫(xiě)如下腳本:messagebox(〃getitemstring:〃+dw_1.getitemstring(1,〃sex〃),〃lookupdispaly:〃+dw_1.describe(〃evaluate(Tookupdisplay(sex)',1)〃))::getitemstring:男::lookupdisplay:male=修改數(shù)據(jù)窗口信息為了在運(yùn)行時(shí)修改數(shù)據(jù)窗口對(duì)象特征,應(yīng)該使用Modify函數(shù),而不是直接訪問(wèn)語(yǔ)法。該函數(shù)的語(yǔ)法如下:dwcontrol.Modify(modstring)其中,dwcontrol是數(shù)據(jù)窗口控件名稱,既可以是數(shù)據(jù)窗口也可以是子數(shù)據(jù)窗口,還可以是datastore對(duì)象。modstring是修改字符串,用來(lái)指示要修改哪些對(duì)象的哪些屬性。如果修改成功函數(shù)則返回空字符串,如果修改的語(yǔ)法錯(cuò)誤則返回對(duì)錯(cuò)誤的描述,格式是:linenColumnincorrectsyntax,這里是第n列是從modstring開(kāi)始計(jì)數(shù)的錯(cuò)誤位置。數(shù)據(jù)窗口對(duì)象可以在運(yùn)行時(shí)使用合適的語(yǔ)法修改其外觀、行為和數(shù)據(jù)庫(kù)信息。通過(guò)提供完整的對(duì)象規(guī)范,甚至可以在數(shù)據(jù)窗口對(duì)象內(nèi)部創(chuàng)建和刪除對(duì)象。使用modstring參數(shù)可以指定Create、Destroy和Attributealteration三種類型的語(yǔ)句?!鶆?chuàng)建對(duì)象可以使用下面的語(yǔ)法來(lái)添加對(duì)象(如文本、計(jì)算域以及位圖):Createobject(settings)其中,settings為將要?jiǎng)?chuàng)建的對(duì)象定義的一組特性和值,定義對(duì)象時(shí),用戶必須提供足夠的信息。想要得到某個(gè)對(duì)象的正確語(yǔ)法的最好的方法就是導(dǎo)出一個(gè)包含對(duì)象的簡(jiǎn)單的數(shù)據(jù)窗口。然后就能把對(duì)象的語(yǔ)法剪切并粘貼到應(yīng)用程序中。另一種辦法是使用那些能成為數(shù)據(jù)窗口內(nèi)特定對(duì)象顯示語(yǔ)法的許多工具之一(它們正變得越來(lái)越商業(yè)化)。下面的示例用來(lái)說(shuō)明這種格式,假設(shè)用戶剛剛從頭開(kāi)始動(dòng)態(tài)地創(chuàng)建了一個(gè)完全新的數(shù)據(jù)窗口,現(xiàn)在需要在標(biāo)題頭放置一個(gè)公司標(biāo)志,其語(yǔ)法是:stringls_modify,ls_resultls_modify="Createbitmap(band=backgroundfilename='c:\logo.bmp,x='60'y='8'width='1308'height='513'border='0'name=logo)"ls_result=dw_1.modify(ls_modify)ifls_result<>""thenmessagebox("提示",ls_result)endif這段代碼為用戶剛剛創(chuàng)建的報(bào)表數(shù)據(jù)窗口在恰當(dāng)?shù)奈恢脛?chuàng)建標(biāo)識(shí)。※刪除對(duì)象除了可以在數(shù)據(jù)窗口內(nèi)創(chuàng)建對(duì)象外,還可以使用下面語(yǔ)法刪除對(duì)象:Destroy[Column]object這里的object是數(shù)據(jù)窗口對(duì)象內(nèi)要?jiǎng)h除對(duì)象的名字。若要把列和列的數(shù)據(jù)從緩沖區(qū)中刪除,需要指定Column關(guān)鍵字。例如,上一個(gè)示例中向動(dòng)態(tài)創(chuàng)建的報(bào)表中添加了一個(gè)公司標(biāo)志。如果用戶把這一功能作為運(yùn)行時(shí)的選項(xiàng),比如說(shuō)通過(guò)復(fù)選框,那么就不僅需要能夠創(chuàng)建對(duì)象而且還需要?jiǎng)h除該對(duì)象。下面是用于刪除的代碼:stringls_resultls_result=dw_1.modify("destroylogo")ifls_result<>""thenmessagebox("錯(cuò)誤”,ls_result)endif下面的示例使用這種modify格式刪除列及其相關(guān)的標(biāo)簽:stringls_resultls_result=dw_1.modify("destorycolumnsalarydestroysalary_t")ifls_result<>""thenmessagebox("錯(cuò)誤”,ls_result)endif※特性修改Attributealteration類型的語(yǔ)句格式是modify三種格式中最常用的一種,這種語(yǔ)法的格式如下:objectname.attribute=value按照被影響的attribute的不同,value可以是下面類型中的任何一種:常量:指簡(jiǎn)單的、不使用表達(dá)式的特性修改值。如:columnname.band=footer帶引號(hào)的常量:也是指簡(jiǎn)單的特性修改值。如:columname.height='65'表達(dá)式:由一個(gè)默認(rèn)值及其后的表達(dá)式組成,它的返回值與特性的數(shù)據(jù)類型相同。如:T67725~tif(emp_status=~'A~',255,16777215)'請(qǐng)注意這種表達(dá)式的格式。整個(gè)表達(dá)式括在單引號(hào)中,表達(dá)式需要缺省值,而且該值通過(guò)Tab鍵(?t)與余下的表達(dá)式隔開(kāi)。表達(dá)式返回0或者1,它們是特性的有效值。在實(shí)際使用時(shí),這種格式的語(yǔ)句經(jīng)常簡(jiǎn)單寫(xiě)成屬性訪問(wèn)格式。如:dw_1.modify("oval_1.background.color=rgb(255,0,128)")和以下直接屬性訪問(wèn)方式是等價(jià)的:dw_1.object.oval_1.background.color=rgb(255,0,128)=字段和計(jì)算域的屬性-更多見(jiàn)幫助(DataWindowobjectproperties)*獲取字段的類型(Coltype屬性)字段的ColType屬性是一個(gè)非常有用的屬性,使用該屬性可以在程序運(yùn)行時(shí)獲取字段的類型。但是不能在運(yùn)行時(shí)修改該屬性。下面是它的語(yǔ)法:直接引用:dw_1.object.object.objectname.coltype在Describe函數(shù)中:"objectname.coltype”不管使用哪種方式,對(duì)同一個(gè)字段獲得的類型都相同。字段類型有char(n),date,datetime,decimal(n),int,long,number,real,time,timestamp及ulong共11種,其中的n代表字符的長(zhǎng)度或者小數(shù)后的精度。如:ls_coltype=dw_1.objcet.emp_id.coltypels_coltype=dw_1.describe(〃emp_id.coltype〃)在實(shí)際編程中,獲取字段的類型后,緊接著使用choosecase語(yǔ)句針對(duì)不同的類型進(jìn)行相關(guān)的處理。*背景屬性(perty)在運(yùn)行時(shí)修改字段的背景,這是標(biāo)識(shí)特殊數(shù)據(jù)行的一種手段。使用該屬性可以在程序運(yùn)行時(shí)獲取字段的背景,也可以修改字段的背景。它的語(yǔ)法如下:直接弓I用:dw_1.perty在Describe和Modify函數(shù)中:"perty{='value'}”其中,property可以是color或者mode。當(dāng)為color時(shí)取值應(yīng)該是長(zhǎng)格式表示的顏色,或者使用RGB函數(shù)中紅、綠、藍(lán)表示的顏色;當(dāng)為mode時(shí),0表示將背景設(shè)置為不透明的(即可以顯示背景顏色),1表示背景為透明的。實(shí)際上,字段的背景屬性也可以在數(shù)據(jù)窗口畫(huà)板中進(jìn)行設(shè)定。下面是修改和讀取字段背景屬性的實(shí)例://修改字段的背景顏色dw_1.object.oval_1.background.color=rgb(255,0,128)dw_1.modify("emp_name.background.color='11665407'")//這里好象不能用rgb()//讀取字段的背景顏色ls_data=dw_1.describe("oval_1.background.color")//讀取字段的背景模式ls_data=dw_1.describe("emp_name.background.mode")//設(shè)置字段的背景模式dw_1.modify("emp_name.background.mode='1'")dw_1.modify("mdrect_1.background.mode='0'")*指定檢索規(guī)則(Cperty屬性)在腳本運(yùn)行時(shí),可以控制是否顯示檢索規(guī)則窗口或者讀取數(shù)據(jù)窗口這方面的信息。語(yǔ)法如下:直接引用:dw_1.perty在describe和modify函數(shù)中:"perty{=value}"其中,dw_1是數(shù)據(jù)窗口控件名稱,columnname是要獲取或者設(shè)置檢索規(guī)則的字段名稱,value為yes或者no,property是以下屬性:Dialog:是否顯示檢索規(guī)則窗口。取值為yes則顯示,取值為no則不顯示。如,在一個(gè)數(shù)據(jù)窗口中放置了字段name,可以編寫(xiě)如下腳本:dw_1.modify("name.criteria.dialog=yessex.criteria.override_edit=yes")dw_1.retrieve()腳本運(yùn)行,顯示檢索規(guī)則輸入窗口override_edit:是否用戶必須在檢索規(guī)則窗口中輸入數(shù)據(jù)。取值為yes則用戶必須輸入數(shù)據(jù),取值為no時(shí)用戶可以不輸入數(shù)據(jù)。required:是否用戶只能使用等號(hào)進(jìn)行查詢。如果取值為yes則用戶的輸入只能是等號(hào),如果取值為no則用戶可以使用各種符號(hào),包括二、<>、>、>=、<二、<*Edit風(fēng)格的字段屬性(Eperty屬性)編輯風(fēng)格為Edit類型的字段,可以通過(guò)perty來(lái)獲取其相關(guān)信息或者設(shè)置其外觀及動(dòng)作。下面是它的語(yǔ)法:直接弓I用:dw_1.perty在describe和modify函數(shù)中:"perty{=value}"其中,columnname是喲啊讀取或者設(shè)置屬性的字段名稱,value根據(jù)property不同而可以使用不同類型的值。property可以有17個(gè)取值,其中:和滾動(dòng)控制有關(guān)的有AutoHScroll,AutoVScroll,HscrollBar和VscrollBar,它們的取值都是yes或者no,表示是否顯示該滾動(dòng)條。和顯示的內(nèi)容有關(guān)的屬性有Case,CodeTable,F(xiàn)ormat,NillsNull和Password,這些屬性用來(lái)控制字段中的內(nèi)容如何顯示。Case的取值為Any,Upper,Lower與Painter,表示不管用戶在該字段上輸入的大小寫(xiě),都按照該屬性自動(dòng)進(jìn)行轉(zhuǎn)換。CodeTable的取值為yes或者no,表示該字段是否有代碼表。Format規(guī)定對(duì)用戶輸入的內(nèi)容進(jìn)行格式化時(shí)應(yīng)該采用的格式。NillsNull的取值為yes或者no,表示當(dāng)用戶在字段中不輸入內(nèi)容而離開(kāi)該字段時(shí),是否將該字段中的內(nèi)容自動(dòng)置為NULL。Password屬性的取值也是yes或者no,表示是否將用戶的輸入作為密碼樣式顯示,如果作為密碼則用戶的輸入內(nèi)容作為*號(hào)顯示,顯示的個(gè)數(shù)和用戶輸入字符個(gè)數(shù)相等。和編輯控制有關(guān)的屬性有AutoSelect,DisplayOn1y,F(xiàn)ocusRectangle,Limit,Required,Style和ValidateCode,除了Limit取值為正整數(shù)、Stylee取值為String類型外,其他屬性的取值都是yes或者no。AutoSelect屬性表示當(dāng)字段獲得焦點(diǎn)時(shí)是否自動(dòng)選中該單元中的內(nèi)容。Display0nly表示是否允許用戶修改該字段中的內(nèi)容,如果取值為yes,則用戶雖然可以選中該字段中的內(nèi)容但是不能修改。FocusRectangle表示當(dāng)字段獲得焦點(diǎn)時(shí)是否顯示矩形的邊框,以表示當(dāng)前焦點(diǎn)的位置。Limit是一個(gè)相當(dāng)重要的屬性,用來(lái)限制用戶可以輸入字符的長(zhǎng)度。Required屬性如果為yes,則在獲得焦點(diǎn)后用戶不輸入內(nèi)容就休想離開(kāi)。雖然該屬性可以很好地保證非空字段不為空,但該屬性非常不友好,建議慎重使用。Style屬性在程序運(yùn)行時(shí)不能修改,只能讀取其中的信息。該屬性返回的是關(guān)于字段的編輯風(fēng)格。ValidateCode屬性表示是否使用代碼表進(jìn)行有效性校驗(yàn)。該屬性當(dāng)CodeTable屬性為yes時(shí)才有效。下面是關(guān)于該屬性的一些實(shí)例:ls_setting=dw_1.objcet.emp_name.edit.autohscroll//是否允許自動(dòng)橫向滾動(dòng)ls_setting=dw_1.describe("emp_name.edit.Autohscroll")〃同上dw_1.object.emp_name.edit.required="no"http://將字段設(shè)置成必須輸入的字段dw_1.modify("emp_name.edit.required=no")//同上*字段的顯示格式(Format屬性)可以使用Format屬性來(lái)指定字段的顯示格式。但是,在實(shí)際編程中使用更多的是函數(shù)GetFormat或者SetFormat,以取代Modify或者Descrie來(lái)設(shè)置字段的顯示格式。該語(yǔ)法使用時(shí)的重點(diǎn)在于格式串的使用。下面是相關(guān)的語(yǔ)法:直接弓I用:dw_1.object.objectname.format在函數(shù)describe和modify中:"objectname.format{='value'}”其中,objectname是字段或者計(jì)算字段或者計(jì)算域的名稱value是字符型的表達(dá)式,取值是一種格式串。下面是一些使用實(shí)例:一ls_setting=dw_1.object.phone.format〃讀取字段的電話顯示格式ls_setting=dw_1.describe(〃phone.format〃)dw_1.object.shipdate.format="yyyy-mm-dd"http://設(shè)置日期格式dw_1.modify("shipdate.format='yyyy-mm-dd'")*設(shè)置數(shù)據(jù)窗口修改時(shí)的主鍵(key屬性)該屬性在一個(gè)數(shù)據(jù)窗口修改多個(gè)表時(shí)非常有用,因?yàn)檫@時(shí)必須根據(jù)要修改的表動(dòng)態(tài)修改主鍵,屬性key就可以實(shí)現(xiàn)該功能。該屬性使用時(shí)的語(yǔ)法如下:直接引用:dw_1.object.columnname.key在函數(shù)modify或者describe中:"columnname.key{=value}"其中,columnname是要作為主鍵的字段名,或者是要判斷是否為主鍵的字段的名稱;value取值為yes或者no。如:ls_setting=dw_1.object.empid.key//判斷字段empid是否為主鍵ls_setting=dw_1.describe("empid.key")dw_1.object.empid.key="yes"http://將字段empid作為主鍵dw_1.modify("empid.key=yes")*字段名稱(name屬性)使用name屬性可以獲取字段的名稱。可以使用字段號(hào)或者字段名稱來(lái)標(biāo)識(shí)一個(gè)字段,但使用字段號(hào)不太安全,所以用獲取字段名比較好一些。語(yǔ)法如下:直接引用:dw_1.在函數(shù)describe中:""其中,objectname是要獲取名稱的控件標(biāo)識(shí),因?yàn)樵跀?shù)據(jù)窗口對(duì)象中有很多控件有多種標(biāo)識(shí)方法。如,下面可以獲取字段號(hào)為1的字段的名稱:dw_1.describe("#1.name")*字段中的數(shù)據(jù)保護(hù)(protect屬性)該屬性表示是否對(duì)字段中的數(shù)據(jù)進(jìn)行保護(hù),取值為0或者1。1表示實(shí)行保護(hù),0表示不保護(hù)。當(dāng)進(jìn)行數(shù)據(jù)保護(hù)時(shí),即使字段的TabOrder值大于0用戶也不能對(duì)字段進(jìn)行編輯,并且該字段都不能獲得焦點(diǎn)(和TabOrder取值為0時(shí)的表現(xiàn)完全相同)。下面是該屬性使用時(shí)的語(yǔ)法:直接弓I用:dw_1.tect在函數(shù)describe和modify中:"tect{='integer'}”其中,columnname是要獲取或者設(shè)置protect屬性的字段的標(biāo)識(shí),integer取值為0或者1。下面是使用實(shí)例:ls_setting=dw_1.object.emp_tect//獲取字段emp_start的protect屬性取值ls_setting=dw_1.describe(〃emp_tect〃)dw_1.object.emp_tect=1//設(shè)置字段emp_start的protect屬性dw_1.modify("emp_tect=1")dw_1.modify("emp_tect='1~tif(isrownew(),0,1)'”)〃設(shè)置protect屬性為表達(dá)式,含義是:如果是新數(shù)據(jù)行則將protect設(shè)置為0,否則設(shè)置為1//,缺省為1。*字段的滑動(dòng)屬性(slideleft和slideup)使用字段的滑動(dòng)屬性可以更好地根據(jù)運(yùn)動(dòng)時(shí)的情況安排數(shù)據(jù)的布局。有兩個(gè)和滑動(dòng)有關(guān)的屬性,SlideLeft表示當(dāng)左面空白時(shí)是否向左滑動(dòng),SlideUp表示當(dāng)上面出現(xiàn)空白時(shí)是否向上滑動(dòng)。使用該屬性的語(yǔ)法是:直接引用:dw_1.object.objectname.slideleftdw_1.object.objectname.slideup在函數(shù)describe和modify中:"objectname.slideleft{='value'}”"objectname.slideup{='value'}”其中,slideleft中的value取值為yes或者no。slideup中的value取值為:AllAbove:當(dāng)上面數(shù)據(jù)行中的所有對(duì)象都為空時(shí)向上滑動(dòng)DirectlyAbove:當(dāng)上面和本對(duì)象對(duì)應(yīng)位置的對(duì)象為空時(shí)向上滑動(dòng)No:不進(jìn)行滑動(dòng)下面是應(yīng)用的實(shí)例:dw_1.object.emp_lname.slideup='no'ls_setting=dw_1.describe("graph_1.slideup")dw_1.modify("emp_lname.slideup=no")*字段的TabOrder值(TabSequence屬性)字段的TabOrder值是一個(gè)比較重要的屬性,取值大于0時(shí)用戶可以編輯該字段,等于0時(shí)無(wú)法編輯該字段。在運(yùn)行時(shí),根據(jù)程序的運(yùn)行情況有可能動(dòng)態(tài)修改字段的TabOrder值,這時(shí)可以使用TabSequence屬性。該屬性應(yīng)用時(shí)的語(yǔ)法如下:直接引用:dw_1.object.columnname.TabSequence在函數(shù)modify或Describe中:"columnname.TabSequence{=number}"其中,number為從0到32000的正整數(shù),當(dāng)為0時(shí)表示字段不允許編輯。下面是使用實(shí)例:ls_setting=dw_1.object.emp_name.tabsequence〃獲取字段的TabOrder值ls_setting=dw_1.Describe("emp_name.tabsequence")dw_1.object.emp_name.tabsequence=10〃設(shè)置字段的taborder值dw_1.modify("emp_name.tabsequence=10")實(shí)際上,在編程時(shí)經(jīng)常使用函數(shù)SetTabOrder來(lái)設(shè)置或者獲取字段的TabOrder值,因?yàn)樵摵瘮?shù)正確執(zhí)行后,字段被設(shè)置成指定的TabOrder值,并且返回設(shè)置之前的TabOrder值。*用戶是否可以保存字段內(nèi)容(update屬性)當(dāng)數(shù)據(jù)窗口中的數(shù)據(jù)提交時(shí),可以修改的字段及其對(duì)應(yīng)的數(shù)據(jù)用來(lái)產(chǎn)生updateSQL語(yǔ)句,使用該SQL語(yǔ)句進(jìn)行數(shù)據(jù)的保護(hù)。所以,在程序運(yùn)行時(shí),如果不希望用戶保存某字段中的數(shù)據(jù),可以修改字段的update屬性。下面是該屬性的語(yǔ)法:直接弓I用:dw_1.object.columnname.update在函數(shù)modify或者describe中:"columnname.update{=value}"其中,value的取值為yes或者no。下面是使用實(shí)例:ls_setting=dw_1.object.emp_name.update//獲取字段是否可以修改ls_setting=dw_1.describe("emp_name.update")dw_1.object.emp_name.update="no"http://使字段emp_name不能修改dw_1.modify("emp_name.update=no")在應(yīng)用時(shí),可以根據(jù)用戶的權(quán)限,或者根據(jù)用戶的錄入數(shù)據(jù)是否齊全(通常需要保證數(shù)據(jù)一致性)來(lái)動(dòng)態(tài)修改某些字段的update屬性。另外,在一個(gè)數(shù)據(jù)窗口修改多個(gè)數(shù)據(jù)表時(shí)也經(jīng)常使用該屬性。*字段校驗(yàn)(Validation和ValidationMsg屬性)字段的校驗(yàn)規(guī)則在數(shù)據(jù)窗口畫(huà)板中可以指定,但有時(shí)需要在程序運(yùn)行時(shí)動(dòng)態(tài)地修改,可以使用Validation和ValidationMsg屬性來(lái)指定。屬性Validation使用時(shí)的語(yǔ)法如下:直接引用:dw_1.object.columnname.validation在函數(shù)describe和modify中:"columnname.validation{='validationstring'}"其中,validaionstring是一個(gè)包含校驗(yàn)規(guī)則的字符串,該字符串的結(jié)果或者是True或者是False。下面是使用實(shí)例:ls_setting=dw_1.object.emp_status.validation//獲取字段的校驗(yàn)規(guī)則ls_se
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年冀教新版選修4歷史上冊(cè)月考試卷含答案
- 2025年滬科新版七年級(jí)數(shù)學(xué)上冊(cè)階段測(cè)試試卷含答案
- 技能拓展培訓(xùn)合同(2篇)
- 抵押變更合同(2篇)
- 承包的合同范本(2篇)
- 2025版農(nóng)場(chǎng)農(nóng)產(chǎn)品質(zhì)量安全追溯系統(tǒng)建設(shè)合同4篇
- 2025年度智能建筑項(xiàng)目搭建委托合同4篇
- 2025年度知識(shí)產(chǎn)權(quán)質(zhì)押融資合同4篇
- 二零二五年度戀愛(ài)雙方知識(shí)產(chǎn)權(quán)共創(chuàng)共享合同3篇
- 二零二五年度農(nóng)業(yè)產(chǎn)業(yè)投資基金合作合同4篇
- 慈溪高一期末數(shù)學(xué)試卷
- 天津市武清區(qū)2024-2025學(xué)年八年級(jí)(上)期末物理試卷(含解析)
- 《徐霞客傳正版》課件
- 江西硅博化工有限公司年產(chǎn)5000噸硅樹(shù)脂項(xiàng)目環(huán)境影響評(píng)價(jià)
- 高端民用航空復(fù)材智能制造交付中心項(xiàng)目環(huán)評(píng)資料環(huán)境影響
- 貴州省黔東南州2024年七年級(jí)上學(xué)期數(shù)學(xué)期末考試試卷【附答案】
- 量子醫(yī)學(xué)成像學(xué)行業(yè)研究報(bào)告
- DB22T 3268-2021 糧食收儲(chǔ)企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化評(píng)定規(guī)范
- 辦事居間協(xié)議合同范例
- 正念減壓療法詳解課件
- 學(xué)校校本課程《英文電影鑒賞》文本
評(píng)論
0/150
提交評(píng)論