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

VB.NET Discussion :

Cette fonction ne tourne pas rond je pence !


Sujet :

VB.NET

  1. #1
    Membre régulier Avatar de Dr_shaman
    Homme Profil pro
    Ingénieur Concepteur Développeur
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Concepteur Développeur

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Points : 81
    Points
    81
    Par défaut Cette fonction ne tourne pas rond je pence !
    Bonjour je travail sur un bout de code qui doit convertirent un nom de la forme
    DOMAINE\nom ver : Nom, prénom. Depuis Active directory. Mais sa ne marche qu'une foi sur 2! la valeur que j'ai entouré en rouge, je ne comprend pas a quoi elle serre puisque dr["acheteur"] c'est toujours la même valeur pour moi?
    Enfin, ci vous avez une petite idée. Merci d'avance.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    private void remplaceNom()
    		{					
    			DataTable dt = ((DataSet)Session["dsRetours"]).Tables[0];
    			//tri par nom d'acheteur pour ne pas  
    			//faire un appel à Active Directory à toutes les lignes
    			dt.DefaultView.Sort = "acheteur ASC";
    
    			string acheteurBDD = string.Empty;
    			string fullName = string.Empty;
    			DataRow dr;
    			for (int i = 0; i < dt.DefaultView.Count; i++)
    			{
    				dr = dt.DefaultView[i].Row;
    
    				//première ligne ou changement du nom d'acheteur
    				if (!((string)dr["acheteur"]).Equals(acheteurBDD))
    				{					
    					acheteurBDD = (string)dr["acheteur"];
    					
    					if (acheteurBDD.IndexOf("\\") > -1)
    						fullName = acheteurBDD.Substring(acheteurBDD.IndexOf("\\")+1);
    
    					//récupration du nom complet depuis AD
    					fullName = Util.getUserNameFromAD(fullName, "domaine.com");
    					//si l'acheteur n'est pas trouvé dans AD
    					if (fullName.Equals(string.Empty))
    						fullName = acheteurBDD;
    				}
    
    dr["acheteur"] = fullName;				
    			}
    			
    			dt.DefaultView.Sort = "numdemande ASC";
    			//validation des changements
    			dt.AcceptChanges();
    		}

  2. #2
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    D'après ce que je comprends,

    dans fullname tu places la valeur nom prenom de l'achteur à partir de l'active directory.

    Puis pour la ligne en rouge tu affectes ce nom à la dataRow.

    Je pense que le code est OK, qu'entends-tu par cela ne marche qu'une fois sur deux ?

  3. #3
    Membre régulier Avatar de Dr_shaman
    Homme Profil pro
    Ingénieur Concepteur Développeur
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Concepteur Développeur

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Points : 81
    Points
    81
    Par défaut c'est possible que sa ne viènne pas de cette fonction
    Bonjour et merci de cette réponse aussi rapide.
    Je pense aussi que cette fonction marche correctement. Mais je dois corriger un programme qui affiche dans un tableau en ASP.net (C# je viens de me rendre compte que je ne suis pas sur le bon forum) le tableau affiche toutes les lignes de la base de donné, avec les noms des utilisateurs convertit à l’aide d’active directory. Seulement une ligne sur 2 le nom est Galoseau Mathieu comme dans AD (donc la tout va bien) et la ligne d’apprêt j’ai : DOMAINE\magaloseau donc la il ne c’est rien passé, mais le plus compliqué c’est que pour certain nom sa marche tout le temps, pour d’autre sur 20 lignes il n’y en a qu'une qui n’a pas marché, et je voie vraiment pas d’où sa peu venir.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Oui, d'accord je comprends

    En fait fullname est peuplé la première fois puis tu ne le réinitialises pas !

    if (fullName.Equals(string.Empty))
    fullName = acheteurBDD;
    Donc si le nom de l'acheteur change pense a réinitialiser fullname à vide avant d'interroger AD.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // On vide fullName
    fullName = string.Empty;
    //récupration du nom complet depuis AD
    fullName = Util.getUserNameFromAD(fullName, "domaine.com");
    Sinon j'ai pas d'autres idées...

  5. #5
    Membre régulier Avatar de Dr_shaman
    Homme Profil pro
    Ingénieur Concepteur Développeur
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Concepteur Développeur

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Points : 81
    Points
    81
    Par défaut ce n’est pas une mauvaise chose d’initialiser fullname
    En effet ce n’est pas une mauvaise chose d’initialiser fullname, cela dit le problème ne vient pas de la, puisque :

    if (acheteurBDD.IndexOf("\\") > -1)

    Est sensé être toujours vrai puisque tout les noms de ma base de données son de la forme DOMAINE\nom. Cela dit il est vrai que si je ne réinitialise pas mon fullname a chaque foi, la fonction :

    if (fullName.Equals(string.Empty))
    fullName = acheteurBDD;

    Ne serre à rien.

  6. #6
    Membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 40
    Points
    40
    Par défaut
    Je sais pas, peut-etre un problème de cache ?

  7. #7
    Membre régulier Avatar de Dr_shaman
    Homme Profil pro
    Ingénieur Concepteur Développeur
    Inscrit en
    Février 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Concepteur Développeur

    Informations forums :
    Inscription : Février 2007
    Messages : 120
    Points : 81
    Points
    81
    Par défaut Merci
    Merci. je vais chercher dans une autre direction.

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

Discussions similaires

  1. Pourquoi cette fonction ne fonctionne pas correctement
    Par cabiste007 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 09/04/2015, 21h08
  2. Fonction, je tourne en rond sur la sortie . . .
    Par SQLpro dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 13/12/2008, 13h34
  3. pourquoi cette fonction ne marche pas?
    Par kazannova dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2008, 01h59
  4. Paramètres GET & fonction qui tourne en rond
    Par bigltnt dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2007, 11h06
  5. qu'est ce qui va pas dans cette fonction???
    Par access001 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/04/2006, 13h10

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