IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ MS-Access

FAQ MS-AccessConsultez toutes les FAQ

Nombre d'auteurs : 140, nombre de questions : 926, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireRequêtesRequêtes Trucs et Astuces

Un Full Outer est l'équivalent de :

 
Sélectionnez
Select ...
From T1
Left Outer Join T2
On...
Union
Select ...
From T2
Left Outer Join T1
On...
Créé le 25 octobre 2004  par SQLpro

Lorsque nous avons une expression comme celle-ci :

 
Sélectionnez
( [A] / [B] )

où [B] est susceptible de prendre pour valeur 0, alors nous pouvons utiliser ceci :

 
Sélectionnez
iif( [B]=0, 0, [A]/[B] )
Créé le 25 octobre 2004  par Lucifer

Pour passer des paramètres à une requête, il y a bien sûr les paramètres de la requête, voire des variables définies en VB, mais il existe aussi une solution simple :
Une table ne contenant qu'un seul enregistrement.
Cet enregistrement peut bien sûr contenir beaucoup de champs tels que TxTVA1, TxTVA2, Date_fin_periode, etc.

On insère la table dans la requête nécessitant les paramètres et on se sert des champs comme critères ou constantes.

Attention :

  • garantir un seul enregistrement (il y a un post là-dessus sur ce site) sinon gare aux petits lapins comme on dit chez nous (multiplication des enregistrements) ;
  • ne marche pas si on a des jointures externes dans la requête (c'est-à-dire des flèches sur les liens), mais il suffit souvent de décaler le problème en faisant une deuxième requête.


On a avec cette solution la souplesse d'utilisation des tables... et des possibilités quasi infinies puisqu'on peut facilement modifier les paramètres via des requêtes appropriées.

Créé le 1er janvier 2005  par philou22

Nous avons dans une table, un champ de type Date qui contient la date plus l'heure, ex. : 2004-05-12 19:45:20.
Voici la requête permettant de connaître toutes les lignes d'une table dont le champ date correspond à la date du jour :

 
Sélectionnez
Select * From LATABLE Where int( LADATE ) = Date()

La fonction int() permet de ne sélectionner que la date et non la date suivie de l'heure.

Créé le 25 octobre 2004  par Etienne Bar

Ce code va permettre de récupérer le temps d'exécution de la requête en prenant le moment avant exécution puis en réalisant la différence à la fin de l'exécution

 
Sélectionnez
Sub TpsRequete()

    Dim sngDebut As Single
    sngDebut = VBA.DateTime.Timer
     ' Exécution de la requête
    DoCmd.RunSQL CurrentDb.QueryDefs("MaRequete").SQL
    MsgBox "Temps d'exécutiuon : " & Str(VBA.DateTime.Timer - sngDebut) & " secondes"

End Sub
Créé le 25 octobre 2004  par bigquick

ATTENTION : l'utilisation des tables système (MSYSxxxxxxx) n'est pas recommandée. L'utilisation de telles procédures se fait à vos risques et péril.

 
Sélectionnez
SELECT A.name AS Requete, B.name1 AS Lst_Table
FROM MSysObjects AS A INNER JOIN MSysQueries AS B ON A.id=B.objectid
WHERE A.type=5
and B.attribute=5;

MSysObjects est la table qui contient tous les objets qui existent dans la base.
Dans cette table, type=5 permet d'identifier les requêtes.

MSysQueries est la table qui contient tout le détail des requêtes qui existent dans la base.
Dans cette table, attribute=5 permet de définir (par rapport à l'id) ce qui est contenu dans le FROM (table ou requête).
D'autres valeurs d'attribut vous permettent de savoir si vous êtes dans le SELECT le WHERE ou l'ORDER BY.

Pour visualiser ces tables, il faut aller dans le menu Outils->Options... l'onglet affichage et cocher Objets système.

Créé le 10 mai 2005  par MashiMaro

Première solution en agissant sur la table :

Onglet Données
Source contrôle : le champ
Origine source : Liste valeurs
Contenu : -1;oui;0;non
Onglet Format
Nbre colonnes : 2
Largeurs Colonnes : 0

Seconde solution en agissant sur la requête :

Il suffit dans le Select de la requête de mettre une condition sur l'affichage de la valeur du champ.

 
Sélectionnez
iif(TonChamp;'Oui';'Non')
Créé le 20 novembre 2005  par Maxence HUBICHE

Les requêtes contenant des jointures peuvent être valides sous SQL SERVER et pas sous Access.
Pour résoudre ce problème, il suffit de placer le nom des tables entre crochets. Sinon vérifiez la compatibilité des mots-clés SQL.

Créé le 20 novembre 2005  par mouuaahh


Voici une petite fonction à intégrer dans votre SELECT pour enlever les occurrences.

 
Sélectionnez
Function myRTrim2(vChaine As Variant, strSearch As String) As Variant
If Not IsNull(vChaine) Then
    Do While vChaine Like "*" & strSearch
        vChaine = Left(vChaine, Len(vChaine) - Len(strSearch))
    Loop
    myRTrim2 = vChaine
End If
End Function
Créé le 14 octobre 2007  par cafeine, Tofalu

Ce code permet d'incrémenter un champ d'une requête SQL :

 
Sélectionnez
SELECT TonChamp,
 
       (SELECT COUNT(TonChamp)
 
        FROM tbl_Exemple AS LaTable_Alias2 
 
        WHERE TonChamp <  tbl_Exemple.TonChamp)+1 AS Classement
 
FROM tbl_Exemple 
 
ORDER BY TonChamp;


Ceci permet de faire un classement

ChampNum Champ ChampIncrementé
1 Test1 1
5 Test2 2
3 Test3 3
2 Test4 4
4 Test5 5
Créé le 14 octobre 2007  par francishop

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.