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
Sommaire > Requêtes
        Comment voir le code SQL généré par le QBE ?
        Compter le nombre d'enregistrements
        Exporter des requêtes sur plusieurs onglets Excel.
        Comment créer une requête depuis VBA ?
        Comment utiliser en VBA une requête existante ?
        Comment tester l'existence d'une requête ?
        Comment faire appel aux données d'une table d'une autre base de données en SQL ?
        Comment utiliser Access pour exécuter des requêtes sur d'autres types de base de données ?
        Pour chaque requête Access rajoute ', *' dans le Select, comment l'empêcher de faire ça ?
        Comment ignorer les accents dans une requête SQL ?
        Quelles sont les limites des champs mémos dans une requête ?
        Comment récupérer le nombre d'enregistrement concernés après le lancement d'une requête ?
        6.1. Manipulation des requêtes (5)
                Comment créer une requête avec le modèle ADO ?
                Comment modifier le SQL d'une requête avec le modèle ADO ?
                Comment supprimer une requête avec le modèle ADO ?
                Comment effacer une requête en VBA ?
                Comment rechercher un mot dans plusieurs champs dans une Requête ?
        6.2. Expressions et critères (15)
                Définir un critère de requête sensible à la casse
                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 ?
                Comment définir un type pour les paramètres d'une requête ?
                Comment obtenir le mois, le jour ou l'année d'une date dans une requête ou en VBA ?
                Types des champs
                Requête de sélection d'un mot avec ou sans accent dans access 2000
                Quel symbole remplace le % du SQL ?
                Mes requêtes sur des champs dont le nom contient le symbole # ne marchent pas ?
                Le signe * ne fonctionne pas dans ma requête ?
                Comment inclure des champs d'un formulaire dans une requête ?
                Comment utiliser la valeur d'une variable vba dans une requête Access ?
                Est-il possible d'effectuer des calculs simples en fonction d'une ou plusieurs conditions ?
                Comment sélectionner les enregistrements dont le champ date concerne le mois prochain ?
                Rechercher un mot dans un champ
                Comment rechercher le caractère * dans une requête ?
        6.3. Suppressions, modifications et insertions (8)
                Comment effacer tout le contenu d'une table ?
                Résultat de requête non modifiable ?
                Requête d'insertion avec données décimales
                Je n'arrive pas à supprimer un enregistrement d'une table
                Comment supprimer le champ d'une table en SQL ?
                Définir 'null interdit' en SQL pour création/ajout de champ.
                Comment effacer une table en VBA ?
                Comment créer un index sur un champ en SQL ?
        6.4. Conception (16)
                Différence entre DISTINCT et DISTINCTROW ?
                Comment éviter les doublons dans une requête (pour charger une zone de liste par exemple) ?
                Comment fonctionnent les jointures/relations ?
                Requête donnant la liste des enregistrements de la table 1 qui ne sont pas dans la table 2
                Comment, dans une requête, ajouter un champ 'ordre' qui s'incrémente pour chaque identifiant ?
                Comment chercher en SQL le premier ou dernier enregistrement d'une table ?
                Comment calculer le nombre d'enregistrements correspondants au critère de la requête ?
                Regroupement (GROUP BY) sur les n premières lettres des enregistrements d'un champ ?
                Comment n'avoir que les x premières réponses d'une requête ? (Comme LIMIT en MySQL)
                Ma requête fonctionne avec l'opérateur In, mais pas avec l'opérateur Not In ni même NOT EXISTS...
                Comment faire une requête qui ne retourne que les enregistrements d'un interval désiré ? (Limit 50,50 de MySQL) ?
                Comment ne sélectionner que les enregistrements qui diffèrent entre deux champs de deux tables distinctes ?
                Comment retourner toutes les lignes de deux ensembles avec UNION ?
                Vider rapidement une table attachée en ODBC ?
                Comment catégoriser des clients (réductions) pour éditer une Facture ?
                Comment créer numérotation dans une requete ?
        6.5. Trucs et Astuces (10)
                Existe-t-il une alternative à FULL OUTER en SQL ?
                Comment éviter d'avoir une division par zero dans une requête SQL
                Passage de paramètres dans des requêtes
                Critère de requête entre un champ date et un champ date et heure.
                Connaître le temps de traitement d'une requête
                Comment pour chaque requête obtenir la liste des tables qu'elle utilise ?
                Comment faire pour afficher 'Oui' ou 'Non' plutôt que 0 ou -1 dans le résultat d'une requête ?
                Différence de syntaxe entre SQL server et Access pour les requêtes avec jointures
                Comment enlever des occurences dans un SELECT ?
                Comment incrémenter un champ dans une requête SQL ?

precedent    sommaire    suivant   


Comment voir le code SQL généré par le QBE ?
auteur : Team Access

Pour basculer du mode assistant (QBE) au mode SQL, cliquez sur le menu Affichage, puis Mode SQL.


Compter le nombre d'enregistrements
auteur : Team Access
Utilisez la fonction Dcount de MS-Access
 nb = DCount("*","NomRequete") 
ou la propriété recordcount de l'objet recordset en VBA.
 rst.Recordcount 
Pour utiliser cette propiété il faut toujours que le recordset soit rempli et avant de lire la propriété il est souvent nécessaire de faire un
rst.MoveLast 

Sauf s'il s'agit d'un Recordset de type dbOpenTable.

lien : fr Définition et manipulation de données avec DAO par Tofalu
lien : faq Comment déclarer une référence dans MS-Access ?

Exporter des requêtes sur plusieurs onglets Excel.
auteur : Team Access
DoCmd.TransferSpreadsheet crée un onglet pour chaque requête exportée. cf. aide Access.


Comment créer une requête depuis VBA ?
auteur : Team Access
Ce code vous permet de créer une requête qui s'ajoutera au requêtes Access déjà présentes.
CurrentDb.CreateQueryDef("MaReqCreee", "Select * FROM Table1")

Comment utiliser en VBA une requête existante ?
auteur : Drosera
Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Dim qdf As DAO.QueryDef 
Dim rcs As DAO.Recordset 

  'référence à la requête 
Set qdf = CurrentDb.QueryDefs("NomQuery") 

  'code qui utilise qdf 
  'par exemple 
qdf.Parameters("NomParamètre") = valeur     '<== si requête paramétrée 
qdf.Execute                                 '<== si requête action 
Set rcs = qdf.OpenRecordset                 '<== pour travailler sur les données 


  'libération de la référence 
Set qdf = Nothing
lien : faq Créer un jeu de données (recordset)
lien : fr Définition et manipulation de données avec DAO par Tofalu
lien : faq Comment déclarer une référence dans MS-Access ?

Comment tester l'existence d'une requête ?
auteur : Tofalu
Voici une Fonction permettant de vous dire si une requête éxiste en renvoyant True :

Pour exécuter ce code il faut activer la référence : Microsoft DAO 3.x Object Library
Function testQuery(strName As String) As Boolean
'Pour fonctionner ce code nécessite la référence
'   - Microsoft DAO X Object Library
On Error GoTo err
    Dim oDb As DAO.Database
    Dim oQdf  As DAO.QueryDef
    
    'Accède à la base de données courante
    Set oDb = CurrentDb
    Set oQdf = oDb.QueryDefs(strName)
    'Retourne Vrai
    testQuery = True
    
fin:
    'Libère les objets
    Set oDb = Nothing
    Set oQdf = Nothing
    Exit Function
err:
    'Remonte toutes les erreurs différents de l'erreur 3265
    '(la requête n'existe pas)
    
    If err.Number <> 3265 Then
        err.Raise err.Number, err.Source, err.Description
    End If
    Resume fin

End Function

Exemple d'utilisation :
MsgBox testQuery("RqtClasses")


Une autre façon de tester une requête sans DAO ni ADO :
Sub test()
Const QUERYTYPE = 5
'Teste l'existence de la requête RqtClasses
If DLookup("Type", "MSysObjects", BuildCriteria("Type", dbInteger, QUERYTYPE) & _
        " AND " & BuildCriteria("Name", dbText, "RqtClasses0")) = 5 Then
    MsgBox "La requête existe"
Else
    MsgBox "La requête n'existe pas"
End If
 
End Sub
lien : fr Définition et manipulation de données avec DAO par Tofalu
lien : faq Comment déclarer une référence dans MS-Access ?

Comment faire appel aux données d'une table d'une autre base de données en SQL ?
auteur : Demco
Select * From TABLE1 In 'C:\MesDocuments\mabase.mdb\' ;

Comment utiliser Access pour exécuter des requêtes sur d'autres types de base de données ?
auteur : Maxence HUBICHE

Voici comment exécuter par exemple des requêtes sur une base de données Oracle :


Depuis Access créez une nouvelle requête.
En mode création de la requête, faites le menu : Requête > Spécifique SQL > SQL Direct
Les requêtes SQLDirect permettent d'établir une connexion à un serveur distant, d'écrire une requête pour le serveur PL-SQL donc et de la faire s'exécuter par le serveur.


En cas d'erreur de syntaxe, essayez d'enlever le ";" en fin de requête.


Pour chaque requête Access rajoute ", *" dans le Select, comment l'empêcher de faire ça ?
auteur : argyronet
Dans l'onglet Tables/requêtes des options d'Access, décochez [Tous les champs].


Comment ignorer les accents dans une requête SQL ?
auteur : Tofalu
Il faut créer une fonction personnalisée qui remplace la lettre accentuée par la même mais sans l'accent.


Dans un module :
Public Function sansAccent(ByVal Chaine As String, EnMajuscule As Boolean) As String
Chaine = LCase(Chaine)
Chaine = Replace(Chaine, Chr(232), "e")
Chaine = Replace(Chaine, Chr(233), "e")
Chaine = Replace(Chaine, Chr(234), "e")
Chaine = Replace(Chaine, Chr(235), "e")
Chaine = Replace(Chaine, Chr(249), "u")
Chaine = Replace(Chaine, Chr(250), "u")
Chaine = Replace(Chaine, Chr(251), "u")
Chaine = Replace(Chaine, Chr(242), "o")
Chaine = Replace(Chaine, Chr(244), "o")
Chaine = Replace(Chaine, Chr(254), "o")
Chaine = Replace(Chaine, Chr(255), "y")
Chaine = Replace(Chaine, Chr(224), "a")
Chaine = Replace(Chaine, Chr(225), "a")
Chaine = Replace(Chaine, Chr(226), "a")
Chaine = Replace(Chaine, Chr(238), "i")
Chaine = Replace(Chaine, Chr(239), "i")
chaine = Replace(chaine, Chr(244), "o")
If EnMajuscule Then Chaine = UCase(Chaine)
sansAccent = Chaine
End Function
Et la requête :
SELECT * FROM MaTable WHERE SansAccent(MonChamp,True)=sansaccent("élève",true)
lien : faq Comment enlever les accents d'une chaîne

Quelles sont les limites des champs mémos dans une requête ?
auteur : =JBO=
Dans une requête avec regroupement des données, les champs Mémos sont tronqués à 255 caractères et convertis en champs texte.


Comment récupérer le nombre d'enregistrement concernés après le lancement d'une requête ?
auteur : fdraven
Pour récupérer le nombre d'enregistrements après l'exécution d'une requête il existe deux méthodes :

Méthode 1 (par DAO) :
Pour ce code il est nécessaire de mettre la référence => Microsoft DAO 3.x Object Library
 Dim db as Database
    Dim LSQL as String
 
    Set db = CurrentDb()
    LSQL = "INSERT INTO ..."
 
    db.Execute LSQL
 
    MsgBox CStr(db.RecordsAffected) & " enregistrements insérés."
Méthode 2 (par ADO) :
Pour ce code il est nécessaire de mettre les références => Microsot ADO Ext 2.X for dll and security et Microsoft ActiveX Data Object 2.X Library
 Dim cnn As New ADODB.connection, iAffected As Integer
    Dim sSQL As String
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= Nomdemabase;"
    sSQL = "INSERT INTO ..." 
    ' Exécution de la requête
    cnn.Execute sSQL, iAffected, adExecuteNoRecords
    Debug.Print "Enregistrements insérés = " & iAffected
    cnn.Close

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