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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

[Access 2003] Requête sql multicritère


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 100
    Points
    100
    Par défaut [Access 2003] Requête sql multicritère
    Bonjour,



    j'essaie de faire une requete multicritère mais cela me donne une erreur

    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    Private Sub Init_List()
    Dim Strsql As String
    Dim CodeAts As String
     
    Me.ListView1.ListItems.Clear
    Set Db = CurrentDb
    CodeAts = NumCodeAts
    DoCmd.Maximize
    Me.ListView1.View = lvwReport
     
     
    Strsql = "SELECT Article.NumOrdre, NumCodeAts, NbreEnStock, NumEntree, Raison,EntreeStock, Depot, Nom, Date   FROM Article, Entree WHERE Article.NumOrdre = Entree.NumOrdre And NumCodeAts = '" & CodeAts & "';"
    Set Rs = Db.OpenRecordset(Strsql)
    Rs.MoveFirst
    While Not Rs.EOF
    Set LaLigne = LaListe.ListItems.Add()
      LaLigne.Text = Rs!NumEntree
        LaLigne.SubItems(1) = Nz(Rs!NumOrdre, "None")
        LaLigne.SubItems(2) = Nz(Rs!NumCodeAts, "None")
        LaLigne.SubItems(3) = Nz(Rs!Raison, "None")
        LaLigne.SubItems(4) = Nz(Rs!EntreeStock, "None")
        LaLigne.SubItems(5) = Nz(Rs!Depot, "None")
        LaLigne.SubItems(6) = Nz(Rs!Nom, "None")
        LaLigne.SubItems(7) = Nz(Rs!NbreEnStock, "None")
        LaLigne.SubItems(8) = Nz(Rs!Date, "None")
        Rs.MoveNext
    Wend
    Rs.Close
    ListView1.SortKey = 0
    ListView1.SortOrder = lvwAscending
    ListView1.Sorted = True
    ListView1.SelectedItem.EnsureVisible
    End Sub
    il me retourne une erreur de type mismatch
    Data type mismatch in criteria expression. (Error 3464)

    il me surligne en jaune ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set Rs = Db.OpenRecordset(Strsql)

    peut-être une idée merci

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Ton champs NumCodeAts est de quel type ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    352
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 352
    Points : 415
    Points
    415
    Par défaut
    Vérifie que ta variable Rs est de type DAO.recordset et non pas ADODB.recordset.

    Pour l'utiliser comme tu le fais il faut un DAO.recordset

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 100
    Points
    100
    Par défaut
    bonsoir,

    Pour taouret oui c'est bien Dao.recordset

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Option Compare Database
    Option Explicit
     
    Dim Db As DAO.Database
    Dim rs As DAO.Recordset
    Dim LaLigne As ListItem
    Dim LaListe As Control
    Dim i As Integer
    pour pc75

    numCodeats est de type number

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonjour...

    Petite remarque : la chaine SQL me parait "bizarre", on dirait que tu fais appel à 2 tables , articles et entrées.. Mais elles ne semblent pas liées, par un
    INNER JOIN ou LEFT JOIN ou RIGHT JOIN ???

    As tu essayé de la construire avec le requêteur d'Access avant de "recopier" le code SQL dans ta variable ?

    SI la chaine SQL est erronée, c'est surement normal qu'il te surligne en jaune le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Rs = Db.OpenRecordset(Strsql)
    Il ne sait pas interpréter le code SQL...

    Bon courage.

    Didier71

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 100
    Points
    100
    Par défaut
    D'accord didier 71


    Mais si tu fais ca ca fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Strsql = "SELECT Article.NumOrdre, NumCodeAts, NbreEnStock, NumEntree, Raison,EntreeStock, Depot, Nom, Date   FROM Article, Entree WHERE Article.NumOrdre=Entree.NumOrdre ORDER BY NumEntree;"
    donc les tables sont bien liée sans inner join, left join, right join

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 129
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Avec un champ numérique, il ne faut pas encadrer la valeur avec des apostrophes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Strsql = "SELECT Article.NumOrdre, NumCodeAts, NbreEnStock, NumEntree, Raison,EntreeStock, Depot, Nom, Date   FROM Article, Entree WHERE Article.NumOrdre = Entree.NumOrdre And NumCodeAts = " & CodeAts
    Le ; à la fin n'est pas obligatoire non plus.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 175
    Points : 100
    Points
    100
    Par défaut
    ok super merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [access 2003/VBA/SQL] Erreur d'execution 3201 sur une requête.
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 6
    Dernier message: 02/05/2008, 10h04
  2. [Access 2003] Requete SQL
    Par MrWeb dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/12/2006, 12h46
  3. [SQL Server 2000/Access 2003] Requête SQL à affiner
    Par Baldric de Dol dans le forum Langage SQL
    Réponses: 8
    Dernier message: 08/07/2006, 08h17
  4. [ACCESS 2003] - Requête d'ajout
    Par guiguikawa dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/06/2006, 15h47
  5. Access & ADO : Requête SQL multibases ?
    Par MaTHieU_ dans le forum Bases de données
    Réponses: 7
    Dernier message: 15/06/2006, 18h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo