Transactie openen

Begint een transactie; volgende recordwijzigingen worden in transactie gehouden tot de scriptstap Transactie vastleggen of Transactie ongedaan maken wordt uitgevoerd.

Opmerking  Transacties worden afgehandeld binnen het oorspronkelijke venster. Acties die in verschillende vensters van het venster van de oorspronkelijke transactie worden ondernomen, worden automatisch buiten bestaande transacties uitgevoerd.

Opties 

  • Met Bevestiging van gegevensinvoer overslaan worden alle bevestigingsopties voor gegevensinvoer die zijn ingesteld voor velden genegeerd en wordt de record gewoon vastgelegd. Deze optie slaat de bevestiging alleen over voor velden die zijn ingesteld met de bevestigingsoptie Alleen tijdens gegevensinvoer in het dialoogvenster Opties voor veld. Velden die op Altijd bevestigen zijn ingesteld, worden nog steeds bevestigd, zelfs als de optie Bevestiging van gegevensinvoer overslaan is ingeschakeld. Raadpleeg Veldbevestiging definiëren.

  • Met ESS-vergrendelingsconflicten negeren kunnen clients van ODBC-gegevensbronnen het vastleggen van wijzigingen afdwingen wanneer de vastlegbewerking anders door de 'optimistische vergrendeling' zou worden voorkomen. ODBC-gegevensbronnen worden ook wel externe SQL-bronnen (ESS) genoemd.

Compatibiliteit 

Product Ondersteund
FileMaker Pro Ja
FileMaker Go Ja
FileMaker WebDirect Ja
FileMaker Server Ja
FileMaker Cloud Ja
FileMaker Data API Ja
Custom Web Publishing Ja

Afkomstig uit versie 

19.6.1

Beschrijving 

Een transactie bestaat uit wijzigingen in een of meer records in het huidige venster. Wijzigingen in een transactie kunnen invloed hebben op meerdere tabellen in meerdere databasebestanden. Alle wijzigingen in een transactie worden samen vastgelegd of, als er een fout optreedt, samen ongedaan gemaakt. Een transactie begint met een scriptstap Transactie openen. Nadat u een transactie hebt gestart, worden daaropvolgende recordwijzigingen in de transactie vastgehouden totdat een scriptstap Transactie vastleggen of Transactie ongedaan maken wordt uitgevoerd. De onderstaande stappen kunnen records wijzigen die zijn opgeslagen in het databaseschema en kunnen worden gebruikt als transactiescriptstappen.

Wanneer u een scriptstap Transactie openen aan een script toevoegt, wordt de scriptstap Transactie vastleggen automatisch hieraan gekoppeld.

Transacties:

  • Begin door te proberen de huidige actieve record af te sluiten en eventuele wijzigingen door te voeren voordat u verdergaat. Als de actieve record niet kan worden afgesloten, retourneert Transactie openen een fout en worden de scriptstappen binnen de transactie overgeslagen.

  • Combineer een of meer veld- of tabelwijzigingen als een enkele set wijzigingen

  • Een hele reeks wijzigingen doorvoeren of ongedaan maken

  • Wijzigingen in velden of tabellen tussen de scriptstappen Transactie openen en Transactie vastleggen

  • Hiermee kunt u een betrouwbaardere reeks wijzigingen maken

  • Kan automatisch worden teruggedraaid met behulp van de scriptstap Transactie ongedaan maken

  • Slagen (vastleggen) of falen (terugdraaien) als een groep

  • Slagen wanneer aan schemaregels is voldaan

  • Automatisch terugdraaien wanneer niet aan schemaregels is voldaan

  • Kan optioneel validatie-instellingen overslaan en automatisch terugdraaien negeren wanneer niet aan schemaregels is voldaan. Het negeren van schemaregels kan de integriteit van transacties schenden.

  • Worden gewijzigd in een lokaal tijdelijk bestand voordat de scriptstap Transactie vastleggen de wijzigingen opslaat in het hoofdbestand

Transacties worden automatisch vastgelegd en eindigen wanneer:

  • De volgende scriptstappen wijzigen het lay-outvenster: Nieuw venster, Venster sluiten of Venster selecteren

  • De volgende dialoogvensters worden gebruikt: Database beheren, Container beheren of Gegevensbron beheren

  • De volgende acties of scriptstappen worden uitgevoerd: Een kopie opslaan als of Opnieuw aanmelden.

  • Het bestand is gesloten

Transacties worden automatisch teruggedraaid wanneer:

  • Er is een onopgeloste schemafout opgetreden voordat een transactie wordt gestart. Transacties worden automatisch overgeslagen wanneer dit gebeurt

  • Een wijziging in een veld, dat is ingesteld om altijd te valideren, komt niet overeen met de validatie-opties van het veld

  • De scriptstap Transactie ongedaan maken wordt gebruikt

  • Een script is geannuleerd

  • De scriptstap Script onderbreken wordt gebruikt binnen een transactie

  • Een script wordt geannuleerd met behulp van de Script Debugger

  • Er zijn privilegefouten zoals geen veldtoegang, geen recordtoegang en geen tabeltoegang

Opmerkingen 

  • Geneste transacties:

    • Zijn niet toegestaan binnen hetzelfde script (de Scriptwerkruimte voorkomt dat een transactie in een andere wordt geplaatst)

    • Kan worden benaderd door een transactie in een hoofdscript te openen en vervolgens de Script uitvoeren scriptstap te gebruiken om een subscript aan te roepen. Alles in het subscript wordt uitgevoerd binnen het bereik van de momenteel geopende transactie. Als het subscript de stappen Transactie openen en Transactie vastleggen bevat, worden deze stappen overgeslagen en wordt fout 3 ("Opdracht is niet beschikbaar") als resultaat gegeven, maar alles voor, tussen en na die stappen in het subscript wordt uitgevoerd binnen de transactie van het hoofdscript. Als het subscript een stap Transactie terugdraaien bevat, kan het de transactie van het hoofdscript terugdraaien en naar de overeenkomstige stap Transactie vastleggen gaan. Raadpleeg Voorbeeld 4.

  • De actie Record verwijderen, indien gebruikt binnen transacties, verwijdert één record tegelijk.

  • De actie Tabel afbreken kan niet worden teruggedraaid.

  • De actie Records importeren geeft geen samenvatting weer bij gebruik binnen transacties.

  • Met de scriptstap Transactie ongedaan maken wordt de waarde voor het automatisch invoeren van seriële verhoging niet teruggedraaid.

  • De optie Recordwijzigingen automatisch opslaan in de Lay-outinstelling wordt tijdens transacties genegeerd.

  • Wijzigingen die worden aangebracht door de scriptstap FileMaker Data API uitvoeren, worden niet opgenomen in de transactie van het script. Elke bewerking die binnen deze scriptstap is voltooid, zelfs als deze is ingesloten in een transactie, wordt niet ongedaan gemaakt.

  • Gebruik de functie Get (StatusTransactieOpen) functie.

Voorbeeld 1 

Hiermee wordt een transactie geopend en uitgevoerd.

Kopiëren
Transactie openen []
    Record/verzoek openen Veld instellen [ Activa::Beschrijving ; "beschrijvende tekst" ] Transactie vastleggen

Voorbeeld 2 

Hiermee wordt een transactie geopend en uitgevoerd zonder validatie van gegevensinvoer.

Kopiëren
Transactie openen [ Validatie gegevensinvoer overslaan ] Record/verzoek openen Veld instellen [ Activa::Beschrijving ; "beschrijvende tekst" ] Transactie vastleggen

Voorbeeld 3 

Hiermee wordt een transactie geopend en uitgevoerd zonder ESS-vergrendelingsbeveiliging.

Kopiëren
Transactie openen [ ESS-vergrendelingsconflicten overschrijven ]
Record/verzoek openen Veld instellen [ Activa::Beschrijving ; "beschrijvende tekst" ] Transactie vastleggen

 

Voorbeeld 4

Het hoofdscript opent een transactie, stelt TextField in en roept vervolgens een subscript aan. Omdat het subscript wordt aangeroepen terwijl een transactie al open is, wordt de stap Transactie openen overgeslagen, wordt Tekstveld ingesteld op een andere waarde en wordt de voorwaarde in de stap Transactie terugdraaien geëvalueerd.

Als Getalveld 1 is, wordt de huidige transactie (geopend in het hoofdscript) teruggedraaid. De stap Transactie vastleggen van het subscript wordt overgeslagen en vervolgens wordt het besturingselement teruggezet naar de stap Transactie vastleggen van het hoofdscript, waarbij alle stappen worden overgeslagen na Script uitvoeren. Wanneer het hoofdscript is voltooid, blijft de waarde van Tekstveld ongewijzigd.

Als Getalveld 0 is, draait het subscript de transactie niet terug, dus gaat de controle terug naar de stap na Script uitvoeren, waarbij Getalveld is ingesteld op abc123 en de transactie is vastgelegd.

Hoofdscript

Kopiëren
Transactie openen [ ]
    Veld instellen [ Tabel::Tekstveld ; "abc" ]
    Script uitvoeren [ Gespecificeerd: uit lijst ; "subscript" ; Parameter: ]
    Veld instellen [ Tabel::Tekstveld ; "abc123" ]
Transactie vastleggen

Subscript

Kopiëren
Transactie openen [ ]
    Veld instellen [ Tabel::Tekstveld ; "xyz456" ]
    Transactie terugdraaien [ Voorwaarde: Tabel::Getalveld = 1 ]
Transactie vastleggen