IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

InfoPath .NET Discussion :

Incrémentation id une fois seulement après création mais pas après approbation [IP-2010]


Sujet :

InfoPath .NET

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Incrémentation id une fois seulement après création mais pas après approbation
    Bonjour à tous,
    Je souhaiterai incrémenter un champ qui me servira de numéro de référence à l'aide d'infopath 2010 sur une bibliothèque Sharepoint 2010. Ce champ devra être incrémenter une fois lors de la création, ensuite ce champ ne doit pas être modifié lors de l'approbation d'autres approbateurs.

    Par conséquent, j'ai suivi ce tuto très bien expliqué http://aityahia.developpez.com/tutor...champ-autoinc/
    Mais le problème, c'est qu'a chaque envoi, le numéro est généré de nouveau. J'ai aussi un bouton enregistrer qui permet de garder le même numéro. Le hic, c est que les approbateurs se trompe parfois en cliquant sur envoyer au lieu d'enregistrer après création.
    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 à récupérer 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 création à l'aide d'une autre liste qui incrémente automatiquement
    Pb: C est qu il ne met pas à jour le compteur dans le formulaire créer

    Peut être que j'ai mal effectué ces tests. Donc je souhaiterai bien avoir plus d'explication si ces méthodes ou tout autre proposition. Merçi d'avance pour votre aide.

  2. #2
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    1) je connais pas info path 2010

    2) l'event handler sur ItemAdd est une idée peut marcher. Tu n'y arrives pas mais c'est juste que tu connais mal le model objet sharepoint, cela se fait trés bien sinon
    Cela dépend ou tu stock ton fichier XML, mais tu dois connaitre son URL, ensuite via l'objet SPWeb tu peux utilisé une des fonction pour récupérer un fichier, avec ton fichier récupéré tu pourra faire ce que tu veux.

    3) Je connais peu les workflow mais c'est surement l'idée la plus simple
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  3. #3
    Membre éprouvé
    Homme Profil pro
    Référent technique
    Inscrit en
    Juillet 2007
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Référent technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 834
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Je penses que ceci peut-être réalisé sans utiliser de code.
    Il faut créer une connexion de données d'envoi. Lors de la création de cette connexion, il faut préciser 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 même nom.

    Cordialement.
    Rémi MATAYRON
    N'hésitez pas à visiter mon blog dédié à InfoPath et SharePoint : http://rmatayron.blogspot.com/

    Pour plus de visibilité sur le forum, marquer la question en [Résolu] lorsque la réponse fournie vous convient.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Merci de ta réponse mais quand tu me dis de créer 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 concaténer un champ donc numéro avec un préfixe.
    Le problème, c est que ce numéro doit s'incrémenter que lors de la création du formulaire et plus(3 signature doivent etre ajouté)ensuite .
    J avais fait une règle dans laquelle il allait vérifier le dernier id lors de l'envoi. Ca fonctionne bien mais faut utiliser deux boutons (un pour générer ce numéro et le deuxième pour enregistrer). Je voudrai en mettre qu un seul. Avec la méthode ci-dessus, à chaque envoi ,il regénère un numéro.

    Si ce n est pas a ce que tu pensais, peut tu mieux me détailler la méthode Cordialement.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour lapinpanda,
    J arrive bien à travers SPweb à ajouter une colonne qui s'incrémente mais je dois ensuite utiliser cette valeur pour l'enregistrer à l'intérieur du formulaire créer dans un champ.
    Je récupére 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.
    Merçi d'avance

  6. #6
    Membre éprouvé
    Homme Profil pro
    Référent technique
    Inscrit en
    Juillet 2007
    Messages
    834
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Référent technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 834
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Je penses avoir saisi votre problème.
    Pour faire ce que vous souhaitez réaliser, 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-incrémente selon les valeurs,
    • 1 variable que nous appelerons "varNomFichier". Cette variable sera mapée pour le nom du fichier dans la connexion de données d'envoi.

    Ensuite la technique est simple:
    Créer une règle sur le champ "varReference" (dès que la valeur est modifiée, vous rentrerez dans la règle).
    Conditon de la règle : "varNomFichier est vide",
    Affecter la valeur d'un champ : "varNomFichier = varReference"

    Ainsi une fois que "varNomFichier" est affecté, le restera toujours le même.
    N'oubliez pas de placer ce champ en tant que nom du fichier dans la connexion de données d'envoi.

    J'espère avoir été assez clair dans mes explications.

    PS : Le tuto que vous avez cité est très bien mais je suis perplexe au niveau des performances de cette technique sur une liste comportant de très nombreux éléments.
    Personnellement j'aurai tendance à efffectuer du code personnalisé en travaillant sur le modole sharepoint et en utilisant une liste de chrono incrémentée 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.
    Rémi MATAYRON
    N'hésitez pas à visiter mon blog dédié à InfoPath et SharePoint : http://rmatayron.blogspot.com/

    Pour plus de visibilité sur le forum, marquer la question en [Résolu] lorsque la réponse fournie vous convient.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci de ta réponse billout rm.
    Je pense que ta méthode est bonne mais je n'ai pas pu la tester car les spécifications demandées ont été changé entre temps.
    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/11/2008, 10h41
  2. lecture socket avec read une fois seulement
    Par andromeda dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 25/07/2007, 08h57
  3. Réponses: 1
    Dernier message: 10/08/2006, 15h11
  4. Réponses: 1
    Dernier message: 13/04/2006, 12h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo