View.Modify 方法
View物件的Modify方法會使用Fetch方法取得的已修改Record物件來修改資料庫資料列。
語法
View.Modify(
action,
record
)
參數
-
action
-
必須在資料庫資料列上執行的必要動作。 此動作是下表所示的其中一個動作。
動作名稱 意義 - msiViewModifySeek
- –1
重新整理所提供記錄中的資訊,而不變更結果集中的位置,而且不會影響後續的擷取作業。 然後,記錄可用於後續的更新、刪除和重新整理。 資料表的所有主鍵資料行都必須在查詢中,而且記錄必須至少有與查詢一樣多的欄位。搜尋不能與多資料表查詢搭配使用。 請參閱備註。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyRefresh
- 0
重新整理記錄中的資訊。 必須先使用相同的記錄呼叫 Fetch 方法。 刪除的資料列失敗。 適用于讀寫和唯讀記錄。 - msiViewModifyInsert
- 1
插入記錄。 如果具有相同主鍵的資料列存在,就會失敗。 唯讀資料庫失敗。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyUpdate
- 2
更新現有的記錄。 僅限非主鍵。 必須先使用相同的記錄呼叫 Fetch 方法。 失敗並出現已刪除的記錄。 僅適用于讀寫記錄。 - msiViewModifyAssign
- 3
將資料指標中的目前資料寫入資料表資料列。 如果主鍵符合現有的資料列,則更新記錄,並在不符合時插入 。 唯讀資料庫失敗。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyReplace
- 4
更新或刪除記錄,並將記錄插入資料表中。 必須先使用相同的記錄呼叫 Fetch 方法。 如果主鍵未變更,更新記錄。 刪除舊的資料列,並在主鍵變更時插入新的資料列。 唯讀資料庫失敗。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyMerge
- 5
在資料表中插入或驗證記錄。 如果主鍵不符合任何資料列,則插入 ,並驗證是否有相符專案。 如果記錄不符合資料表中的資料,則失敗。 如果有重複索引鍵的記錄不相同,就會失敗。 僅適用于讀寫記錄。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyDelete
- 6
從資料表中移除資料列。 必須先使用相同的記錄呼叫 Fetch 方法。 如果資料列已刪除,就會失敗。 僅適用于讀寫記錄。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyInsertTemporary
- 7
插入暫存記錄。 資訊不是持續性的。 如果具有相同主鍵的資料列存在,就會失敗。 僅適用于讀寫記錄。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyValidate
- 8
驗證記錄。 不會跨聯結進行驗證。 必須先使用相同的記錄呼叫 Fetch 方法。 使用 GetError 方法取得驗證錯誤。 適用于讀寫和唯讀記錄。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyValidateNew
- 9
驗證新記錄。 不會跨聯結進行驗證。 檢查重複的索引鍵。 藉由呼叫 GetError 方法來取得驗證錯誤。 需要以修改值呼叫 MsiDatabase.OpenView 方法。 適用于讀寫和唯讀記錄。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyValidateField
- 10
驗證所擷取或新記錄的欄位。 可以驗證不完整記錄的一或多個欄位。 藉由呼叫 GetError 方法來取得驗證錯誤。 適用于讀寫和唯讀記錄。 此模式無法與包含聯結的檢視搭配使用。 - msiViewModifyValidateDelete
- 11
驗證稍後將刪除的記錄。 必須先使用相同的記錄呼叫 Fetch 方法。 如果另一個資料列參考此資料列的主鍵,則失敗。 驗證不會檢查屬性或字串中此資料列的主鍵是否存在。 不會檢查資料行是否為多個資料表的外鍵。 呼叫 GetError 方法來取得驗證錯誤。 使用讀寫和唯讀記錄。 此模式無法與包含聯結的檢視搭配使用。 -
record
傳回值
這個方法不會傳回值。
備註
這個方法必須在 Execute 方法之後呼叫。
若要執行任何 SQL 語句,必須建立檢視。 不過,不會建立結果集的檢視,例如 CREATE TABLE 或 INSERT INTO,無法與 Modify 方法搭配使用,以透過檢視更新資料表。
msiViewModifyValidate、msiViewModifyValidateNew、msiViewModifyValidateField 和 msiViewModifyValidateDelete 值不會執行實際更新;它們可確保記錄中的資料有效。 使用這些動作需要資料庫包含 _Validation資料表 。
您無法從一個資料庫擷取包含二進位資料的記錄,然後使用該記錄將資料插入完全不同的資料庫中。 若要將二進位資料從某個資料庫移到另一個資料庫,您應該將資料匯出至檔案,然後使用Record物件的SetStream方法將其匯入新的資料庫。 這可確保每個資料庫都有自己的二進位資料複本。
注意
自訂動作只能新增、修改或移除資料庫中的暫存資料列、資料行或資料表。 自訂動作無法修改資料庫中的持續性資料,例如儲存在磁片上之資料庫的一部分資料。 如需詳細資訊,請參閱 從自訂動作內部存取目前的安裝程式會話。
如果方法失敗,您可以使用 LastErrorRecord 方法來取得擴充錯誤資訊。
規格需求
需求 | 值 |
---|---|
版本 |
Windows Server 2012、Windows 8、Windows Server 2008 R2 或 Windows 7 上的 Windows Installer 5.0。 Windows Server 2008 或 Windows Vista 上的 Windows Installer 4.0 或 Windows Installer 4.5。 Windows Server 2003 或 Windows XP 上的 Windows Installer |
DLL |
|
IID |
IID_IView定義為 000C109C-0000-0000-C000-000000000046 |