Question Choix base de données

Plus d'informations
il y a 4 ans 9 mois #20754 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Choix base de données
Une première solution à utiliser avec un série de tests (sélecteur).
On construit à l'aide d'une suite de déclarations, des tableaux afin de rechercher une lettre :
[code:1]#Bornes
[int]$A_letter=65
[int]$L_letter=76
[int]$M_letter=77
[int]$N_letter=78
[int]$P_letter=80
[int]$Z_letter=90

#Tableaux bornés par pays (1,n)
#Chacun est construit à l'aide d'une étendue 0..10 , 10..26
#
# Force le type [byte] en [char] puis en [string]
# en PS la clé de type string est 'nécessaire' pour la hashtable

#Canada
#CAN01 (Utilisateurs de A a M) (n,1)
[string[]] $CAN01= [char[]][byte[]]($A_letter..$M_letter)

#CAN02 (Utilisateurs de N a Z)
[string[]] $CAN02= [char[]][byte[]]($N_letter..$Z_letter)

#Europe
#EURO1 (Utilisateurs de A a L)
[string[]] $EURO1= [char[]][byte[]]($A_letter..$L_letter)

#EURO2 (Utilisateurs de M a Z)
[string[]] $EURO2= [char[]][byte[]]($M_letter..$Z_letter)
[/code:1]
Ici c'est sur des nom pays, mais tu peux changer.
Première approche : un test d'appartenance
[code:1]
$OU ='Canada'
$Name='ARMATI' #$user

#$name[0] -in $CAN01 ---> ps v3 et >
$CAN01 -contains $name[0]
$CAN02 -contains $name[0]
[/code:1]
Une seconde approche qui permet de faciliter l'écriture de la sélection au prix d'une génération d'une hashtable imbriqué et d'un peu de code. On réutilise les tableaux précédents.
l'objectif est de trouver la base en codant simplement :
[code:1]
[string]$Country=$OU
[string]$Letter=$Name[0]
$Bals.$Country.$Letter
#renvoi le nom de la bal
[/code:1]
Le noms de variable sont surement à revoir, mais le principe est là :
[code:1]
#Noms des variables des tableaux bornés par pays
#le nom de pays est extrait du nom de l'OU
$NomsBalParPays=@{}
$NomsBalParPays.Canada=@('CAN01','CAN02')
$NomsBalParPays.Europe=@('EURO1','EURO2')


#Construit une hashtable ordonnée (on facilite la relecture)
$Bals=[ordered]@{}
Foreach ($Pays in $NomsBalParPays.GetEnumerator()){
$PaysName=$Pays.Name
Write-Debug \"Crée la clé '$PaysName'\"
$Bals.$PaysName=[ordered]@{}

Foreach ($BalPartitionnée in $Pays.Value){
Write-Debug \"`tCrée les clés (les lettres) associées à la bal '$BalPartitionnée'\"

#Manipule un objet variable
Foreach ($Lettre in (Gv $BalPartitionnée).Value){
Write-Debug \"`t`t $Lettre=$BalPartitionnée\"
$Bals.$PaysName.Add($Lettre,$BalPartitionnée)
}#Lettres par bal
}#$Pays
}#$NomsBalParPays

# Régle :
# première lettre du nom ET de l'OU
[string]$Country=$OU
[string]$Letter=$Name[0]

#Pour pointer la bal selon la régle
\"`$Bals.'$Country'.'$Letter'\"

$Exist=$Bals.Contains($Country) -and $Bals.$Country.Contains($Letter)
if ($Exist)
{ $Bals.$Country.$Letter }
else
{Write-Error \"La ou les clés suivante n'existe pas :`'$Country'.'$Letter'\"}
[/code:1]
Evidement l'ajout d'un nom de clé dupliqué sur le premier niveau n'est pas possible, ex : Candia et Candy

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 4 ans 9 mois #20840 par SpunkZ
Réponse de SpunkZ sur le sujet Re:Choix base de données
Salut,
J'ai utilisé la première methode, pour le moment je l'ai utilisé avec des write-host et ça fonctionne

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.146 secondes
Propulsé par Kunena