Tilpasse en formularskabelon ved hjælp af et script

Vigtigt: Denne artikel er maskinoversat. Se ansvarsfraskrivelsen. Du kan finde den engelske version af denne artikel her til din orientering.

Hvis du er bekendt med at skrive scripts, kan du føje et script til en Microsoft Office InfoPath-formularskabelon ved hjælp af scriptsproget Microsoft JScript eller Microsoft Visual Basic Scripting Edition (VBScript). Ved at tilføje scripts kan du tilpasse formularskabelonen, ud over hvad der er muligt med regler, formler, datavalidering og betinget formatering. Du kan f.eks. tilføje et script, der opretter og sender en e-mail, når en bruger skifter visning i en formular, der er baseret på formularskabelonen. Du kan kun konfigurere en formularskabelon til at oprette og sende en e-mail ved hjælp af et script.

Denne artikel indeholder

Oversigt

Overvejelser om kompatibilitet

Angive scriptsproget for en formularskabelon

Få vist en meddelelse hver gang en hændelse indtræffer

Tilføje et script, der køres, når en bruger gemmer formulardata

Tilføje et script, der køres, når en bruger sender formulardata

Tilføje et script, der køres, når en bruger klikker på en knap

Tilføje et script, der køres, når eksisterende formularer flettes

Tilføje et script for at opdatere de eksisterende formularer

Tilføje et script til andre begivenheder

Oversigt

Du kan tilpasse en InfoPath-formularskabelon ved hjælp af regler, formler, datavalidering og betinget formatering. Selvom disse funktioner er meget fleksible og kan håndtere en lang række forskellige opgaver, kan disse funktioner ikke klare alle opgaver. Du kan f.eks. ikke bruge regler til at sende en e-mail, når en bruger indtaster en værdi i en tekstboks i en formular. Hvis du skal tilpasse formularskabelonen på en måde, der ikke er muligt med disse funktioner, og hvis du er bekendt med at skrive scripts ved hjælp af scriptsproget JScript eller VBScript, kan du tilføje et script, der kører, når en bruger åbner en ny formular eller ændrer en eksisterende formular, der er baseret på formularskabelonen.

Når du føjer et script til en formularskabelon, starter InfoPath programmet Microsoft Script Editor (MSE), hvor du kan tilføje, redigere og foretage fejlfinding i scripts i en formularskabelon, og som placerer markøren i den valgte hændelse. InfoPath føjer automatisk en hændelse til scriptet. En hændelseshandler er den funktionskode i en InfoPath-formularskabelon, der reagerer på en brugerhandling eller en ændring i XML-dataene i en formular. Hvis brugerne f.eks. skal kunne gemme deres formularer på flere netværksplaceringer, kan du føje et script til hændelseshandleren OnSaveRequest. Når du tilføjer et script, der skal køre, når brugeren gemmer en formular, der er baseret på formularskabelonen, starter InfoPath scripteditoren og tilføjer en af følgende koder i scriptet.

Bemærk: Hvilken kode InfoPath tilføjer, afhænger af det valgte scriptsprog.

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 derefter tilføje kode på de relevante steder i hændelseshandleren, der gemmer formularen på de forskellige netværksplaceringer. Når en bruger gemmer en formular, der er baseret på denne formularskabelon, kører InfoPath koden i hændelseshandleren OnSaveRequest.

Bemærk: I denne artikel gives der et overordnet overblik over oprettelse af scripts i en formularskabelon. Du kan lære mere om Microsoft Script Editor og de objekter, metoder, hændelser og egenskaber, der bruges i InfoPath, i InfoPath Developer's reference.

InfoPath tilføjer automatisk hændelseshandlere for alle følgende hændelser med undtagelse af en.

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.

Toppen af siden

Kompatibilitetsovervejelser

Du kan ikke føje scripts til en webbrowserkompatibel formularskabelon. Du kan kun føje scripts til en formularskabelon, hvis formularer skal udfyldes i InfoPath. Du kan kun tilpasse en webbrowserkompatibel formularskabelon ved hjælp af administreret kode.

Toppen af siden

Angive scriptsproget for en formularskabelon

Hvis du vil tilpasse en formularskabelon ved hjælp af script, kan du bruge enten Microsoft JScript eller Microsoft Visual Basic Scripting Edition (VBScript). InfoPath er som standard konfigureret til at tilføje script ved hjælp af JScript. Hvis formularskabelonen ikke indeholder scripts eller administreret kode, og du foretrækker at bruge VBScript som din scriptsproget, kan du ændre scriptsproget for formularskabelonen til VBScript. Du kan ikke bruge begge scripting sprog i den samme formularskabelon.

Hvis formularskabelonen allerede indeholder script på ét sprog, og du vil bruge andet sproget, har brug for du at gemme det eksisterende script, så du kan konvertere scriptet til andet sproget, fjerne scriptet fra formularskabelonen via dialogboksen Formularindstillinger, og derefter tilføje scriptet konverteret tilbage til formularskabelonen. InfoPath kan ikke konvertere scripts til en ny scriptsproget. Ændre et script-sprog i dialogboksen Formularindstillinger kun påvirker denne formularskabelon. Andre formularskabeloner får JScript som standard scriptsproget.

  1. Klik på Formularindstillinger i menuen Funktioner.

  2. Klik på det sted på listen kategori i dialogboksen Formularindstillingerprogrammering.

  3. Klik på VBScript under programmeringssproget, på listen formular skabelon kodesprog.

    Bemærkninger: 

    • Når du angive scriptsproget og opretter en eller flere hændelseshandlere for en formularskabelon, kan du ikke ændre scriptsproget for formularskabelonen.

    • Hvis du har installeret Microsoft Visual Studio 2005 Tools for Applications, er standardsproget Microsoft Visual Basic .NET. Du kan stadig bruge denne fremgangsmåde til at ændre scriptsproget til VBScript.

Toppen af siden

Vise en meddelelse, hver gang en hændelse forekommer

Hvis du vil vide, hvilke hændelseshandlere der kører som en reaktion på en handling eller en anden hændelse, kan du tilføje midlertidig kode for at få vist en dialogboks, når hændelseshandleren kører. Du bør kun bruge denne kode til at finde ud af, hvornår en hændelseshandler kører. Når du har tilføjet denne kode, kan du bruge eksempelvisningen til at få vist en formular, der er baseret på denne formularskabelon, eller til at udgive formularskabelonen og derefter oprette en ny formularskabelon. Nogle hændelseshandlere kører, kun hvis du opretter en formular, efter at du har udgivet formularskabelonen. Du kan derefter udføre en handling, som du mener kører hændelseshandleren. Når hændelseshandleren kører, vises der en meddelelsesboks.

Når du har bekræftet, hvilke handlinger eller hændelser der kører hændelseshandleren, skal du fjerne koden og derefter fortsætte med at udforme formularskabelonen. Hvis du ikke fjerner denne kode og derefter udgiver formularskabelonen, vises denne meddelelsesboks for brugerne, når hændelseshandleren kører.

  1. Tilføje hændelseshandleren.

  2. Hvis du vil tilføje kode i JScript, Skriv XDocument.UI.Alert ("feltet begivenhed navn begivenhed lige har kørt") Erstat med navnet på din hændelseshandler. F.eks, hvis du tilføjer denne kode til hændelseshandler OnValidate , skal du skrive XDocument.UI.Alert ("feltet OnValidate hændelseshandler lige har kørt");

  3. Tilføje kode i VBScript, skal du skrive XDocument.UI.Alert ("feltet hændelse navn begivenhed lige har kørt") f.eks, hvis du føjer denne kode til hændelseshandler OnSaveRequest , skal du skrive XDocument.UI.Alert ("feltet OnSaveRequest hændelseshandler lige har kørt")

  4. Du kan afprøve koden ved at klikke på Eksempel i menuen Filer, eller tryk på CTRL+SKIFT+B, og udfør derefter en brugerhandling, der kan starte hændelsen. Når hændelsen med kodelinjen forekommer, bør der vises en meddelelsesboks med meddelelsen.

    Bemærk: Nogle hændelser kræver muligvis, at du udgiver formularskabelonen og derefter opretter en formularskabelon, før du kan udføre en brugerhandling for at starte hændelsen.

  5. Før du udgiver formularskabelonen og giver brugerne mulighed for at udfylde formularer på grundlag af denne formularskabelon, skal du slette den kode, som du har brugt til at vise meddelelsesboksen med.

Toppen af siden

Tilføje et script, der kører, når en bruger gemmer formulardataene

  1. Klik på Formularindstillinger i menuen Funktioner.

  2. Klik på Åbn og Gem på listen Kategori i dialogboksen Formularindstillinger.

  3. Marker afkrydsningsfeltet Gem vha. brugerdefineret kode under Funktionsmåde ved lagring, og klik derefter på Rediger. Microsoft Script Editor starter med markøren ved hændelseshandleren 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. Benyt en af eller begge fremgangsmåder:

    • Tilføj et script, der kører, før InfoPath gemmer formularen, ved at erstatte kommentaren Write the code to be run before saving here. med din kode.

    • Tilføj et script, der kører, efter at InfoPath gemmer formularen, ved at erstatte kommentaren Write the code to be run after saving here. med din kode.

  5. Klik på Eksempel på værktøjslinjen Standard, eller tryk på Ctrl+Shift+B for at teste ændringerne.

    Bemærk: Hvis hændelseshandleren kun kører, efter at du opretter en formular, der er baseret på formularskabelonen, skal du udgive formularskabelonen ved at klikke på Udgiv i menuen Filer og derefter fuldføre guiden Udgivelse. Når du har udgivet formularskabelonen, skal du oprette en formular og derefter udføre en handling for at køre hændelseshandleren.

Toppen af siden

Tilføje et script, der kører, når en bruger sender formulardataene

  1. Klik på Indstillinger for afsendelse i menuen Funktioner.

  2. Markér afkrydsningsfeltet Tillad brugere at afsende denne formular i dialogboksen Indstillinger for afsendelse.

  3. Klik på Udfør en brugerdefineret handling vha. kode, og klik derefter på Rediger programkode. Microsoft Script Editor starter med markøren ved hændelseshandleren 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. Erstat kommentaren If the submit operation is successful, set eventObj.ReturnStatus = true Write your code here med din kode.

  5. Klik på Eksempel på værktøjslinjen Standard, eller tryk på Ctrl+Shift+B for at teste ændringerne.

Toppen af siden

Tilføje et script, der kører, når en bruger klikker på en knap

  1. Føj en ny knap til en visning i formularskabelonen, og dobbeltklik derefter på knappen.

    Bemærk: Hvis du føjer et script til en eksisterende knap, skal du dobbeltklikke på den eksisterende knap i stedet.

  2. Klik på fanen Generelt.

  3. Klik på Rediger formularkode. Microsoft Script Editor starter med markøren ved hændelseshandleren OnClick.

    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. Erstat kommentaren Write your code here med din kode.

  5. Klik på Eksempel på værktøjslinjen Standard, eller tryk på Ctrl+Shift+B for at teste ændringerne.

Toppen af siden

Tilføje et script, der kører, når eksisterende formularer flettes

  1. Klik på Formularindstillinger i menuen Funktioner.

  2. Klik på Avanceret på listen Kategori i dialogboksen Formularindstillinger.

  3. Marker afkrydsningsfeltet Aktiver fletning af formularer under Flet formularer.

  4. Marker afkrydsningsfeltet Flet ved hjælp af brugerdefineret kode, og klik derefter på Rediger. Microsoft Script Editor starter med markøren ved hændelseshandleren 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. Erstat kommentaren Write the code that handles each form being merged here. med din kode.

  6. Du kan afprøve koden i denne hændelse ved at udgive formularskabelonen, oprette flere formularer, der er baseret på denne formularskabelon, og derefter flette formularskabelonerne.

    Bemærk: Du kan finde hyperlinks til flere oplysninger om udgivelse af formularskabelonen i afsnittet Se også.

Toppen af siden

Tilføje et script for at opdatere de eksisterende formularer

Hvis du har opdateret en tidligere udgivet formularskabelon, og du vil opdatere de eksisterende formularer, der er baseret på den pågældende formularskabelon, kan du føje scripts til den opdaterede formularskabelon, der kører, når en bruger åbner en af de eksisterende formularer. Når en bruger åbner en eksisterende formular, kontrollerer InfoPath versionsnummeret for den tilknyttede formularskabelon ved udgivelsesstedet. Hvis versionsnummeret for formularskabelonen ved udgivelsesstedet er nyere end versionsnummeret i den eksisterende formular, hvilket angiver, at den er blevet opdateret, kører InfoPath koden i denne hændelse for at opdatere den eksisterende formular.

  1. Klik på Formularindstillinger i menuen Funktioner.

  2. Klik på Versioner på listen Kategori i dialogboksen Formularindstillinger.

  3. Klik på Benyt brugerdefineret hændelse på listen Ved opgradering, og klik derefter på Rediger. Microsoft Script Editor starter med markøren ved hændelseshandleren 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. Erstat kommentaren Write your code here med din kode.

  5. Du kan afprøve koden i denne hændelse, udgive formularskabelonen, oprette flere formularer, der er baseret på denne formularskabelon, redigere og udgive en opdateret version af formularskabelonen og derefter åbne en eksisterende formular, der er baseret på en ældre version af denne formularskabelon.

    Bemærk: Du kan finde hyperlinks til flere oplysninger om udgivelse af formularskabelonen i afsnittet Se også.

Toppen af siden

Tilføje et script for andre hændelser

Denne fremgangsmåde kan bruges til at føje følgende hændelseshandlere til formularskabelonen:

  • OnAfterChange

  • OnBeforeChange

  • OnContextChange

  • OnLoad

  • OnSwitchView

  • OnSign

  • OnValidate

  • Peg på Programmering i menuen Funktioner, og klik derefter på den hændelse, der skal føjes til hændelseshandleren. Microsoft Script Editor starter med markøren ved den valgte hændelseshandler.

  • Erstat kommentaren Write your code here med din kode.

Toppen af siden

Bemærk: Ansvarsfraskrivelse for maskinoversættelse: Denne artikel er blevet oversat af et computersystem uden menneskelig indgriben. Microsoft tilbyder disse maskinoversættelse for at hjælpe ikke-engelsktalende brugere til at kunne nyde indhold om Microsofts produkter, tjenester og teknologier. Da artiklen er maskinoversat, kan den indeholde forkerte ord eller syntaks- eller grammatikfejl.

Udvid dine færdigheder
Gå på opdagelse i kurser
Få nye funktioner først
Bliv Office Insider

Var disse oplysninger nyttige?

Tak for din feedback!

Tak for din feedback! Det lyder, som om det vil kunne hjælpe, hvis du bliver sat i forbindelse med en af vores Office-supportteknikere.

×