SharePoint

Uniek ID aan een SharePoint lijstitem / InfoPath formulier

21 mei 2012

Wanneer er veel gebruik wordt gemaakt van lijstitems en InfoPath formulieren zal er regelmatig de vraag komen om een uniek ID te generen aan een Item. Nu kan er gebruik worden gemaakt van het unieke ID die automatisch wordt gegenereerd door SharePoint maar er is ook een eenvoudige ‘geen code schrijvende’ oplossing in InfoPath.

Met het ontwerpen van een InfoPath formulier, is het mogelijk om een dataverbinding te maken om data te verkrijgen van, of te versturen naar een SharePointlijst of bibliotheek. Om deze dataverbinding te maken in InfoPath:

Stap 1: Gegevensverbinding beheren… (rechts onderin InfoPath2010)
Stap 2: Kies voor Toevoegen
Stap 3: Kies als gegevensverbinding Gegevens ontvangen met als bron SharePoint-bibliotheek of –lijst en de URL locatie van de SharePoint-bibliotheek of –lijst in de SharePoint Online omgeving.

Stap 4: Selecteer hier de desbetreffende lijst of bibliotheek die gebruikt voor het verhogen van het unieke ID:

Stap 5: Selecteer ID

Stap 6: Nu de verbinding is gelegd, moet er een tekstveld worden toegevoegd in het formulier.
Stap 7: Klik met de rechtermuisknop op het tekstveld en kies voor eigenschappen van tekstvak.
Stap 8: Klik op het “fx” symbool voor het invoeren van de formule voor het ophogen van het unieke ID.
Stap 9: Klik op ‘Functie invoegen’ en kies voor Max.
Stap 10: Klik op ‘veld of groep invoegen…’,‘Geavanceerde weergave’ en browse naar de toegevoegde secundaire gegevensverbinding.

Stap 11: Kies voor ‘ID’ onder ‘Datafields – d:SharePointListItem_RW’.


Stap 12: Wanneer de formule is toegevoegd, is de laatste stap er +1 aan toe te voegen
het bestaande ID op te hogen met 1.

Het eindresultaat is dat bij het aanmaken van een item automatisch een uniek ID wordt gegeneerd en bij het volgende item het ID opgevolgd wordt met 1 cijfer hoger.

You Might Also Like

3 reacties

  • avatar
    Reply Jasper Siegmund 21 mei 2012 at 07:16

    Is deze methode waterdicht in ’t geval van concurrency? Stel gebruiker A opent het formulier en het autonummer staat op dat moment op 22. De gebruiker krijgt dus nummer 23 te zien in het formulier. Vervolgens opent gebruiker B ook het formulier, nog voordat gebruiker A heeft opgeslagen. Mijns inziens krijgt deze dan ook 23 te zien, aangezien er nog geen nieuw lijstitem bij is gekomen. En dus zien beide gebruikers 23 staan, terwijl er een van de twee (de laatste die opslaat) als 24 wordt opgeslagen. Dat is nu juist het probleem met autonummering en de reden waarom SharePoint / InfoPath dit soort functionaliteit niet ootb aanbieden.

  • avatar
    Reply Jasper Oosterveld 31 mei 2012 at 19:39

    Hoi Jasper,

    Ik gebruik vaak een andere oplossing. Ik maal een datum/tijd veld en plaats deze niet op het formulier. Dit veld is altijd uniek vanwege het tijdsaspect. Je kunt deze dan meenemen in de generatie van je bestandsnaam.

    Groetjes,

    Jasper

  • avatar
    Reply Fred Wolterink 27 juni 2014 at 16:36

    Goed artikel.

    Ik heb een ander probleem die ik niet goed kan ontleden.

    Ik maak een InfoPath form en zodra ik een databinding wil maken vraagt hij om Inlog gevens. Enigszins logisch voor de contante verbinding. Echter lukt het niet om de login te accepteren. Terwijl ik inlog met de Farm admin account.
    Enige tips hierover?

    En waar kan ik een goede advance handleiding downloaden voor InfoPath?
    Ik wil een enkele rij met data zien als ik ergens in de form een dropdown keuze maak uit de zelfde db.

  • Plaats een reactie