引用 DataWindow does not have UPDATE capability是什么原因? - 淚雨直流的日志 - 網易博客
提示框出現:DataWindow does not have UPDATE capability.是什么原因?已經連接了到了數據窗口,但一運行UPDATE就彈了如上的對話框.
改變數據窗口更新特性的方法
打開一數據窗口,從Rows菜單中選擇的"Update Properties…"系統顯示"Specify Update Prorerties"對話框:
A、 如果不允許數據窗口更新數據庫,那么就不要選中復選框"Allow Updates",單擊"OK"按鈕關閉對話框。如果要禁止用戶修改數據窗口的某列,那么在數據窗口畫筆中將此列的TabOrder值設為0。
B、 如果允許數據窗口更新數據庫,選中復選框"Allow Updates"。
C、 在"Table To Update"下拉列表框中選擇要更新的表
D、 在"Where Clause For Update/Delete"中選則更新方式。
E、 在"Updatesble Cloumns"通過單擊選擇可更新的列,被選中的列將加亮顯示。
F、 選擇了要更新的列后,在"Unique Key Column(s)"列表框中定義唯一鍵,這個唯一鍵必須能夠在表中唯一的標識一條記錄。
G、 在"Key Modification"組框中選擇當唯一鍵列更新時數據行的更新方式。
H、 如果當前表中包括了自動增長序號的列(稱做標識列,並非所有的數據庫都具備此特性),那么在"Indentity Column"下拉列表框中指定該列。
I、 單擊"OK"關閉對話框。
注意事項:如果在"Indentity Column"下拉列表框中指定某列為標識列,那么就不要把該列選擇為可更新列。否則,如果把該列選擇為可更新列,那么數據窗口產生的任何更新數據庫的Update語句都將失敗。
關於"Specify Update Prorerties"對話框中的"Key Modification"組框的詳細意義。"Key Modification"組框中兩個選項指定當唯一鍵列被更新時的數據行的更新方式。
A、 選中"Use Delete Then Insert"單選鈕,在唯一鍵列被更新的情況下,PoweBuild將首先刪除原來的行,然后使用新的鍵值插入新行。(這種方法減少了數據庫重新組織數據的次數,但也存在一些潛在的問題,當某個表的主鍵是另一個表的外鍵並在定義外部鍵時將刪除方式定義同時刪除(級聯刪除)時,應用程序可能並不想使用"Use Delete Then Insert"選項。)
B、 選中"Use Update"單選鈕,在唯一鍵列被更新的情況下,PoweBuild修改行的鍵值(並非所有的數據庫都支持主鍵更新,也就是說,如果您使用的數據庫管理系統不支持主鍵更新,在這里您就不能選擇"Use Update"選項)。這種方法避免了與外部鍵相關的級聯刪除問題。
關於"Specify Update Prorerties"對話框中的"Where Clause For Update/Delete"的三個選項的具體含義:
A、 Key Columns
當選中"Key Columns"單選鈕時,數據窗口只使用"Unique Key Columns"列表框中選擇主鍵來構造Where子句,該選項經常在單用戶應用程序環境中使用,當PowerBuild生成Update或 Delete語句時,它比較某行鍵值列的原始值與數據庫相應行鍵值列的值,如果兩者相等,則更新操作或刪除操作被成功的執行。
B、 Key and Updateable Columns
當選中"Key and Updateable Columns"單選鈕時,PowerBuild在創建的Update或Delete語句中將鍵值列的原始值與可更改列的原始值與數據庫的相應值進行比較。當這些值相等時,修改或刪除相應的行(即Update或Delete語句成功執行)。
C、 Key and Modified Columns
當選中"Key and Modified Columns"單選鈕時,PowerBuild在創建的Update或Delete語句中將鍵值列的原始值和已修改可更改列的原始值與數據庫的相應值進行比較。當這些值相等時,修改或刪除相應的行,該選項是對數據完整性的保護和操作並發性的折中。

