# Dotnet > Gnral Dotnet > Dveloppement Office System > InfoPath > [IP-2010] Incrmentation id une fois seulement aprs cration mais pas aprs approbation

## alSharepoint

Bonjour  tous,
Je souhaiterai incrmenter un champ qui me servira de numro de rfrence  l'aide d'infopath 2010 sur une bibliothque Sharepoint 2010. Ce champ devra tre incrmenter une fois lors de la cration, ensuite ce champ ne doit pas tre modifi lors de l'approbation d'autres approbateurs. 

Par consquent, j'ai suivi ce tuto trs bien expliqu http://aityahia.developpez.com/tutor...champ-autoinc/
Mais le problme, c'est qu'a chaque envoi, le numro est gnr de nouveau. J'ai aussi un bouton enregistrer qui permet de garder le mme numro. Le hic, c est que les approbateurs se trompe parfois en cliquant sur envoyer au lieu d'enregistrer aprs cration.
Donc, je dois trouver un moyen pour qu'il n'y est qu un seul bouton(Enregistrer ou Envoyer).

Les tests que j'ai fait sont 
1) mettre du code sur submit dans infopath 2010 
Pb : Il ne veut pas setter la valeur du compteur pour l'envoi mais seulement pour le chargement

2)Mettre un evenement itemadded dans sharepoint  l'aide de visual studio
Pb : J'arrive  rcuprer le xml  mais il n'ya pas de set pour modifier la valeur. J'ai aussi essay de faire un streamreader pour lire le xml mais il me faut un chemin physique alors que le xml du formulaire se trouve sur le serveur.

3)Faire un workflow de cration  l'aide d'une autre liste qui incrmente automatiquement
Pb: C est qu il ne met pas  jour le compteur dans le formulaire crer 

Peut tre que j'ai mal effectu ces tests. Donc je souhaiterai bien avoir plus d'explication si ces mthodes ou tout autre proposition. Meri d'avance pour votre aide.

----------


## Lapinpanda

1) je connais pas info path 2010

2) l'event handler sur ItemAdd est une ide peut marcher. Tu n'y arrives pas mais c'est juste que tu connais mal le model objet sharepoint, cela se fait trs bien sinon  :;): 
Cela dpend ou tu stock ton fichier XML, mais tu dois connaitre son URL, ensuite via l'objet SPWeb tu peux utilis une des fonction pour rcuprer un fichier, avec ton fichier rcupr tu pourra faire ce que tu veux.

3) Je connais peu les workflow mais c'est surement l'ide la plus simple

----------


## billout rm

Bonjour,

Je penses que ceci peut-tre ralis sans utiliser de code.
Il faut crer une connexion de donnes d'envoi. Lors de la cration de cette connexion, il faut prciser le nom du fichier. Une astuce est ici d'utiliser un champ du formulaire en tant que non de fichier.

Ainsi il suffit d'affecter la varaible lors du premier envoi. Ainsi le formulaire sera enregistr tout le temps sous le mme nom.

Cordialement.

----------


## alSharepoint

Bonjour,
Merci de ta rponse mais quand tu me dis de crer une connexion d'envoi, c est ce que j'avais fait dans le tuto http://aityahia.developpez.com/tutor...champ-autoinc/
. C est  dire de concatner un champ donc numro avec un prfixe.
Le problme, c est que ce numro doit s'incrmenter que lors de la cration du formulaire et plus(3 signature doivent etre ajout)ensuite .
J avais fait une rgle dans laquelle il allait vrifier le dernier id lors de l'envoi. Ca fonctionne bien mais faut utiliser deux boutons (un pour gnrer ce numro et le deuxime pour enregistrer). Je voudrai en mettre qu un seul. Avec la mthode ci-dessus,  chaque envoi ,il regnre un numro.

Si ce n est pas a ce que tu pensais, peut tu mieux me dtailler la mthode Cordialement.

----------


## alSharepoint

Bonjour lapinpanda,
J arrive bien  travers SPweb  ajouter une colonne qui s'incrmente mais je dois ensuite utiliser cette valeur pour l'enregistrer  l'intrieur du formulaire crer dans un champ.
Je rcupre bien le xml (le fichier se trouve sur le serveur) mais je n 'arrive pas  setter la valeur.
Peut tu me montrer un exemple de code, si tu as, dans itemadded pour pouvoir setter cette valeur dans le xml.
Meri d'avance  :;):

----------


## billout rm

Bonjour,

Je penses avoir saisi votre problme.
Pour faire ce que vous souhaitez raliser, il vous faut utiliser 2 variables.
1 variable que nous appelerons "varReference". Celle-ci correspondra au champ que vous disposez actuellement et qui s'auto-incrmente selon les valeurs,1 variable que nous appelerons "varNomFichier". Cette variable sera mape pour le nom du fichier dans la connexion de donnes d'envoi.
Ensuite la technique est simple:
Crer une rgle sur le champ "varReference" (ds que la valeur est modifie, vous rentrerez dans la rgle).
Conditon de la rgle : "varNomFichier est vide",
Affecter la valeur d'un champ : "varNomFichier = varReference"

Ainsi une fois que "varNomFichier" est affect, le restera toujours le mme.
N'oubliez pas de placer ce champ en tant que nom du fichier dans la connexion de donnes d'envoi.

J'espre avoir t assez clair dans mes explications.

PS : Le tuto que vous avez cit est trs bien mais je suis perplexe au niveau des performances de cette technique sur une liste comportant de trs nombreux lments. 
Personnellement j'aurai tendance  efffectuer du code personnalis en travaillant sur le modole sharepoint et en utilisant une liste de chrono incrmente au fur et  mesure.
Voir plus simple en soumettant le formulaire en lui donnant un nom unique en incoporant la date et l'heure (jusqu' la milliseconde pour viter les doublons).

Cordialement.

----------


## alSharepoint

Merci de ta rponse billout rm.
Je pense que ta mthode est bonne mais je n'ai pas pu la tester car les spcifications demandes ont t chang entre temps.
Cordialement

----------

