cylp
Messages postés14Date d'inscriptiondimanche 11 mai 2003StatutMembreDernière intervention30 avril 2012
-
24 sept. 2011 à 20:14
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024
-
28 sept. 2011 à 09:05
Bonjour,
Nos banques Exchange sont réparties en fonction des 3 premières lettres du nom de l'utilisateur, par exemple :
de D à DEL, serveur S1 - banque B1
de DEM à EZZ, serveur S2 - banque B2...
Dans le fichier Properties, j'ai ajouté les clés/valeurs correspondantes :
DàDEL/serveurS1-banqueB1
DEMàEZZ/serveurS2-banqueB2...
Pas de problème pour récupérer les 3 premiers caractères de la saisie du nom,
puis je splitte les clés sur le "à" pour obtenir une éventuelle plage. Ex : pour la clé "DàDEL", "D " (avec des espaces pour les noms à particule) pour le début et "DEL" pour la fin, mais je n'ai pas d'idée pour savoir dans quelle plage se situe la saisie.
cylp
Messages postés14Date d'inscriptiondimanche 11 mai 2003StatutMembreDernière intervention30 avril 2012 27 sept. 2011 à 10:11
Ok, d'abord bonjour et merci de t'intéresser à mon pb.
C'est vrai que c'est un peu confus.
Bon, j'écris un petit soft pour créer des comptes utilisateurs dans AD avec dans la foulée leur boîte aux lettre Exchange. C'est du classique sauf que les boîtes peuvent être créées sur 2 serveurs différents avec chacun plusieurs banques. Afin de répartir le nombre d'utilisateurs sur les différents serveurs et banques, le choix s'effectue en fonction du nom de l'utilisateur : tous les noms commençant par la lettre "A" auront une BAL sur le serveur XXXXXXXXX33 dans la banque SG1/S2, pour la lettre "B", ce sera serveur XXXXXXXXX33, banque SG2/S2...
Pour les noms en "D", plus nombreux, on scinde en 2 : de "D" à "DEL" sur tel serveur et telle banque et de "DEM" à "E" : autre serveur et autre banque. Ceci constitue donc des plages d'attribution de serveurs et de banques en fonction du nom (récupéré dans le textbox de saisie). Ces plages peuvent évoluer, c'est pourquoi j'utilise le fichier app.config (xml : tranquille). Ex pour un nom en "A" :
<setting name="AàAZZ" serializeAs="String">
<value>XXXXXXXXXXX33-SG1-S1</value>
</setting>
name="AàAZZ" me déterminer une plage de "A" à "AZZ" (en splittant sur le caractère "à") et <value>XXXXXXXXXXX33-SG1-S1 me donne le serveur et la banque.
Maintenant je ne vois pas comment tester si la valeur du textbox est dans cette plage.
Maintenant, c'est cette méthode qui m'est venue à l'idée, car je ne veux pas faire de "if", "elseif" .. ou de "case" dans le code mais s'il y a autre chose, je suis preneur.
BunoCS
Messages postés15472Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention25 mars 2024103 27 sept. 2011 à 10:26
Ah ok, c'est une simple comparaison de chaine alors.
Le retour de la fonction String.Compare te dit si une chaine1 est "inférieure" ou "supérieure" à une chaine2. Il te suffit de spécifier, en 3e paramètre StringComparer.OrdinalIgnoreCase pour avoir un ordonnancement suivant l'ordre alphabétique, indépendamment de la case.
Après, tu ne vas pas pouvoir échapper à un enchainement de if, j'en ai bien peur...
@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cylp
Messages postés14Date d'inscriptiondimanche 11 mai 2003StatutMembreDernière intervention30 avril 2012 27 sept. 2011 à 19:54
Bonsoir Buno.
Cool, ça marche. C'est exactement ce qu'il me fallait. Tu m'as évité de m'embarquer dans des trucs tarabiscotés. Si ça peut aider, voici le petit bout de code où sender est MaskedTextBox de la saisie du nom + un extrait da app.config :