Interne validatie
Wanneer u een installatiepakket maakt, kunt u de functie MsiViewModify of de methode View.Modify gebruiken om ervoor te zorgen dat de gegevens die u invoert syntactisch juist zijn. Zie Methode wijzigenvoor meer informatie. Op het laagste niveau kan de kolom van een databasetabel gehele getallen (kort of lang), tekenreeksen of binaire gegevens opslaan. Voor een installatiepakket zijn echter specifieke gehele getallen of tekenreeksen in bepaalde tabellen vereist. Deze specificaties worden gehandhaafd in de _Validation tabel. De kolom FileName van de tabel File is bijvoorbeeld een tekenreekskolom, maar slaat specifiek een bestandsnaam op. Daarom moet niet alleen uw vermelding een tekenreeks zijn, maar moet deze ook voldoen aan de vereisten voor het benoemen van bestanden.
De verschillende validatie-enumwaarden die worden gebruikt met de MsiViewModify functie maken onmiddellijke validatie op verschillende niveaus mogelijk. De MSIMODIFY_VALIDATE_FIELD-opsomming kan worden gebruikt om afzonderlijke velden van een record te valideren. Er worden geen refererende sleutels gevalideerd. De MSIMODIFY_VALIDATE enum valideert een hele rij en bevat refererende sleutelvalidatie. Als u een nieuwe rij in een tabel invoegt, gebruikt u de MSIMODIFY_VALIDATE_NEW opsomming om te controleren of u geldige gegevens toevoegt en unieke primaire sleutels gebruikt. Een invoegbewerking mislukt als de primaire sleutels niet uniek zijn. Als een aanroep naar MsiViewModify- met een van de validatie-opsommingen een fout retourneert, kunt u herhaalde aanroepen uitvoeren naar MsiViewGetError- voor het vaststellen van het probleem. MsiViewGetError geeft de kolom aan waar de fout is opgetreden, evenals de opsommingswaarde om het probleem op te lossen. Zie GetError-methodevoor meer informatie.
U kunt ook interne validatie gebruiken om ervoor te zorgen dat andere auteurs gegevens correct invoeren in uw aangepaste tabel. Voeg elk van de kolommen van uw aangepaste tabel toe aan de _Validation tabel met behulp van de aangepaste tabelnaam en kolomnaam als primaire sleutel. Geef een beschrijving of doel op van elke kolom in de kolom Beschrijving van de _Validation tabel. Voer de toepasselijke vereisten voor elke kolom in met behulp van de kolommen Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Category en Set:
- Als de kolom Nullable is, voert u een 'Y' in. Als dat niet het gevolg is, voert u een 'N' in.
- Als de kolom een kolom met gehele getallen is en een bereik van gehele getallen kan bevatten, voert u dat bereik in met de kolommen MinValue en MaxValue.
- Refererende-sleutelkolommen worden geïdentificeerd met behulp van de kolommen KeyTable en KeyColumn.
- Geef voor tekenreekskolommen een categorie op, zoals Bestandsnaam, GUID of Id. Zie kolomgegevenstypenvoor meer informatie.
- Als de gegevens alleen betrekking hebben op een bepaald aantal waarden (tekenreeks of geheel getal), gebruikt u de kolom Set om de acceptabele waarden weer te geven.
Hier volgt een lijst met de kolommen (naast Tabel, Kolom en Beschrijving) in de _Validation tabel die kan worden ingevuld als uw kolom van het opgegeven type is. (Houd er rekening mee dat u niet alle kolommen hoeft in te vullen.)
Type | Kolommen |
---|---|
Geheel getal | Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set |
Snaar | Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue |
Binair | Nullable, Category (Categorie moet 'Binair' zijn) |
Ontwerpomgevingen kunnen gebruikmaken van MSIMODIFY_VALIDATE_DELETE. In deze opsomming wordt ervan uitgegaan dat u de rij wilt verwijderen. Er wordt geen validatie van een veld of refererende sleutel uitgevoerd. Deze opsomming voert daadwerkelijk een omgekeerde refererende sleutelvalidatie uit. Hiermee wordt de _Validation tabel gecontroleerd op verwijzingen in de kolommen KeyTable en KeyColumn voor de tabel waartoe de rij 'verwijderd' behoort. Als er kolommen zijn met de tabel met de rij 'verwijderd' als een mogelijke refererende sleutel, wordt die kolom doorlopen om te zien of een van de waarden verwijzen naar waarden in de rij 'verwijderd'. Een fout retourneert dat u de relationele integriteit van de database onderbreekt door de rij te verwijderen.