Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/02/2011, 10h24   #1
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
Par défaut Requete sur le format d'un champ

Bonjour,
Debutant sur Access je souhaite faire une requete qui verifie le format d'un Champ:

Format acceptern est Numerique et A est une lettre de l'alphabet)

nAAn
nnAAn
nnnAAn
nAAnn
nAAnnn
...

Si quelqu'un a une idée ....Merci
DGCsltg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 12h20   #2
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
Il faut créer une fonction qui vérifie le format puis employer cette fonction dans la requête
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 12h25   #3
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
Merci pour ta reponse
mais quelle fonction permet de verifier si c'est un chiffre ou une lettre ?
DGCsltg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 12h39   #4
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
un Exemple
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
27
28
29
30
31
32
33
34
35
36
37
38
39
 
Function VerifFormat(valeur As String) As Boolean
 Dim i As Long, j As Long, k As Long, l As Long, masque(4) As String
 
 masque(0) = "nAAn"
 masque(1) = "nnAAn"
 masque(2) = "nnnAAn"
 masque(3) = "nAAnn"
 masque(4) = "nAAnnn"
 
 VerifFormat = False
 For l = 0 To UBound(masque())
  k = Len(masque(l))
  If Len(valeur) = k Then
   j = 0
   For i = 1 To k
    Select Case Mid$(masque(l), i, 1)
    Case "n"
       Select Case Mid$(valeur, i, 1)
       Case "0" To "9"
          j = j + 1
       End Select
 
    Case Else
       Select Case Mid$(valeur, i, 1)
       Case "0" To "9"
       Case Else
        j = j + 1
       End Select
    End Select
   Next i
   If j = k Then
    VerifFormat = True
    Exit For
   End If
  End If
 Next l
 
End Function
il faut définir les masques
dans la requete
Code :
1
2
 
SELECT IIf(verifformat([NomChamp]),[NomChamp],"non valide") AS Expr1 FROM NomTable;
helas est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 19/02/2011, 12h47   #5
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
Excellent

Merci beaucoup pour ton aide
je vais plancher la dessus .

Je pense que je vais mettre du tps..... Je debute !!!

En tout cas tu m'as donner la voie a suivre. Merci !
DGCsltg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 21h25   #6
Invité de passage
 
Inscription : février 2011
Messages : 6
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 6
Points : 0
Points : 0
Bon j'ai planché toute l'aprem
j'ai lu tous les tuto possible et inimagniable mais je lutte.

Alors si quelqu'un pouvais juste m'expliquer en detail ce que signifie concretement la suite de ligne qui suit je lui en serais reconnaissant ...


Code :
1
2
3
4
5
6
7
8
9
10
11
12
VerifFormat = False '------------------Ca  c'est OK
 For l = 0 To UBound(masque()) '------Et a partir de la je bloque ....
  k = Len(masque(l))
  If Len(valeur) = k Then
   j = 0
   For i = 1 To k
    Select Case Mid$(masque(l), i, 1)
    Case "n"
       Select Case Mid$(valeur, i, 1)
       Case "0" To "9"
          j = j + 1
       End Select
DGCsltg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 20h59   #7
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonsoir,
masque est une table qui contient des valeurs
Ubound retourne l'index max de la table, autrement dit si masque(4) est le dernier élément du tableau, ubound retourne 4

k = Len(masque(l)) longueur du texte contenue dans masque(l), l variant de 0 à 4

ensuite pour chaque lettre du masque (n ou A) on teste si la lettre placée au même niveau est un chiffre ou une lettre, si c'est le cas on increment j

si à la fin du test on a j=k cela veut dire que tous les caractères de la valeur correspondent aux types d'un masque
si on passe la valeur 567BC5 , nnnAAn correspond bien au type de valeur désiré
5 correspond à n (numerique) donc j=j+1
6 correspond à n (numerique) donc j=j+1 soit j=2
7 correspond à n (numerique) donc j=j+1 soit j=3
B correspond à A (lettre) donc j=j+1 soit j=4
C correspond à A (lettre) donc j=j+1 soit j=5
5 correspond à n (numerique) donc j=j+1 soit j=6

j=k=6 car k=nombre de caractères dans nnnAAn
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h22.


 
 
 
 
Partenaires

Hébergement Web