Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Définir un critère de requête sensible à la casse
auteur : Maxence HUBICHE
Les requêtes Access ne sont pas case sensitive. Mais la fonction Instr() a un argument de définition de la méthode de comparaison.
Select * from XXX where instr(1,Nom,'tOtO', 0)<>0

Comment définir un paramètre (à définir par l'utilisateur à chaque exécution d'une requête) servant de critère pour le résultat de la requête ?
auteur : Maxence HUBICHE
Pour faire un VRAI paramètre, il y a 2 étapes :

1/ Aller dans Requêtes/Paramètres ... et définir le paramètre

Par exemple :
Nom du paramètre : Choisir Année
Type de données : Entier

2/ L'utiliser en l'inscrivant entre crochets.
Exemple :
... WHERE [Choisir Année] = ... 

Comment définir un type pour les paramètres d'une requête ?
auteur : Demco
Parameters [Entrez une valeur numérique :] integer;
Select * From LATABLE
Where MONCHAMP =  [Entrez une valeur numérique :];
Ainsi, si vous saisissez 'blablabla' un message d'erreur vous indiquera que la valeur saisie est incorrecte et vous invitera à recommencer.

Donc integer pour un entier, date pour une date, text pour du texte etc.


Comment obtenir le mois, le jour ou l'année d'une date dans une requête ou en VBA ?
auteur : Demco
Avoir le jour :
Day(LaDate)
Avoir le mois :
Month (LaDate)
Avoir l'année :
Year(LaDate)

Types des champs
auteur : Team Access
Dans les instructions SQL, la plupart des versions MS Access attendent des dates au format américain (mm/dd/yyyy). Dans les clauses de la requête,
les champs typés utilisent des caractères de type :
MonChamp=Valeur 'Numérique 
MonChamp="Valeur" 'Texte 
(on peut aussi avoir 'Valeur', mais cette solution est dangereuse. En effet, s'il y a une apostrophe dans Valeur, la clause SQL se perd dans ces apostrophes...)
 MonChamp=#Valeur#  ' Date 

Requête de sélection d'un mot avec ou sans accent dans access 2000
auteur : Maxence HUBICHE
Vous voulez que lorsque vous tapez par exemple "infirmiere", on trouve "infirmiére", "infirmière" ou "infirmiere" et vice versa. Bref vous souhaitez sélectionner le mot quelque soit l'accent se trouvant sur le 'e'.

Il suffit d'écrire la requête comme ceci :
Select * From MATABLE Where MONCHAMP Like '%infirmi[eèé]re%\'

Quel symbole remplace le % du SQL ?
auteur : Frank
Utilisez : *
Select * From MATABLE Where VILLE Like "*an"

Mes requêtes sur des champs dont le nom contient le symbole # ne marchent pas ?
auteur : Demco
Tout d'abord, il faut éviter d'utiliser des symboles pour les noms de table ou de champ. Mais si vous ne pouvez échaper à cette contrainte, solutionnez le problème en mettant des crochets.
Select [MonChamp#]...

Le signe * ne fonctionne pas dans ma requête ?
auteur : Maxence HUBICHE
Exemple :
Select * From MATABLE Where VILLE Like "*bord*"
Essayez le signe %
Select * From MATABLE Where VILLE Like "%bord%"
C'est par exemple utile lorsque l'on exploite une base de données Access avec Visual Basic.


Comment inclure des champs d'un formulaire dans une requête ?
auteurs : Demco, Tofalu


La zone de texte se nomme zdt
champ de type numérique :
MonSQL = "Select * From MATABLE Where MONCHAMP = " & zdt

champ de type Chaîne de caractères :
MonSQL = "Select * From MATABLE Where MONCHAMP = '" & zdt & "'"

ou bien :

monsql = "Select * From MATABLE Where " & BuildCriteria("MonChamp", dbText, zdt)
champ de type Date :
MonSQL = "Select * From MATABLE Where MONCHAMP = #" & zdt & "#"

ou bien :

monsql = "Select * From MATABLE Where " & BuildCriteria("MonChamp", dbDate, zdt)

Est-il possible d'effectuer des calculs simples en fonction d'une ou plusieurs conditions ?
auteurs : Gaël Donat, FRED.G
Exemple de question :
ma requête extrait des données et produit, par ligne, les champs "ID" et "VAL1", "VAL2","VAL3". Est-il possible de créer un nouveau champ "TOTAL", indépendant, et dont la valeur est conditionnée par la valeur de ID.
Exemple : si ID = "A", TOTAL = VAL1 + VAL2
si ID = "B", TOTAL = VAL2 + VAL3
si ID = "C", TOTAL = VAL1 + VAL2 + VAL3

3 fonctions permettent d'effectuer un tel calcul :

1) IIf (VraiFaux()). Pour vérifier plusieurs conditions, il possible d'imbriquer plusieurs Iff.
Pour notre exemple :
Select TEST.ID, IIf([ID]='A',[VAL1]+[VAL2],IIf([ID]='B',[VAL2]+[VAL3],IIf([ID]='C',[VAL1]+[VAL2]+[VAL3]))) AS Total
From TEST;
2) Switch() (PremVrai()). Les arguments de cette expression fonctionnent comme ceci :
Condition à vérifier; Résultat si condition vraie
Pour notre exemple :
Select TEST.ID, Switch([ID]='A',[VAL1]+[VAL2],[ID]='B',[VAL2]+[VAL3],[ID]='C',[VAL1]+[VAL2]+[VAL3]) AS Total
From TEST;
3) Choose() (Choisir()). Cette fonction n'est utile que si la condition à vérifier correspond à un nombre renvoyé par un seul et même champ de la requête. Généralement, le champ à vérifier est la colonne liée d'une petite zone de liste.
Dans cette fonction le premier argument est le champ à vérifier. Le deuxième argument indique la valeur à renvoyer si le premier argument vaut 1, le troisième argument indique la valeur à renvoyer si le premier argument vaut 2, etc.

Revenons à notre exemple. Si le champ ID avait renvoyé un nombre et qu'au lieu de A, B, C... nous avions 1, 2, 3..., voici comment nous aurions pu utiliser la fonction Choose :
Select TEST.ID, Choose([ID],[VAL1]+[VAL2],[VAL2]+[VAL3],[VAL1]+[VAL2]+[VAL3]) AS Total
From TEST;
Remarque : ces 3 fonctions évaluent systématiquement la totalité de leurs arguments par conséquent, mieux vaut les utiliser pour de petits calculs conditionnels.
Pour faire des tests complexes sur de nombreuses conditions, il sera préférable de créer une fonction personnalisée utilisant une instruction If Then Else ou Select Case.


Comment sélectionner les enregistrements dont le champ date concerne le mois prochain ?
auteur : Trini
Par exemple je suis en janvier 2006 et je veux avoir tous les enregistrement concernant le mois de février 2006. Je dois faire appel au critère suivant :

WHERE (((Year([madate]))=Year(DateAdd("m",1,Date()))) AND ((Month([madate]))=Month(DateAdd("m",1,Date()))));
madate est le champ de type date qui nous intéresse.


Rechercher un mot dans un champ
auteur : Maxence HUBICHE
Prenons l'exemple suivant :

Dans ma table, je souhaite retourner tous les enregistrements où le champ MonChamp contient le mot Masson. En utilisant le critère Comme '*masson*', je retournerais aussi les enregistrements contenant Tomasson. Si au contraire, je place des espaces entre les étoiles et le mots, je ne retournerait pas par exemple Lucien (Masson).

Pour cela, il suffit d'utiliser le critère suivant afin de vérifier que ce qui se trouve de chaque coté de masson n'est pas une lettre ce qui signifierait que masson est un mot à lui seul.

Comme '*[!a-z]masson[!a-z]*' Ou Comme 'masson[!a-z]*' Ou Comme '*[!a-z]masson' Ou 'masson'


Comment rechercher le caractère * dans une requête ?
auteur : Cafeine
Imaginons cette table :

Champ1
----------
Erreur
Erreur de saisie
**Erreur**
Le but est de réaliser une recherche qui retourne les lignes commençant par deux étoiles.

SELECT Champ1 FROM MATABLE WHERE CHAMP1 LIKE "***"
Le caractère * étant un joker, cette requête retourne toutes les lignes.

Dans l'implémentation SQL d'Access les caractères jokers (wildcard) doivent être mis dans une charlist entre crochets [], ce qui donnerait ici :

SELECT Champ1 FROM MATABLE WHERE CHAMP1 LIKE "[*][*]*"

precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2004  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com