Précédent   Forum du club des développeurs et IT Pro > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 26/12/2012, 18h00   #1
popofpopof
Débutant
 
Inscription : avril 2007
Messages : 646
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 646
Points : 144
Points : 144
Par défaut Decompose champ en plusieurs champs

bonjour,

j'ai des donnée sous 3 format possible
exemple : 3.100.5 ou 3,100,5 ou 3:100:5 en gros avec un point ou une virgule ou deux point je peux choisir lequel je garde des trois

3 = galaxy
100 = secteur
5 = sous secteur

voila ma requete :
Code :
1
2
SELECT regroup_planete_ok.NOM_JOUEUR, regroup_planete_ok.P1
FROM regroup_planete_ok;
je souhaiterai avoir un résultat sous ce format la
nom_joueur ; galaxy ; secteur ; sous secteur

comment faire pour avec un seul champ faire donc 3champ dans une requete?
merci pour vos réponses
popofpopof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2012, 20h01   #2
Philippe JOCHMANS
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 18 461
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 45
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 18 461
Points : 40 663
Points : 40 663
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Une discussion à voir : http://www.developpez.net/forums/d12...hamp-3-champs/

Avec une fonction utilisant la fonction Split, c'est possible.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Vous pouvez consulter mes articles sur Access et PowerPoint

Si vous avez des c'est peut-être moi, car vous postez un fichier en pièce jointe sans explications.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/12/2012, 20h19   #3
madefemere
Membre éprouvé
 
Homme Mandresy
Inscription : mai 2012
Messages : 278
Détails du profil
Informations personnelles :
Nom : Homme Mandresy
Localisation : Madagascar

Informations forums :
Inscription : mai 2012
Messages : 278
Points : 456
Points : 456
Bonsoir,

En supposant que le nombre de caracteres que tu veux extraire soit fixe pour chaque champ resultat, je te proposerai d'utiliser les fonctions de concatenation de texte LEFT, RIGHT, MID dans tes champs resultats.
Pour le 1er par exemple: left (champ1;1).
Apres tu as : MID (champ1;3;3)
Pour le troisieme : RIGHT(champ1;1)

Bonne continuation
__________________
Mandresy

"Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.
madefemere est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/12/2012, 21h58   #4
popofpopof
Débutant
 
Inscription : avril 2007
Messages : 646
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 646
Points : 144
Points : 144
merci pour vos réponse j'ai plus bien avance sur mon travail

par contre j'ai un probléme dans mon formulaire "consultation" quand je clique sur "secteur" j'ai un probleme
deplus je viens de voir que je peux avoir deux type différent avec 1 2 ou 3 chiffre apres le point
exemple : 3.1.2 ou 3.12.3 ou .3.123.3

du coup j'ai dans le resultat ce resulat qui apparait 1.2 ou 12. comment faire pour enleve .2 et le point au 12??

merci encore
Fichiers attachés
Type de fichier : zip gaia.zip (33,4 Ko, 4 affichages)
popofpopof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 03h54   #5
Philippe JOCHMANS
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 18 461
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 45
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 18 461
Points : 40 663
Points : 40 663
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Pourquoi ne pas tester ma méthode ? Les points disparaîtront.

Il suffit de remplacer - par un . dans la fonction.


Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Vous pouvez consulter mes articles sur Access et PowerPoint

Si vous avez des c'est peut-être moi, car vous postez un fichier en pièce jointe sans explications.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 08h41   #6
popofpopof
Débutant
 
Inscription : avril 2007
Messages : 646
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 646
Points : 144
Points : 144
j'ai essayé cette fonction
Code :
1
2
3
4
5
6
7
8
9
10
Public Function Eclatage(strDonnees As String, bytPos As Byte)
    ' déclaration
    Dim Eclat() As String
 
    ' éclatage
    Eclat = Split(strDonnees, ".")
 
    ' récupération en fonction de la position
    Eclatage = Eclat(bytPos)
End Function
avec cette ligne dans ma requete :
mais quand je lance ma requete j'ai le code suivant
erreur d'excution 9 l'indice n'appartient pas à la sélection et me souligne en jaune cette ligne Eclatage = Eclat(bytPos)

je ne comprend pas pk?
de plus peux t'on prendre en compte les . ou les , ou : dans la meme fonction?
merci
popofpopof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h12   #7
Philippe JOCHMANS
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 18 461
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 45
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 18 461
Points : 40 663
Points : 40 663
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Tu devrais lire toute la discussion, il y a des informations pour gérer des erreurs éventuelles.

Pour le . ou autre, c'est possible en faisant des tests, sur ce séparateur, il faudra que je regarde si je peux ce soir.

De toute façon comme tes longueurs et tes séparateurs sont variables, il va falloir passer par une fonction, les Right, etc.. ne serviront à rien.

Un dernier détail, est-ce que ce n'est que des chiffres ou il peut y avoir des lettres ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Vous pouvez consulter mes articles sur Access et PowerPoint

Si vous avez des c'est peut-être moi, car vous postez un fichier en pièce jointe sans explications.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2012, 12h47   #8
popofpopof
Débutant
 
Inscription : avril 2007
Messages : 646
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 646
Points : 144
Points : 144
Alors il n'y pas pas de lettre dans ce champ que des chiffre et , ou . ou : rien d'autre

j'ai pu avance ci-joint ma derniere version

par contre j'ai un autre probléme dans mon formulaire "consultation" quand je clique sur "secteur" j'ai un probleme erreur d'excecution 3464 type de données incompatible dans l'expression du critère

je souhaite avoir la possibilité de faire un filtre pour les secteur de 50 a 100 par exemple
Je pense avoir un problème de type de donnée mais je ne sais comment me sortir de ce problème la
Fichiers attachés
Type de fichier : zip gaia.zip (262,6 Ko, 4 affichages)
popofpopof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 21h03   #9
LedZeppII
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 4 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 4 176
Points : 7 098
Points : 7 098
Salut Popofpopof,

Est-ce que tu n'aurais pas intérêt à modéliser un peu mieux ?
La table 'Donnée' fait penser à un tableau Excel.
Je suppose que P1,P2,... c'est Planète 1, Planète 2, ...
Moi, je ferai au minimum une table 'donnée' avec ces champs :
(a) NOM_JOUEUR, ATTACABLE, Classement, Alliance, Planete
ou
(b) NOM_JOUEUR, ATTACABLE, Classement, Alliance, Planete, galaxy, secteur, sous secteur
C'est à dire un enregistrement par Joueur/Planète, avec dans l'option (b) la possibilité d'alimenter des champs galaxy, secteur, sous secteur, à partir du champ Planete.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2012, 21h31   #10
popofpopof
Débutant
 
Inscription : avril 2007
Messages : 646
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 646
Points : 144
Points : 144
salut

ma table donnée est comme sa que je fait une importation régulière des donnes a partir d'un fichier excel sur gdoc que je partage avec plusieurs membre.

Mon but a juste de ne plus travaillé sur le fichie excel mais d'avoir une mini base de donnée pour me facilité les recherche

tu peux m'aide sur mon probléme avec l erreur que j'ai sur le secteur?
popofpopof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 08h23   #11
Philippe JOCHMANS
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 18 461
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 45
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 18 461
Points : 40 663
Points : 40 663
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Voici une nouvelle version de la fonction entièrement commentée :

Code :
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
Public Function Eclatage(strDonnees As String, bytPos As Byte) As String
    ' déclaration
    Dim Eclat() As String
    Dim strSep As String        ' récupération du séparateur
    Dim i As Integer
 
    ' on détecte d'abord le séparateur
    For i = 1 To Len(strDonnees)                    ' on parcourt les chiffres un à un dans une boucle
        If IsNumeric(Mid(strDonnees, i, 1)) Then    ' on test s'il s'agit d'un numérique
        Else
            strSep = Mid(strDonnees, i, 1)          ' on stocke le séparateur
            Exit For                                ' on sort de la boucle
        End If
    Next i
 
    ' éclatage de la chaine en fonction du séparateur trouvé
    Eclat = Split(strDonnees, strSep)
 
    ' on test bytpos s'il correspond à la plus grande valeur de la table pour éviter les erreurs de limites
    ' rappel que bytpos commence à 0
    If bytPos <= UBound(Eclat()) Then
        Eclatage = Eclat(bytPos)
    Else
        Eclatage = ""
    End If
End Function
Elle détecte le séparateur (il faut que celui-ci soit toujours le même dans la chaîne) et devrait gérer les erreurs de limites.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Vous pouvez consulter mes articles sur Access et PowerPoint

Si vous avez des c'est peut-être moi, car vous postez un fichier en pièce jointe sans explications.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2012, 09h24   #12
popofpopof
Débutant
 
Inscription : avril 2007
Messages : 646
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 646
Points : 144
Points : 144
MERCI ton code est royal

il me reste encore un bug dans le formulaire "consultation" quand je clique sur secteur j'ai un erreur je ne n'arrive pas a trouve de solution. de plus dans je fait dans ce meme formulaire un trie par "secteur" par ordre croissant cela ne marche pas!
popofpopof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 11h50   #13
LedZeppII
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 4 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 4 176
Points : 7 098
Points : 7 098
Bonjour,

Citation:
Envoyé par popofpopof Voir le message
il me reste encore un bug dans le formulaire "consultation" quand je clique sur secteur j'ai un erreur je ne n'arrive pas a trouve de solution. de plus dans je fait dans ce meme formulaire un trie par "secteur" par ordre croissant cela ne marche pas!
J'ai passé du temps sur ce problème d'incompatibilité de type de données, et je n'en trouve pas la cause exacte.
C'est pour ça que je conseille de ne pas garder le modèle de la feuille excel.
Au mieux je contourne le problème en réduisant le nombre de requêtes imbriquées.
Par exemple pour la requête union regroup_planete
Code sql :
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
SELECT NOM_JOUEUR, Alliance, P1, ATTACABLE
FROM donnée  WHERE (([P1]) IS NOT NULL)
union
SELECT NOM_JOUEUR, Alliance, P2, ATTACABLE
FROM donnée WHERE (([P2]) IS NOT NULL)
union
SELECT NOM_JOUEUR, Alliance, P3, ATTACABLE
FROM donnée WHERE (([P3]) IS NOT NULL)
union
SELECT NOM_JOUEUR, Alliance, P4, ATTACABLE
FROM donnée WHERE (([P4]) IS NOT NULL)
union
SELECT NOM_JOUEUR, Alliance, P5, ATTACABLE
FROM donnée WHERE (([P5]) IS NOT NULL)
union
SELECT NOM_JOUEUR, Alliance, P6, ATTACABLE
FROM donnée WHERE (([P6]) IS NOT NULL)
union
SELECT NOM_JOUEUR, Alliance, P7, ATTACABLE
FROM donnée WHERE (([P7]) IS NOT NULL)
union
SELECT NOM_JOUEUR, Alliance, P8, ATTACABLE
FROM donnée WHERE (([P8]) IS NOT NULL)
UNION SELECT NOM_JOUEUR, Alliance, P9, ATTACABLE
FROM donnée WHERE (([P9]) IS NOT NULL);
De ce fait, je me passe de la requête regroup_planete_ok et la requête moteur_planete devient simplement :
Code :
1
2
3
4
SELECT regroup_planete.NOM_JOUEUR AS [Nom joueur], regroup_planete.Alliance, regroup_planete.P1 AS Planete, regroup_planete.ATTACABLE AS Attaquable, IIf([NAP]=Yes,"Oui","") AS NAP0, Left([P1],1) AS galaxy, eclatage([p1],1) AS secteur
FROM ALLIANCE_NAP RIGHT JOIN regroup_planete ON ALLIANCE_NAP.NOM_ALLIANCE = regroup_planete.Alliance
WHERE (((regroup_planete.NOM_JOUEUR)<>'0'))
ORDER BY Left([P1],1), eclatage([p1],1);
Enfin, dernier problème, la fonction Eclatage renvoie des strings alors que tu veux des nombres (pour trier et filtrer sur des intervalles).
Voici une modification de la fonction de Philippe :
Code :
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
Public Function Eclatage(strDonnees As String, bytPos As Byte) As Long
    ' déclaration
    Dim Eclat() As String
    Dim strSep As String        ' récupération du séparateur
    Dim i As Integer
 
    ' on détecte d'abord le séparateur
    For i = 1 To Len(strDonnees)                    ' on parcourt les chiffres un à un dans une boucle
        If IsNumeric(Mid(strDonnees, i, 1)) Then    ' on test s'il s'agit d'un numérique
        Else
            strSep = Mid(strDonnees, i, 1)          ' on stocke le séparateur
            Exit For                                ' on sort de la boucle
        End If
    Next i
 
    ' éclatage de la chaine en fonction du séparateur trouvé
    Eclat = Split(strDonnees, strSep)
 
    ' on test bytpos s'il correspond à la plus grande valeur de la table pour éviter les erreurs de limites
    ' rappel que bytpos commence à 0
    If bytPos <= UBound(Eclat()) Then
        Eclatage = CLng(Eclat(bytPos))
    Else
        Eclatage = -1
    End If
End Function
Je persiste à penser qu'il serait plus simple de modifier la structure des données et à travailler sur un module d'importation qui transforme les données Excel en données ... base de données.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 12h51   #14
popofpopof
Débutant
 
Inscription : avril 2007
Messages : 646
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 646
Points : 144
Points : 144
je viens de faire tes modif LedZeppII mais j'ai une erreur avec le code de Philippe que tu as modifier "incompatibilite de type" dans j ouvre le formulaire.
Fichiers attachés
Type de fichier : zip gaia.zip (216,9 Ko, 1 affichages)
popofpopof est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 14h10   #15
LedZeppII
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 4 176
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 4 176
Points : 7 098
Points : 7 098
Le contenu du champ P5 pour le joueur bartabas n'est pas conforme à la syntaxe attendue : 2;356.9

Voici une nouvelle adaptation qui prend en compte des séparateurs différents dans la même chaîne,
ainsi que l'absence de données (ex: 1..3 ou 1.2.) :
Code :
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
Public Function Eclatage(strDonnees As String, bytPos As Byte) As Long
    ' déclarations
    Const C_STRVALERR = "-1"
    Dim Eclat() As String, sExtrait As String
    Dim i As Integer
 
    ' on remplace tout caractère non "0"-"9" par "." qui servira de séparateur
    For i = 1 To Len(strDonnees)
        If Not (Mid(strDonnees, i, 1) Like "[0-9]") Then
           If Mid(strDonnees, i, 1) <> "." Then Mid(strDonnees, i, 1) = "."
        End If
    Next i
 
    ' éclatage de la chaine
    Eclat = Split(strDonnees, ".")
 
    ' on test bytpos s'il correspond à la plus grande valeur de la table pour éviter les erreurs de limites
    ' rappel que bytpos commence à 0
    If bytPos <= UBound(Eclat()) Then
        sExtrait = Eclat(bytPos)
        If Len(sExtrait) = 0 Then sExtrait = C_STRVALERR  ' si chaîne vide on affecte la chaîne erreur C_STRVALERR
    Else
        sExtrait = C_STRVALERR ' on affecte la chaîne erreur C_STRVALERR
    End If
    Eclatage = CLng(sExtrait)
End Function
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2012, 16h10   #16
Philippe JOCHMANS
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 18 461
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 45
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 18 461
Points : 40 663
Points : 40 663
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Citation:
Envoyé par LedZeppII Voir le message
Je persiste à penser qu'il serait plus simple de modifier la structure des données et à travailler sur un module d'importation qui transforme les données Excel en données ... base de données.
Tout à fait d'accord avec toi, la fonction n'est qu'un palliatif.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Vous pouvez consulter mes articles sur Access et PowerPoint

Si vous avez des c'est peut-être moi, car vous postez un fichier en pièce jointe sans explications.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2012, 17h34   #17
popofpopof
Débutant
 
Inscription : avril 2007
Messages : 646
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : avril 2007
Messages : 646
Points : 144
Points : 144
SUPER SUPER avec ton nouveau code le filtre sur secteur marche nickel donc tout est bon plus erreur
merci a vous deux pour vos divers solutions

merci les chefs
popofpopof est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 11h37.


 
 
 
 
Partenaires

Hébergement Web