sql >> Database >  >> RDS >> Access

Visual Basic voor toepassingen in Microsoft Access

Inleiding

Microsoft Access bevat een aantal functies waarmee databaseontwikkelaars formulieren voor gegevensinvoer, rapporten en query's kunnen maken die gebruikers kunnen helpen bij het opvragen van bestaande gegevens in de database en het invoeren van nieuwe gegevens. Verschillende hulpprogramma's voor het maken van query's en wizards vereenvoudigen dit ontwikkelingsproces. Zelfs met deze tools kunnen er echter situaties zijn waarin de ontwikkelaar nog meer functionaliteit wil toevoegen die niet al door de MS Access-ontwikkeltools wordt geboden. De ontwikkelaar wil bijvoorbeeld mogelijk automatisch slechte gegevens corrigeren voordat deze in de database worden opgeslagen, een waarschuwing weergeven als een bedrijfsregel wordt geschonden, de gebruiker helpen bij het navigeren van het ene gegevensinvoerformulier naar het andere of een rapport starten met enkele aangepaste filters. De manier om een ​​dergelijke aanpassing te bereiken is door code toe te voegen met behulp van de programmeertaal Visual Basic for Applications.

Visual Basic for Applications (VBA) is de programmeertaal die wordt gebruikt in de Microsoft Office-familie van softwareproducten zoals Excel en Access. De VBA-taal is afgeleid van de "Basic" -taal die in 1964 werd uitgevonden en in de jaren 70 populair werd op pc's. Het "Visuele" deel van de naam is door Microsoft toegevoegd om het gebruik van de programmeertaal Basic in Microsoft Windows weer te geven.

Er zijn veel tutorials die de basisprogrammering introduceren. Deze tutorial zal zich richten op een kleine subset van functies van de VBA-taal zoals gebruikt in MS Access.

Inhoud

  • Gebeurtenissen in Microsoft Access
  • VBA-codevoorbeeld:ervoor zorgen dat namen in de juiste hoofdletters staan
  • De VBA-taal - variabelen declareren en toewijzen, voorwaardelijke uitspraken en opmerkingen
  • De VBA-taal – functies, methoden en voorbeelden
  • De VBA-taal – Eigenschappen
  • VBA-codeeroefeningen
  • Fouten afhandelen in VBA
  • Aangepaste SQL-query's uitvoeren in VBA

De volgende pagina introduceert Gebeurtenissen in Microsoft Access.

Evenementen in Microsoft Access

In Access is VBA-programmeercode gekoppeld aan formulieren en rapporten en kan worden ingesteld om op een specifiek tijdstip of als reactie op een specifieke gebeurtenis te worden uitgevoerd. Deze stijl van programmeren wordt soms "Event Based"-programmering genoemd, wat betekent dat de code die de ontwikkelaar schrijft, wordt uitgevoerd als reactie op een gebeurtenis .

Wanneer een formulier wordt weergegeven in de formulierweergave, zal het over het algemeen alle bestaande gegevens uit de onderliggende tabellen opvragen en dan gewoon inactief blijven totdat de gebruiker iets doet. De gebruiker kan bijvoorbeeld op een van de navigatieknoppen klikken om naar het volgende record te gaan, ze kunnen in een tekstvak klikken en beginnen met het invoeren van nieuwe gegevens of ze kunnen op de knop Sluiten klikken om het formulier te sluiten. Elk van deze acties resulteert in een Evenement gebeurt in de vorm. Elke klik van de muis of aanslag op het toetsenbord wordt behandeld als een gebeurtenis.

Voor het grootste deel hebben gebeurtenissen een standaardgedrag. Door op de navigatieknop "volgende record" te klikken, bladert het formulier naar het volgende gegevensrecord. Als u de letter "C" typt wanneer de cursor in een tekstvak staat, verschijnt de letter "C" in het tekstvak. Als u op de TAB-toets drukt, springt de cursor naar het volgende tekstvak (of besturingselement) op het formulier, enzovoort. Een programmeur kan dit standaardgedrag overschrijven of verbeteren en zijn eigen code invoegen die moet worden uitgevoerd als reactie op de gebeurtenis.

VBA-programmering op toegangsformulieren en -rapporten is voornamelijk gericht op het schrijven van code om op verschillende gebeurtenissen te reageren.

Alvorens in de details van gebeurtenissen te duiken, kan het leerzaam zijn om een ​​eenvoudig voorbeeld toe te passen. Om code in actie te zien, biedt het volgende gedeelte van deze zelfstudie een overzicht voor het toevoegen van VBA-code aan een gegevensinvoerformulier.

VBA-codevoorbeeld:ervoor zorgen dat namen in de juiste hoofdletters staan

Wat volgt is een relatief kort en eenvoudig voorbeeld van het toevoegen van VBA-code aan een gegevensinvoerformulier in MS Access. Kortheidshalve worden enkele details overgeslagen. Na dit voorbeeld zal de rest van deze tutorial die details invullen.

Dit voorbeeld gebruikt de Klant gegevensinvoerformulier dat is aangepast in de zelfstudie Advanced MS Access Forms. Misschien wilt u die tutorial (of in ieder geval de gedeelten over het invoerformulier voor klantgegevens) voltooien voordat u verdergaat.

Bij het invoeren van nieuwe klantgegevens willen we ervoor zorgen dat de namen van de klant in "juiste hoofdletters" worden ingevoerd. Dat wil zeggen dat de eerste letter van de naam een ​​hoofdletter moet zijn en de rest van de naam in kleine letters. Als de gebruiker het volgende invoert:"Joe", willen we dat het formulier dit automatisch corrigeert naar het juiste geval:"Joe".

In termen van Evenementen zullen we code toevoegen die is gekoppeld aan de After Update-gebeurtenis voor het veld Voornaam op het klantformulier. Dit betekent dat na er is iets veranderd (bijgewerkt ) in het veld Voornaam, wordt de gebeurtenis After Update geactiveerd en vervolgens wordt de code die we schrijven in werking gezet om ervoor te zorgen dat de naam die is getypt, wordt omgezet in de juiste hoofdletters.

De volgende stappen zetten deze code op zijn plaats.

  1. Open de klantgegevensinvoer voor in Ontwerpmodus.
  2. Klik met de rechtermuisknop op de Voornaam tekstvak en selecteer Eigenschappen uit het pop-upmenu.
  3. Als het Eigenschappenblad wordt weergegeven, klikt u op het tabblad Gebeurtenis. Dit is weergegeven in onderstaande figuur:

    Let op de lijst met gebeurtenissen die worden weergegeven. Elk kan worden geprogrammeerd om te reageren op de specifieke gebeurtenis die gebeurt met de FirstName tekstvak.

  4. Maak een nieuwe gebeurtenishandler door op de drie stippen rechts van de After Update-gebeurtenis te klikken.
  5. De Choose Builder venster zal verschijnen. Selecteer Codebouwer en klik vervolgens op de OK knop.
  6. Het VBA-codebewerkingsvenster verschijnt. Merk op dat Access al de subroutine-stub heeft gemaakt die begint met de woorden Private Sub en eindigt met de woorden End Sub.
    De naam van de subroutine wordt gemaakt met de naam van het formulierbesturingselement (FirstName) en de naam van de Gebeurtenis waarop deze subroutine zal reageren (AfterUpdate).

    De regel End Sub is waar deze specifieke subroutine zal eindigen.

  7. Voeg de volgende code toe op de lege regel tussen Private Sub en End Sub.:
    FirstName = StrConv(FirstName, vbProperCase)
    
    

    Eenmaal voltooid, zal de code als volgt verschijnen:

    Deze nieuwe regel code doet het volgende:

    StrConv is een functie die de inhoud van het tekstvak FirstName opneemt en converteert volgens de tweede gegeven parameter die in dit voorbeeld vbProperCase is. Nadat deze conversie is voltooid, wordt het resultaat toegewezen (met het gelijkteken) terug naar het tekstvak Voornaam. Hiermee wordt alles overschreven dat zich momenteel in het tekstvak Voornaam bevindt. Deze functie neemt bijvoorbeeld "sally", converteert het naar "Sally" en plaatst vervolgens "Sally" in het tekstvak Voornaam.

  8. Sla deze nieuwe code op door het Bestand . naar beneden te trekken menu en selecteer Opslaan .
  9. Test de nieuwe code. Schakel terug naar het scherm Microsoft Access Design Mode. Verander de weergave in Formulierweergave.
  10. Navigeer naar een leeg record. Klik op het veld Voornaam en typ een naam in kleine letters:

  11. Druk op de Tab toets om naar het volgende tekstvak te gaan. De naam van Joe moet worden gewijzigd in "Joe", zoals hieronder wordt weergegeven:
  12. Als je een foutmelding krijgt, schakel dan terug naar de VBA-code-editor en zorg ervoor dat je alle delen van de code correct hebt gespeld. Mogelijk moet u de Run . naar beneden halen menu en selecteer Reset om te voorkomen dat de VBA-code wordt uitgevoerd.

Het bovenstaande voorbeeld gaf een snelle blik op hoe men het gedrag van een formulier kan aanpassen om de gebruiker te helpen mooi opgemaakte gegevens in de database in te voeren. Tijdens dit voorbeeld zijn verschillende details overgeslagen en die details zullen in de rest van deze tutorial worden besproken.

De VBA-taal

Deze sectie introduceert in het kort de belangrijkste onderdelen van de VBA-taal zoals deze wordt gebruikt in MS Access. Een uitgebreid overzicht van VBA valt buiten het bestek van deze tutorial. Verwijzingen naar uitgebreidere boeken en materialen vindt u aan het einde van deze tutorial.

Variabelen declareren

Een variabele is een naam die wordt gegeven aan een tijdelijke aanduiding waar de programmeur enkele gegevens kan opslaan. Een variabele kan bijvoorbeeld worden gebruikt om een ​​getal op te slaan terwijl we er enkele wiskundige bewerkingen op uitvoeren of de waarde ervan vergelijken met andere variabelen. Variabelen kunnen worden gedeclareerd om waarden van een specifiek gegevenstype te bevatten zoals gehele getallen, tekenreeksen of datums. Gebruik het Dim-statement om een ​​nieuwe variabele te declareren. Als u bijvoorbeeld een nieuwe variabele met de naam MijnNaam . wilt declareren, en stel het in om een ​​String (tekens) te bevatten, doe het volgende:

Dim strMyName As String

Om een ​​nieuwe variabele met de naam "AccountBalance" te declareren en deze in te stellen om een ​​getal met een decimaal op te slaan, gebruikt u het volgende:

Dim dblAccountBalance als dubbel

Waarden toewijzen

Een waarde kan worden toegewezen aan een variabele of aan een besturingselement op het formulier met behulp van het isgelijkteken. Om bijvoorbeeld de naam "Alex" op te slaan in de MyName-variabele, gebruikt u het volgende:

strMyName ="Alex"

Om de inhoud van het tekstvak Voornaam naar de variabele MijnNaam te kopiëren, gebruikt u:

strMyName =[FirstName]

Waarden kunnen ook worden berekend voordat ze worden toegewezen. De volgende uitdrukking neemt bijvoorbeeld het rekeningsaldo van de huidige klant uit het tekstvak [Saldo], voegt 1% rente toe (door het saldo te vermenigvuldigen met 1,01) en vermindert vervolgens het resultaat met $ 10. Ten slotte wordt het resultaat toegewezen aan de AccountBalance-variabele.

dblAccountBalance =( [Saldo] * 1.01) – 10.00

Voorwaardelijke verklaringen

Een voorwaardelijke instructie gebruikt een logische test om te bepalen welke coderegels als volgende moeten worden uitgevoerd. De If … Then voorwaardelijke instructie wordt vrij vaak gebruikt. Bijvoorbeeld:

If AccountBalance < 1000 Then
      MonthlyFee = 10
Else
      MonthlyFee = 0
End If

De logische uitdrukking AccountBalance <1000 wordt geëvalueerd. Als deze expressie waar is (bijvoorbeeld als AccountBalance $ 400 is), wordt de volgende regel na Then uitgevoerd. In dit voorbeeld is MonthlyFee =10.

Als deze uitdrukking False is, wordt de regel na Else uitgevoerd.

De logische expressie kan verschillende delen bevatten die verbonden zijn door de Booleaanse operatoren OR, AND en NOT. Een meer grondige bespreking van Booleaanse uitdrukkingen is te vinden in deze programmeerhandleiding. Stel dat we afzien van de maandelijkse vergoeding als de rekening minder dan een jaar oud is. Stel dat we AccountAge hebben als de leeftijd van het account in maanden. Dan zou de code zijn:

If AccountBalance < 1000 AND AccountAge > 12 Then
      MonthlyFee = 10
Else
      MonthlyFee = 0
End If

Meer dan één regel code kan worden uitgevoerd in de If … Then-statement en If … Then-statements kunnen in elkaar worden genest.

Opmerkingen

Bij het programmeren in een programmeertaal is het een goede gewoonte om opmerkingen toe te voegen die de code beschrijven. In VBA kan een opmerking worden opgenomen door te beginnen met een enkele quote. Als we het bovenstaande als voorbeeld nemen, kunnen we de volgende opmerkingen toevoegen:

Meer delen van de VBA-taal worden besproken op de volgende pagina.

VBA-taal – vervolg

Functies

De VBA-taal heeft een groot aantal ingebouwde functies en methoden die kunnen worden gebruikt om verschillende taken uit te voeren, zoals wiskundige functies (sin, cos, tan), tekenreeksfuncties en vele andere. Functies hebben doorgaans een of meer invoerparameters die door de functie worden gebruikt. In de functie Cos(45) is de "45" bijvoorbeeld de invoerhoek waarop de cosinusfunctie zal werken. De StrConv-functie vereist twee invoerparameters:de tekenreeks die moet worden geconverteerd en de conversiestijl:

StrConv(Voornaam, vbProperCase)

Enkele handige functies zijn:

MsgBox( prompt, buttons, title) Geef een pop-upberichtvenster weer met de prompttekst, knoppen en titel
StrConv( uitdrukking, stijl ) Converteer de tekenreeksexpressie naar hoofdletters, kleine letters of hoofdletters
Links( uitdrukking, tekens ) Neem de meest linkse tekens uit de tekenreeksuitdrukking
Mid(uitdrukking, begin, tekens) Neem de middelste set tekens uit de tekenreeksuitdrukking die begint bij start
IsNull( uitdrukking ) Test of de tekenreeksuitdrukking (of tekstvak) geen inhoud heeft (is null)
Nz( uitdrukking, value_if_null ) Als de uitdrukking null is, vul dan een standaardwaarde in
Nu() Retourneert de huidige datum en tijd
Afronden(uitdrukking, decimalen) Rondt de numerieke uitdrukking af op een aantal decimalen
RGB(rood, groen, blauw) Retourneert het gehele kleurgetal op basis van een combinatie van rood, groen en blauw

Methoden

Methoden in VBA zijn als functies, maar ze zijn verbonden met een besturingselement of ander object op een formulier of rapport.

Enkele handige methoden zijn:

DoCmd.CancelEvent Annuleert de huidige gebeurtenis die wordt afgehandeld
DoCmd.Close Sluit het huidige formulier (of database)
DoCmd.OpenForm Opent een nieuw formulier
DoCmd.OpenReport Voer een MS Access-opdracht uit, zoals het opslaan van nieuwe of bijgewerkte gegevens, het ongedaan maken van een wijziging of het afsluiten van een formulier
.SetFocus Stel de focus in op het besturingselement op het formulier
.Ongedaan maken Maak de meest recente wijziging of opdracht ongedaan
.Vernieuwen Updatet alle gegevens die ten grondslag liggen aan een formulier
.Verzoek Vraagt ​​de gegevens op die aan een formulier zijn verstrekt
.Overschilderen Herschildert alle besturingselementen op een formulier

Op deze Microsoft-site staan ​​nog veel meer functies en methoden.

De volgende reeks voorbeelden maakt gebruik van verschillende functies en methoden in verschillende combinaties.

Voorbeelden

Toon de gebruiker een waarschuwing als het accountsaldo lager is dan $1.000

If AccountBalance < 1000 Then
      MsgBox("Warning: The Account Balance is now less than $1,000.")
End If

Als het tekstvak Voornaam op het formulier iets bevat, converteer het dan naar hoofdletters

If Not IsNull( [FirstName] ) Then
   FirstName = StrConv( [FirstName], vbProperCase )
End If

de volgende pagina introduceert Eigenschappen van verschillende objecten.

Eigenschappen

Elk element op een gegevensinvoerformulier of rapport heeft een set eigenschappen ermee verbonden. Eigenschappen bepalen de plaatsing, kleur, lettertype, achtergrond en andere uiterlijk- en opmaakkenmerken van elk besturingselement. Enkele van de vele eigenschappen van een TextBox zijn bijvoorbeeld:

Zichtbaar Bepaalt of het tekstvak zichtbaar is op het formulier
Vergrendeld Bepaalt of gegevens in het tekstvak kunnen worden gewijzigd
Tabblad Index De volgorde van elk besturingselement terwijl de gebruiker door het formulier navigeert door op Tab te drukken
Label Identificeert de naam van het label dat aan het tekstvak is gekoppeld
Breedte, Hoogte, Boven- en Onderpositie Geeft de relatieve positie en grootte van het tekstvak aan
Achtergrondstijl en kleur Stelt de achtergrondstijl en kleur van het tekstvak in
Randstijl en kleur Stelt de stijl en kleur van de rand rond het tekstvak in
Lettergrootte, gewicht, onderstreping, cursief, kleur en uitlijning Stelt het lettertype en de stijl in
Marges en opvulafstand:stelt de marges en opvulling rond de binnenkant van het tekstvak in

Eigenschappen kunnen worden ingesteld met behulp van de ontwerpweergave en worden opgeslagen met het formulier of rapport. Eigenschappen kunnen ook worden gewijzigd met VBA-code terwijl het formulier wordt uitgevoerd. Om toegang te krijgen tot een eigenschap in VBA, gebruikt u de naam van het besturingselement, vervolgens een punt en vervolgens de naam van de eigenschap. De volgende code verandert bijvoorbeeld de letterkleur van het tekstvak Klant-ID in Rood:

Klant-ID.ForeColor =vbRed

De secties die volgen, bieden enkele oefeningen die verschillende delen van de VBA-programmeertaal combineren om het gedrag van verschillende gegevensinvoerformulieren aan te passen.

VBA-code-oefeningen

Probeer de volgende oefeningen om formulieren aan te passen. Raadpleeg de voorgaande paragrafen voor voorbeelden van code die kunnen worden aangepast aan de huidige oefening.

Oefening 1

Wijzig het CustomerDataEntry-formulier om twee AfterUpdate-gebeurtenishandlers toe te voegen die de voornaam en achternaam naar hoofdletters omzetten (maak een aparte AfterUpdate-handler voor elk tekstvak). Schrijf code om eerst te controleren of het tekstvak niet null is voordat u probeert de tekst te converteren.

Oefening 2

Wijzig het AccountsDataEntry-formulier om een ​​AfterUpdate-gebeurtenishandler toe te voegen die een waarschuwingsbericht weergeeft als het accountsaldo lager is dan $ 5.000. Zet ook de letterkleur van het tekstvak Saldo Rood.

Oefening 3

Wijzig het formulier Klantgegevensinvoer. Maak een On Lost Focus-subroutine die het label voor het tekstvak Voornaam rood (vbRed) maakt als de gebruiker het tekstvak Voornaam verlaat zonder iets te typen. Zet het label op blauw (vbBlue) als er iets in het tekstvak staat. In het onderstaande voorbeeld is er niets getypt in het tekstvak Voornaam en vervolgens ging de gebruiker met tab naar het volgende tekstvak waardoor het label Voornaam rood wordt.

Op de volgende pagina van deze zelfstudie wordt besproken hoe u met fouten in VBA-code omgaat.

Fouten afhandelen in VBA

Af en toe zal VBA-code een fout tegenkomen. Als een tekstvak bijvoorbeeld leeg is en we proberen de inhoud van het tekstvak om te zetten in hoofdletters, zal de StrCnv-functie mislukken. Een ander voorbeeld is wanneer deling door nul plaatsvindt. Zonder foutafhandeling kunnen deze problemen ervoor zorgen dat het VBA-programma crasht. Wanneer er een fout optreedt, kan een speciale code in actie komen om de fout af te handelen en de VBA-code verder te verwerken.

De twee belangrijkste foutafhandelingsfuncties van VBA zijn de On Error Goto-instructie en de Resume Next-instructie. Deze twee VBA-code-instructies werken samen om te voorkomen dat VBA de toepassing laat crashen.

De instructie On Error Goto informeert VBA over wat te doen als er een fout optreedt in een subroutine. Het Goto-gedeelte van de instructie verwijst naar een label elders in de code waar de VBA zal blijven werken. Zodra het VBA-programma het label bereikt, verschijnt elke fout in een object met de naam Err. De eigenschap Err.Description bevat een tekstbeschrijving van de laatst opgetreden fout. De instructie Resume Next zorgt ervoor dat het VBA-programma blijft draaien vanaf het punt nadat de fout is opgetreden.

Het volgende voorbeeld is een uitbreiding van de FirstName_AfterUpdate-routine die aan het begin van deze zelfstudie is geïntroduceerd. Het VBA-programma kan nu eventuele fouten in het programma aan.

Private Sub FirstName_AfterUpdate
     ' Subroutine to convert the FirstName of the customer to Proper Case
    On Error Goto FirstName_AfterUpdate_Error_Handler
     FirstName = StrConv(FirstName, vbProperCase)
     ' If the conversion was successful, exit this subroutine
     Exit Sub
FirstName_AfterUpdate_Error_Handler:
       ' If there is an error show the description of the error
      MsgBox Err.Description
      ' Resume with the next statement In the subroutine
     Resume Next
End Sub

in het volgende gedeelte van deze tutorial wordt besproken hoe u SQL-code in VBA kunt opnemen.

Aangepaste SQL-query's uitvoeren in VBA

Structured Query Language (SQL) is de programmeertaal die wordt gebruikt in relationele databases zoals MS Access, SQL Server, Oracle en vele andere. SQL-statements kunnen worden gebruikt voor het invoegen, bijwerken, verwijderen en ophalen (selecteren) van gegevensrecords uit tabellen (naast vele andere mogelijkheden). Een eenvoudig voorbeeld van een SQL-statement zou zijn:

SELECT customerid, firstname, lastname
FROM  customer

SQL-code kan binnen VBA worden geschreven en op een geschikt moment worden uitgevoerd. Er kan bijvoorbeeld een VBA-subroutine worden geschreven om de tabel Klant te doorzoeken om de hoogste Klant-ID te vinden. Dan zouden we 1 bij dit aantal kunnen optellen om een ​​nieuwe, ongebruikte klant-ID te krijgen voor een nieuw record.

De algemene stappen voor het uitvoeren van dit soort taken zijn:

Maak een SQL-statement

Voer de SQL-instructie uit met behulp van de open databaseverbinding (genaamd CurrentDb in VBA)

Haal de resulterende records op en gebruik de opgehaalde gegevens

Om deze VBA-subroutine te maken, opent u het formulier CustomerDataEntry en haalt u de eigenschappen van het veld CustomerID op. Klik op het tabblad Gebeurtenissen op de drie stippen rechts van de gebeurtenis On Dbl Click. Kies Code builder en de stub wordt als volgt gemaakt:

Private Sub CustomerID_DblClick(Cancel As Integer)

End Sub

Voeg de volgende code toe:

Private Sub CustomerID_DblClick(Cancel As Integer)
    ' Create a new CustomerID when user double-clicks in the CustomerID field
    On Error GoTo ErrorHandler
    Dim rstResults As Recordset ' This will hold the set of result records
    Dim strSQL As String        ' This variable will hold the text of the SQL Statement
    ' If there is nothing in the CustomerID text box
    If IsNull(CustomerID) Then
       ' Make the SQL statement
       strSQL = "SELECT MAX(customerid) + 1 AS NewID FROM customer"
       ' Run the SQL query against the current database
       Set rstResults = CurrentDb.OpenRecordset(strSQL)
       ' If at least 1 record is returned
       If rstResults.EOF = False Then
          ' Assign the NewID to the CustomerID field
          CustomerID = rstResults!NewID
       End If

        rstResults.Close              ' Close up the result set
       Set rstResults = Nothing      ' Empty out the result set
    End If
    Exit Sub

ErrorHandler:
    Set rstResults = Nothing
End Sub

De code ziet er als volgt uit zodra alles op zijn plaats is:

Sla het bestand op en bekijk vervolgens het formulier CustomerDataEntry. Navigeer naar een nieuw record en dubbelklik vervolgens in het veld Klant-ID. Er wordt automatisch een nieuwe klant-ID aangemaakt.


  1. TRANSLATE() Functie in Oracle

  2. EF 6 - Hoe parallelle queries correct uit te voeren

  3. Gebruik FILEGROUP_ID() om de ID van een bestandsgroep in SQL Server te retourneren

  4. Is het in Oracle mogelijk om een ​​record in te voegen of te UPDATEN via een weergave?