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êtes


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

Mis à jour le 29 août 2006  par Team Access

Utilisez la fonction Dcount de MS Access

 
Sélectionnez
 nb = DCount("*","NomRequete")

ou la propriété recordcount de l'objet Recordset en VBA.

 
Sélectionnez
 rst.Recordcount

Pour utiliser cette propriété il faut toujours que le Recordset soit rempli et avant de lire la propriété il est souvent nécessaire de faire un

 
Sélectionnez
rst.MoveLast


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

Mis à jour le 19 août 2003  par Team Access

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

DoCmd.TransferSpreadsheet crée un onglet pour chaque requête exportée. cf. aide Access.

Créé le 29 décembre 2003  par Team Access

Ce code vous permet de créer une requête qui s'ajoutera aux requêtes Access déjà présentes.

 
Sélectionnez
CurrentDb.CreateQueryDef("MaReqCreee", "Select * FROM Table1")
Créé le 3 septembre 2004  par Team Access

Pour exécuter ce code, il faut activer la référence : Microsoft DAO 3.x Object Library.

 
Sélectionnez
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
Créé le 3 septembre 2004  par Drosera

Lien : Comment créer un jeu de données (Recordset) ?
Lien : Définition et manipulation de données avec DAO par Tofalu
Lien : Comment déclarer une référence dans MS Access ?

Voici une fonction permettant de vous dire si une requête existe en renvoyant True :

Pour exécuter ce code, il faut activer la référence : Microsoft DAO 3.x Object Library.

 
Sélectionnez
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érentes 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 :

 
Sélectionnez
MsgBox testQuery("RqtClasses")



Une autre façon de tester une requête sans DAO ni ADO :

 
Sélectionnez
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
Mis à jour le 14 octobre 2007  par Tofalu

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

 
Sélectionnez
Select * From TABLE1 In 'C:\MesDocuments\mabase.mdb\' ;
Créé le 25 octobre 2004  par Demco


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.

Créé le 20 novembre 2005  par Maxence HUBICHE

Dans l'onglet Tables/requêtes des options d'Access, décochez [Tous les champs].

Créé le 1er janvier 2005  par argyronet

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 :

 
Sélectionnez
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 :

 
Sélectionnez
SELECT * FROM MaTable WHERE SansAccent(MonChamp,True)=sansaccent("élève",true)
Mis à jour le 13 juin 2007  par Tofalu

Lien : Comment enlever les accents d'une chaîne ?

Dans une requête avec regroupement des données, les champs de type Mémo sont tronqués à 255 caractères et convertis en champs de type Texte.

Créé le 29 novembre 2006  par =JBO=

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.

 
Sélectionnez
 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.

 
Sélectionnez
 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
Créé le 14 octobre 2007  par fdraven

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.