PB數據窗口對象之字段的修改屬性


數據窗口只能修改一個數據表。當數據窗口的數據來源於不止一個數據表時,可以用腳本控制數據窗口的修改屬性來對數據表逐個進行修改。
當數據窗口是用來接受用戶的手工錄入數據時,應該設置兩方面的屬性才能確保數據窗口能夠用來修改數據表。一個是修改數據窗口的修改屬性,另一個是用戶可以修改的字段的相關屬性值
----------
數據窗口對象的修改屬性
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也不會得到焦點。使用該屬性可以保護一些重要的數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章