Tilpasse en skjemamal ved hjelp av et skript

Viktig: Denne artikkelen er maskinoversatt, se ansvarsfraskrivelsen. Du finner den engelske versjonen av artikkelen her som referanse.

Hvis du har erfaring med å skrive skript, kan du legge til et skript i skjemamalen i Microsoft Office InfoPath ved hjelp av skriptspråket Microsoft JScript eller Microsoft Visual Basic Scripting Edition (VBScript). Hvis du legger til skript, kan du tilpasse skjemamalen i større grad enn det som er mulig med regler, formler, datavalidering eller betinget formatering. Du kan for eksempel legge til et skript som oppretter og sender en e-postmelding når en bruker bytter visning i et skjema basert på skjemamalen. Du kan konfigurere en skjemamal for å opprette og sende en e-postmelding bare ved hjelp av et skript.

I denne artikkelen

Oversikt

Vurderinger for kompatibilitet

Angi skriptspråk for en skjemamal

Vise en melding hver gang det oppstår en hendelse

Legge til et skript som kjøres når en bruker lagrer skjemadata

Legge til et skript som kjøres når en bruker sender skjemadata

Legge til et skript som kjøres når brukeren klikker en knapp

Legge til et skript som kjøres når eksisterende skjemaer slås sammen

Legge til et skript for å oppdatere eksisterende skjemaer

Legge til et skript for andre hendelser

Oversikt

Du kan tilpasse InfoPath-skjemamalen ved hjelp av regler, formler, datavalidering og betinget formatering. Selv om disse funksjonene er svært fleksible og kan håndtere mange forskjellige oppgaver, er det noen oppgaver som ligger utenfor rekkevidde for disse funksjonene. Du kan for eksempel ikke bruke regler til å sende en e-postmelding når en bruker angir en verdi i en tekstboks i et skjema. Hvis du må tilpasse skjemamalen på en måte som ligger utenfor rekkevidde for disse funksjonene, og du har erfaring med å skrive skript ved hjelp av skriptspråket JScript eller VBScript, kan du legge til et skript som kjøres når en bruker åpner et nytt skjema eller endrer et eksisterende skjema som er basert på skjemamalen.

Når du legger til et skript i en skjemamal, startes Microsoft Script Editor (MSE) i InfoPath, slik at du kan legge til, redigere og feilsøke skript i en skjemamal, og markøren plasseres i den valgte hendelsen. I InfoPath legges det automatisk til en hendelsesbehandling i skriptet. En hendelsesbehandling er funksjonskoden i en InfoPath-skjemamal som svarer på en brukerhandling eller en endring i XML-dataene i et skjema. Hvis du for eksempel vil at brukerne skal lagre skjemaene på flere nettverkssteder, kan du legge til et skript i hendelsesbehandlingen OnSaveRequest. Når du legger til et skript som skal kjøres når brukeren lagrer et skjema basert på skjemamalen, startes skriptredigeringsprogrammet i InfoPath, og én av kodene nedenfor legges til i skriptet.

Merknad: Hvilken kode som legges til i InfoPath, avhenger av hvilket skriptspråk som er valgt.

JScript

//=======
// The following function handler is created by Microsoft Office InfoPath.
// Do not modify the name of the function, or the name and number of arguments.
//=======
function XDocument::OnSaveRequest(eventObj)
{
// Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation();
// Write the code to be run after saving here.
eventObj.ReturnStatus = true;
}

VBScript

'=======
' The following function handler is created by Microsoft Office InfoPath.
' Do not modify the name of the function, or the name and number of arguments.
'=======
Sub XDocument_OnSaveRequest(eventObj)
' Write the code to be run before saving here.
eventObj.IsCancelled = eventObj.PerformSaveOperation
' Write the code to be run after saving here.
eventObj.ReturnStatus = True
End Sub

Du kan deretter legge til kode på riktig sted i hendelsesbehandlingen som lagrer skjemaet på et annet sted i nettverket. Når en bruker lagrer et skjema basert på denne skjemamalen, kjøres koden i hendelsesbehandlingen OnSaveRequest

Merknad: Denne artikkelen gir god oversikt over oppretting av skript i en skjemamal. Hvis du vil lære mer om Microsoft Script Editor og bestemte objekter, metoder, hendelser og egenskaper som brukes i InfoPath, se referansematerialet for InfoPath-utviklere.

I InfoPath legges det automatisk til hendelsesbehandling for alle hendelsene nedenfor unntatt én.

Event handler

Description

Steps for creating

OnAfterChange

This event runs after a user changes the value in the specified control bound to a field. For example, you can display a custom HTML task pane after a user selects an item in a list box control. This event runs after the OnValidate event.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On After Change Event.

OnAfterImport

This event runs after the user successfully merges several forms into one form.

Manually add the OnAfterImport event handler declaration directly to the script file by using MSE. This event handler cannot be created in design mode.

OnBeforeChange

This event runs after a user changes the value in a control and before the value is added to the specified field bound to that control. For example, you can prevent a user from adding an additional row before filling out the last row in a repeating table.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On Before Change Event.

OnClick

This event runs when a user clicks a button associated with this event. This event is available after you add a button to the form template. For example, you can perform a complex calculation by using the values in fields in the main data source when a user clicks the button.

Double-click the button control and then on the General tab of the Button Properties dialog box, click Edit Form Code.

OnContextChange

This event runs when the focus changes in the form. For example, this event runs when a user navigates from a text box to a date picker, or when a user switches views. This event occurs after all other events have occurred.

On the Tools menu, point to Programming, and then click On Context Change Event.

OnLoad

This event runs whenever a user creates a new form or opens an existing form based on your form template. For example, you can copy a list of items from a secondary data source to the main data source when a user opens the form.

On the Tools menu, point to Programming, and then click On Load Event.

OnMergeRequest

This event runs when forms based on your form template are merged. For example, you can display the number of forms that were merged to give a user a status during the merge operation.

On the Tools menu, click Form Options. In the Category list, click Advanced. Under Merge forms, select the Merge using custom code check box, and then click Edit.

OnSaveRequest

This event runs when a user saves a form based on your form template. For example, you can save the form based on this form template to more than one location when a user saves the form. InfoPath adds two additional lines of code to this event: a line that saves the form and another line that tells you if InfoPath successfully saved the form.

On the Tools menu, click Form Options. In the Category list, click Open and Save. Under Save behavior, select the Save using custom code check box, and then click Edit.

OnSign

This event runs when a user applies a digital signature to a form. For example, you can add additional data to the digital signature of an expense report form when a user signs it.

On the Tools menu, point to Programming, and then click On Sign Event.

OnSubmitRequest

This event runs when a user submits his or her form data. For example, you can submit the form data to a secure Web service when the user clicks Submit on the File menu. Since InfoPath does not support a data connection to a secure Web service, you need to add a custom data connection that works with your secure Web service.

On the Tools menu, click Submit Options. Select the Allow users to submit this form check box, click Perform custom action using Code, and then click Edit Code.

OnSwitchView

This event runs when a user opens a form based on your form template or switches to another view in the form. For example, when a user switches to a specific view, you can create an e-mail message that contains data from the fields in the form's main data source.

On the Tools menu, click Programming, and then click On Switch View Event.

OnValidate

This event runs when a user changes the value in a control bound to a field. For example, when the user changes the value in a specific control, you can calculate a new value for another control by using the number that the user entered and a number that is in the script. This event occurs after the OnBeforeChange event handler runs.

Right-click a control on the form template or a field in the Data Source task pane, point to Programming on the shortcut menu, and then click On After Validate Event.

OnVersionUpgrade

This event runs when a user opens an existing form and the version number of the form template used by the existing form is older than the version number of the form template in the publish location. When a user opens an existing form, InfoPath checks the version number of the form template associated with the existing form. If the form template has a newer version number, InfoPath runs the OnVersion event handler when the user opens the existing form. For example, imagine that you add a new field to an existing form template and republish it, and you want the new field to be added to the main data source if a user opens an existing form. This event adds the new field to the main data source when a user opens an existing form.

On the Tools menu, click Form Options. In the Category list, click Versioning. In the On version upgrade list, click Use custom event, and then click Edit.

Til toppen av siden

Kompatibilitetshensyn

Du kan ikke legge til skript i en nettleserkompatibel skjemamal. Du kan bare legge til skript i en skjemamal med skjemaer som skal fylles ut i InfoPath. Du kan bare tilpasse en webleserkompatibel skjemamal ved hjelp av forvaltet kode.

Til toppen av siden

Angi skriptspråk for en skjemamal

Hvis du vil tilpasse en skjemamal ved hjelp av skript, kan du bruke Microsoft JScript eller Microsoft Visual Basic Scripting Edition (VBScript). InfoPath er som standard konfigurert til å legge til skript ved hjelp av JScript. Hvis skjemamalen inneholder ikke skript eller forvaltet kode, og du foretrekker å bruke VBScript som skriptspråk, kan du endre skriptspråk for skjemamalen til VBScript. Du kan ikke bruke begge skriptspråk i samme skjemamal.

Hvis skjemamalen allerede inneholder skript på ett språk, og du vil bruke andre språk, trenger du å lagre det eksisterende skriptet slik at du kan konvertere skriptet til det andre språket, Fjern skriptet fra skjemamalen via dialogboksen Alternativer for skjema, og deretter legge det konverterte skriptet tilbake til skjemamalen. InfoPath kan ikke konvertere skript til et nytt skriptspråk. Endre skriptspråk i dialogboksen Alternativer for skjema, påvirker bare denne skjemamalen. Andre skjemamaler har JScript som standard skriptspråk.

  1. Klikk Alternativer for skjema, på Verktøy-menyen.

  2. Klikk programmering i kategori-listen i dialogboksen Alternativer for skjema.

  3. Klikk VBScript under programmeringsspråket, i listen kodespråk for skjemamal.

    Kommentarer: 

    • Når du angir skriptspråk og opprette én eller flere hendelsesbehandling for en skjemamal, kan du ikke endre skriptspråk for skjemamalen.

    • Hvis du har installert Microsoft Visual Studio 2005 Tools for Applications, er standardspråket Microsoft Visual Basic .NET. Du kan fortsatt bruke denne fremgangsmåten til å endre skriptspråk til VBScript.

Til toppen av siden

Vise en melding hver gang en hendelse forekommer

Hvis du vil vite hvilken hendelsesbehandling som kjøres som svar på en handling eller annen hendelse, kan du legge til midlertidig kode for å vise en melding når hendelsesbehandlingen kjøres. Du bør bare bruke denne koden til å finne ut når en hendelsesbehandling kjøres. Når du har lagt til denne koden, kan du bruke forhåndsvisning til å vise et skjema basert på denne skjemamalen, eller til å publisere skjemamalen og deretter opprette en ny skjemamal. En del hendelsesbehandling kjøres bare hvis du oppretter et skjema etter at du har publisert skjemamalen. Du kan deretter utføre en handling du tror kan kjøre hendelsesbehandlingen. Når hendelsesbehandlingen kjøres, ser du en melding.

Når du har funnet ut hvilke handlinger eller hendelser som kjører hendelsesbehandlingen, fjerner du koden og fortsetter utformingen av skjemamalen. Hvis du ikke fjerner denne koden og deretter publiserer skjemamalen, vil brukerne se denne meldingen når hendelsesbehandlingen kjøres.

  1. Legg til hendelsesbehandlingen.

  2. Hvis du vil legge til kode i JScript, skriver du inn XDocument.UI.Alert ("The hendelse navnet hendelse oppstod bare"); Erstatt med navnet på din hendelsesbehandling. Hvis du for eksempel hvis du legger til denne koden OnValidate hendelsesbehandling, skriver du XDocument.UI.Alert ("OnValidate ble nettopp kjørt");

  3. Legge til kode i VBScript, skriver du inn XDocument.UI.Alert ("The hendelse navnet hendelse oppstod bare") For Hvis du legger til denne koden OnSaveRequest hendelsesbehandling, skriver du inn XDocument.UI.Alert ("The OnSaveRequest hendelsesbehandling nettopp kjørt")

  4. Du kan teste koden ved å klikke ForhåndsvisningFil-menyen eller trykke CTRL+SKIFT+B og deretter utføre en brukerhandling som kan starte hendelsen. Når hendelsen med kodelinjen forekommer, vises meldingen din.

    Merknad: Noen hendelser krever kanskje at du publiserer skjemamalen og deretter oppretter et skjema basert på denne skjemamalen før du kan utføre en brukerhandling for å starte hendelsen.

  5. Før du publiserer skjemamalen og lar brukerne fylle ut skjemaer basert på denne skjemamalen, sletter du koden du brukte til å vise meldingen.

Til toppen av siden

Legge til et skript som kjøres når en bruker lagrer skjemadataene

  1. Klikk Alternativer for skjema, på Verktøy-menyen.

  2. Klikk Åpne og lagre i Kategori-listen i dialogboksen Alternativer for skjema.

  3. Merk av for Lagre ved hjelp av egendefinert kode under Virkemåte ved lagring, og klikk deretter Rediger. Microsoft Script Editor startes med markøren i hendelsesbehandlingen OnSaveRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnSaveRequest(eventObj)
    {
    // Write the code to be run before saving here.
    eventObj.IsCancelled = eventObj.PerformSaveOperation();
    // Write the code to be run after saving here.
    eventObj.ReturnStatus = true;
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnSaveRequest(eventObj)
    ' Write the code to be run before saving here.
    eventObj.IsCancelled = eventObj.PerformSaveOperation
    ' Write the code to be run after saving here.
    eventObj.ReturnStatus = True
    End Sub
  4. Gjør ett eller begge av følgende:

    • Legg til et skript som kjøres før skjemaet lagres i InfoPath, ved å bytte ut kommentaren Write the code to be run before saving here. med koden din.

    • Legg til et skript som kjøres etter at skjemaet er lagret i InfoPath, ved å bytte ut kommentaren Write the code to be run after saving here. med koden din.

  5. Hvis du vil teste endringene, klikker du Forhåndsvisningstandardverktøylinjen eller trykker CTRL+SKIFT+B.

    Merknad: Hvis hendelsesbehandlingen først kjøres etter at du har opprettet et skjema basert på skjemamalen, publiserer du skjemamalen ved å klikke PubliserFil-menyen og deretter fullføre publiseringsveiviseren. Når du har publisert skjemamalen, oppretter du et skjema og utfører en handling for å kjøre hendelsesbehandlingen.

Til toppen av siden

Legge til et skript som kjøres når en bruker sender skjemadataene

  1. Klikk SendealternativerVerktøy-menyen.

  2. Merk av for Tillat brukere å sende dette skjemaet i dialogboksen Sendealternativer.

  3. Klikk Utfør egendefinert handling ved hjelp av kode, og klikk deretter Rediger kode. Microsoft Script Editor startes med markøren i hendelsesbehandlingen OnSubmitRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnSubmitRequest(eventObj)
    {
    // If the submit operation is successful, set
    // eventObj.ReturnStatus = true;
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnSubmitRequest(eventObj)
    ' If the submit operation is successful, set
    ' eventObj.ReturnStatus = True
    ' Write your code here
    End Sub
  4. Bytt ut kommentaren If the submit operation is successful, set eventObj.ReturnStatus = true Write your code here med koden din.

  5. Hvis du vil teste endringene, klikker du Forhåndsvisningstandardverktøylinjen eller trykker CTRL+SKIFT+B.

Til toppen av siden

Legge til et skript som kjøres når en bruker klikker en knapp

  1. Legg til en ny knapp i en visning i skjemamalen, og dobbeltklikk deretter knappen.

    Merknad: Hvis du legger til skript på en eksisterende knapp, dobbeltklikker du den eksisterende knappen i stedet.

  2. Klikk kategorien Generelt.

  3. Klikk Rediger skjemakode. Microsoft Script Editor startes med markøren i hendelsesbehandlingen OnClick for den aktuelle knappen.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function Button Name::OnClick(eventObj)
    {
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub Button Name_OnClick(eventObj)
    ' Write your code here
    End Sub
  4. Bytt ut kommentaren Write your code here med koden din.

  5. Hvis du vil teste endringene, klikker du Forhåndsvisningstandardverktøylinjen eller trykker CTRL+SKIFT+B.

Til toppen av siden

Legge til et skript som kjøres når eksisterende skjemaer slås sammen

  1. Klikk Alternativer for skjema, på Verktøy-menyen.

  2. Klikk Avansert i Kategori-listen i dialogboksen Alternativer for skjema.

  3. Merk av for Aktiver skjemasammenslåing under Slå sammen skjemaer.

  4. Merk av for Flett ved hjelp av egendefinert kode, og klikk deretter Rediger. Microsoft Script Editor startes med markøren i hendelsesbehandlingen OnMergeRequest.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnMergeRequest(eventObj)
    {
    // Write the code that handles each form being merged here.
    XDocument.ImportDOM(eventObj.DOM);
    eventObj.ReturnStatus = true;
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnMergeRequest(eventObj)
    ' Write the code that handles each form being merged here.
    XDocument.ImportDOM(eventObj.DOM)
    eventObj.ReturnStatus = True
    End Sub
  5. Bytt ut kommentaren Write the code that handles each form being merged here. med koden din.

  6. Du kan teste koden i denne hendelsen ved å publisere skjemamalen, opprette flere skjemaer basert på denne skjemamalen, og deretter slå sammen skjemamalene.

    Merknad: Du finner koblinger til mer informasjon om publisering av skjemamalen under Se også.

Til toppen av siden

Legge til et skript for å oppdatere eksisterende skjemaer

Hvis du oppdaterte en tidligere publisert skjemamal og vil oppdatere de eksisterende skjemaene basert på skjemamalen, kan du legge til skript i den oppdaterte skjemamalen som kjøres når en bruker åpner ett av de eksisterende skjemaene. Når en bruker åpner et eksisterende skjema, kontrolleres versjonsnummeret for den tilknyttede skjemamalen på publiseringsstedet. Hvis versjonsnummeret for skjemamalen på publiseringsstedet er nyere enn versjonsnummeret i det eksisterende skjemaet, noe som tyder på at det er oppdatert, kjøres koden i denne hendelsen i InfoPath for å oppdatere det eksisterende skjemaet.

  1. Klikk Alternativer for skjema, på Verktøy-menyen.

  2. Klikk Versjonskontroll i Kategori-listen i dialogboksen Alternativer for skjema.

  3. Klikk Bruk egendefinert hendelse i listen Ved versjonsoppgradering, og klikk deretter Rediger. Microsoft Script Editor startes med markøren i hendelsesbehandlingen OnVersionUpgrade.

    JScript

    //=======
    // The following function handler is created by Microsoft Office InfoPath.
    // Do not modify the name of the function, or the name and number of arguments.
    //=======
    function XDocument::OnVersionUpgrade(eventObj)
    {
    // Write your code here
    }

    VBScript

    '=======
    ' The following function handler is created by Microsoft Office InfoPath.
    ' Do not modify the name of the function, or the name and number of arguments.
    '=======
    Sub XDocument_OnVersionUpgrade(eventObj)
    ' Write your code here
    End Sub
  4. Bytt ut kommentaren Write your code here med koden din.

  5. Du kan teste koden i denne hendelsen ved å publisere skjemamalen, opprette flere skjemaer basert på denne skjemamalen, endre og publisere en oppdatert versjon av skjemamalen og deretter åpne et eksisterende skjema basert på den eldre versjonen av denne skjemamalen.

    Merknad: Du finner koblinger til mer informasjon om publisering av skjemamalen under Se også.

Til toppen av siden

Legge til et skript for andre hendelser

Denne fremgangsmåten kan brukes til å legge til følgende hendelsesbehandling i skjemamalen:

  • OnAfterChange

  • OnBeforeChange

  • OnContextChange

  • OnLoad

  • OnSwitchView

  • OnSign

  • OnValidate

  • Velg ProgrammeringVerktøy-menyen, og klikk deretter hendelsen som skal legges til i hendelsesbehandlingen. Microsoft Script Editor startes med markøren i hendelsesbehandlingen du valgte.

  • Bytt ut kommentaren Write your code here med koden din.

Til toppen av siden

Merknad: Ansvarsfraskrivelse for maskinoversettelse: Denne artikkelen er oversatt av et datasystem i stedet for en oversetter. Microsoft tilbyr disse maskinoversettelsene slik at brukere som ikke snakker engelsk, får tilgang til innhold om Microsoft-produkter, -tjenester og –teknologier. Ettersom artikkelen er maskinoversatt, kan den inneholde feil i vokabular, syntaks eller grammatikk.

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Office Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×