Freigeben über


View.Modify-Methode

Die Modify-Methode des View-Objekts ändert eine Datenbankzeile mit einem geänderten Record-Objekt, das mit der Fetch-Methode abgerufen wird.

Syntax

View.Modify(
  action,
  record
)

Parameter

action

Erforderliche Aktion für die Datenbankzeile. Diese Aktion ist eine der in der folgenden Tabelle gezeigten Aktionen.

Name der Aktion Bedeutung
msiViewModifySeek
–1
Aktualisiert die Informationen im angegebenen Datensatz, ohne die Position im Resultset zu ändern und ohne sich auf nachfolgende Abrufvorgänge auszuwirken. Der Datensatz kann dann für nachfolgende Update-, Delete- und Refresh-Aktionen verwendet werden. Alle Primärschlüsselspalten der Tabelle müssen in der Abfrage enthalten sein, und der Datensatz muss mindestens so viele Felder wie die Abfrage aufweisen. Seek kann nicht mit mehreren Abfragen verwendet werden. Weitere Informationen finden Sie in den Hinweisen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyRefresh
0
Aktualisiert die Informationen im Datensatz. Muss zuerst die Fetch-Methode mit demselben Datensatz aufrufen. Führt bei einer gelöschten Zeile zu einem Fehler. Funktioniert sowohl mit Datensätzen, bei denen Lesen und Schreiben möglich sind, als auch mit schreibgeschützten Datensätzen.
msiViewModifyInsert
1
Fügt einen Datensatz ein. Löst einen Fehler aus, wenn eine Zeile mit denselben Primärschlüsseln vorhanden ist. Führt bei einer schreibgeschützten Datenbank zu einem Fehler. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyUpdate
2
Aktualisiert einen vorhandenen Datensatz. Nicht für Primärschlüssel. Muss zuerst die Fetch-Methode mit demselben Datensatz aufrufen. Führt bei einem gelöschten Datensatz zu einem Fehler. Funktioniert nur mit Datensätzen, bei denen Lesen und Schreiben möglich sind.
msiViewModifyAssign
3
Schreibt aktuelle Daten am Cursor in eine Tabellenzeile. Aktualisiert einen Datensatz, wenn die Primärschlüssel mit einer vorhandenen Zeile übereinstimmen, und fügt ein, wenn sie nicht übereinstimmen. Führt bei einer schreibgeschützten Datenbank zu einem Fehler. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyReplace
4
Aktualisiert oder löscht einen Datensatz und fügt einen Datensatz in eine Tabelle ein. Muss zuerst die Fetch-Methode mit demselben Datensatz aufrufen. Aktualisiert einen Datensatz, wenn die Primärschlüssel unverändert sind. Löscht die alte Zeile und fügt neue ein, wenn sich Primärschlüssel geändert haben. Führt bei einer schreibgeschützten Datenbank zu einem Fehler. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyMerge
5
Fügt einen Datensatz in eine Tabelle ein oder überprüft diesen. Fügt ein, wenn Primärschlüssel keiner Zeile entsprechen, und überprüft, ob eine Übereinstimmung vorhanden ist. Führt zu einem Fehler, wenn der Datensatz nicht mit den Daten in der Tabelle übereinstimmt. Führt zu einem Fehler, wenn ein Datensatz mit einem doppelten Schlüssel vorhanden ist, der nicht identisch ist. Funktioniert nur mit Datensätzen, bei denen Lesen und Schreiben möglich sind. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyDelete
6
Entfernt eine Zeile aus der Tabelle. Muss zuerst die Fetch-Methode mit demselben Datensatz aufrufen. Führt zu einem Fehler, wenn die Zeile gelöscht wurde. Funktioniert nur mit Datensätzen, bei denen Lesen und Schreiben möglich sind. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyInsertTemporary
7
Fügt einen temporären Datensatz ein. Die Informationen sind nicht persistent. Löst einen Fehler aus, wenn eine Zeile mit demselben Primärschlüssel vorhanden ist. Funktioniert nur mit Datensätzen, bei denen Lesen und Schreiben möglich sind. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyValidate
8
Überprüft einen Datensatz. Es erfolgt keine Überprüfung über Joins hinweg. Muss zuerst die Fetch-Methode mit demselben Datensatz aufrufen. Ruft Überprüfungsfehler mit der GetError-Methode ab. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyValidateNew
9
Überprüft einen neuen Datensatz. Es erfolgt keine Überprüfung über Joins hinweg. Sucht nach doppelten Schlüsseln. Ruft Überprüfungsfehler durch Aufrufen der GetError-Methode ab. Erfordert das Aufrufen der MsiDatabase.OpenView-Methode mit dem Wert „modify“. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyValidateField
10
Überprüft Felder eines abgerufenen oder neuen Datensatzes. Kann ein oder mehrere Felder eines unvollständigen Datensatzes überprüfen. Ruft Überprüfungsfehler durch Aufrufen der GetError-Methode ab. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.
msiViewModifyValidateDelete
11
Überprüft einen Datensatz, der später gelöscht wird. Muss zuerst die Fetch-Methode mit demselben Datensatz aufrufen. Löst einen Fehler aus, wenn eine andere Zeile auf die Primärschlüssel dieser Zeile verweist. Bei der Überprüfung wird nicht überprüft, ob die Primärschlüssel dieser Zeile in Eigenschaften oder Zeichenfolgen enthalten sind. Überprüft nicht, ob eine Spalte ein Fremdschlüssel für mehrere Tabellen ist. Ruft Überprüfungsfehler durch Aufrufen der GetError-Methode ab. Funktioniert mit Datensätzen, bei denen Lesen und Schreiben möglich sind, und mit schreibgeschützten Datensätzen. Dieser Modus kann nicht mit einer Ansicht verwendet werden, die Joins enthält.

 

record

Erforderlich. Record-Objekt, das mit der Fetch-Methode abgerufen wurde, mit geänderten Felddaten.

Rückgabewert

Diese Methode gibt keinen Wert zurück.

Bemerkungen

Diese Methode muss nach der Execute-Methode aufgerufen werden.

Zum Ausführen einer SQL-Anweisung muss eine Sicht erstellt werden. Eine Sicht, die kein Resultset erstellt, z. B. CREATE TABLE oder INSERT INTO, kann jedoch nicht mit der Modify-Methode verwendet werden, um Tabellen in der Sicht zu aktualisieren.

Die Werte msiViewModifyValidate, msiViewModifyValidateNew, msiViewModifyValidateField und msiViewModifyValidateDelete der Modify-Methode führen keine tatsächlichen Updates durch. Sie stellen sicher, dass die Daten im Datensatz gültig sind. Damit diese Aktionen verwendet werden können, muss die Datenbank eine Tabelle _Validation enthalten.

Sie können keinen Datensatz mit Binärdaten aus einer Datenbank abrufen und dann diesen Datensatz verwenden, um die Daten in eine völlig andere Datenbank einzufügen. Um Binärdaten aus einer Datenbank in eine andere zu verschieben, sollten Sie die Daten in eine Datei exportieren und diese dann mithilfe der SetStream-Methode des Record-Objekts in die neue Datenbank importieren. Dadurch wird sichergestellt, dass jede Datenbank über eine eigene Kopie der Binärdaten verfügt.

Hinweis

Benutzerdefinierte Aktionen können in einer Datenbank nur temporäre Zeilen, Spalten oder Tabellen hinzufügen, ändern oder entfernen. Benutzerdefinierte Aktionen können keine persistenten Daten in einer Datenbank ändern, z. B. Daten, die Teil der auf dem Datenträger gespeicherten Datenbank sind. Weitere Informationen finden Sie unter Zugreifen auf die aktuelle Installer-Sitzung innerhalb einer benutzerdefinierten Aktion.

 

Wenn die Methode zu einem Fehler führt, können Sie die erweiterten Fehlerinformationen mithilfe der LastErrorRecord-Methode abrufen.

Anforderungen

Anforderung Wert
Version
Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer unter Windows Server 2003 oder Windows XP
DLL
Msi.dll
IID
IID_IView wird als 000C109C-0000-0000-C000-000000000046 definiert