資料視窗只能修改乙個資料表。當資料視窗的資料**於不止乙個資料表時,可以用指令碼控制資料視窗的修改屬性來對資料表逐個進行修改。
當資料視窗是用來接受使用者的手工錄入資料時,應該設定兩方面的屬性才能確保資料視窗能夠用來修改資料表。乙個是修改資料視窗的修改屬性,另乙個是使用者可以修改的字段的相關屬性值
----------
資料視窗物件的修改屬性
rows->update properties
如果資料視窗對應的資料表中定義了主鍵或者唯一性索引,則資料視窗建立時預設的就是允許修改,並且正確設定了所有的修改屬性。否則就需要手工進行設定。當增加、刪除、或者重新選擇了字段時,pb將資料視窗的的修改屬性為不允許,這時也應該進行手工設定。
allow updates:允許更新。
table to update:指定要被更新的表。
where clause for update/delete:配置如何在update和delete sql語句中構造where子句
1、key columns 當開發單使用者應用程式或者使用者都以加鎖方式訪問資料庫時可以選中該選項。該選項表示資料視窗只使用在「unique key column」列表框中指定的唯一列進行資料更新。使用這種方式來修改資料庫,併發性很高,不同的使用者都可以併發地訪問資料庫,但是資料的完整性卻非常差。因此要保護資料完整性,只有在單使用者程式或者加鎖訪問方式下才使用這種修改方式。如:在add_book(通訊錄)資料表中定義了4個字段,id為主鍵,name,address,telephone三個欄位為可修改字段,有如下一條資料(001,陳,杭州,1395813)。若想把name改為「萬」,資料視窗產生如下的update語句:update add_book set name = '萬' where id = '001'
2、key and updateable columns 這種修改方式是預設的修改方式,它用主鍵列和可以修改的列來建立where子句,具有很高的資料完整性,但是併發性不是太好。推薦使用這種修改方式。儲存資料時將產生如下的sql語句:update add_book set name = '萬' where id = '001' and name = '陳' andaddress = '杭州' and telephone = '1395813'
3、key and modified columns 該方法是上面兩種方法的折中,當不同的使用者併發修改同一行資料的不同欄位時,都能成功修改,所以它的併發性有了一定的限制,資料的完整性比第一種修改方式有所提高。這種修改方式使用主鍵和資料發生了變化的列來產生where子句。儲存資料時產生如下的sql語句:update add_book set name = '萬' where id ='001' and name = '陳'
key modification:該組框用來指定當使用者修改了主鍵時,資料視窗如何來更新資料表中的主鍵字段。有兩種選擇use delete then insert和use update。第乙個選項是先刪除原有的主鍵值,然後再使用新的主鍵值插入乙個完整的行。使用這種更新主鍵的方式可以減少組織資料的工作量,但在資料庫中各個資料表之間存在父子制約關係,並且依賴該主鍵的外部鍵被指定為級聯刪除時,操作就不會成功的。因為級聯刪除方式要求當依賴主鍵的外部鍵有資料時就不能刪除主鍵。當dbms允許更新主鍵列時,可以使用第二個選項,該選項直接修改主鍵值,所以防止了級聯刪除帶來的操作不成功的問題。
updateable columns:指定被更新的字段。當資料視窗中的字段來自不止乙個資料表時,這時一定要選擇同乙個表中的字段,因為乙個資料視窗一次只能更新乙個資料表,當資料視窗中增添了字段時,新增添的字段往往是不允許修改的,一定要在該列表框中選擇該欄位。
unique key column:選擇唯一標識一行的列。如果在定義資料表時定義了主鍵,單擊右面的「primarykey」按鈕可以在該列表框中選中主鍵。
identity column:該下拉列表框用於為下拉列表框中所指定的列(通常是主鍵列)生成序號,當且僅當dbms支援序號生成時該作用才有效
----------
資料視窗物件欄位的修改屬性
**相關屬性
資料視窗中字段的相關屬性:
1、欄位的tab order值
2、欄位的protect屬性
3、欄位的displayonly屬性
4、欄位的visible屬性
上述屬性前3個中任意乙個都可以讓使用者無法修改欄位中的資料:最後乙個屬性決定字段是否可見,不可見的字段不管其他屬性如何設定.使用者都無法修改欄位中的資料。
當字段的tab order值為0時,肯定不能獲得焦點,但是非0時也不一定能獲得焦點,還得看字段的protect屬性是否設定為1;當字段的tab order值不為0,protect屬性不為1並且欄位的visible屬性為true時,肯定可以獲得焦點。displayonly屬性和焦點是否能夠獲得無關(即選中displayonly時可以選中字段,可以複製,但不能更新)。
**資料保護
可以用以下三種方法將字段設定為使用者不可修改的字段:
(1)在資料視窗設計時將這些欄位的taborder值置為0,以使該字段不能獲得焦點,使用者無法選中和編輯該欄位。
(2)將字段的displayonly屬性設定為true。該欄位可以獲得焦點,可以選中該欄位,還可以拷貝複製該字段的內容,但不能編輯該字段中的內容。
(3)設定欄位的protect屬性。欄位的protect屬性如果設定為「1」,則該字段的taborder值即使不是0也不會得到焦點。使用該屬性可以保護一些重要的資料。
PB資料視窗物件之顯示樣式
資料視窗物件顯示樣式有11種 grid tabular group freefrom label n up crosstab graph composite richtext ole2.0 grid 字段橫向排列在detail band中,標籤橫向排列在headerband中,和字段相對應,欄位和字...
PB資料視窗物件之資訊獲取
獲取資料視窗資訊 函式describe 使用函式describe可以獲取資料視窗物件中的資訊。該函式語法是 dwcontrol.describe propertylist 其中,dwcontrol是資料視窗控制項名稱,propertylist是以空格分隔的特性或運算表示式列表,它用來報告列與圖形物件...
PB資料視窗物件之資料來源
pb提供5種資料來源 quickselect 快速選擇型別 sql select sql選擇型別 query 查詢型別 external 外部型別 和storedprocedure 儲存過程型別 quick select 只能從乙個資料表或者檢視中選取資料 無關聯的表或者檢視 sql select ...