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 :

Gestion des Null sous requête paramétrée


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué Avatar de Basicnav
    Profil pro
    Inscrit en
    Février 2008
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Février 2008
    Messages : 245
    Points : 193
    Points
    193
    Par défaut Gestion des Null sous requête paramétrée
    Bonjour,

    j'ai créé une requêtte paramétrée qui prends les valeurs selectionnées dans les zone de listes d'un formulaire de "recherche multicritères".

    Hors, si on on désire ne pas selectionner une valeur d'une liste (ex : on souhaite aussi bien les hommes que les femmes dans le resultat de la requette), j'ai une erreur '94' utilisation incorrecte des NULL.

    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
    Private Sub Commande5_Click()
     
        Dim db As Database
        Dim Q As QueryDef
        Dim SQL As String
        If IsNull(groupe) Then Exit Sub
     
        SQL = DLookup("PASQLrecherche", "parametre")
     
        Set db = CurrentDb
        Set Q = db.QueryDefs("recherche")
        SQL = ReplaceTexte(SQL, "@groupe@", groupe)
        SQL = ReplaceTexte(SQL, "@sexe@", sexe)
        SQL = ReplaceTexte(SQL, "@emploi@", emploi)
        SQL = ReplaceTexte(SQL, "@regime@", regime)
        SQL = ReplaceTexte(SQL, "@service@", service)
        SQL = ReplaceTexte(SQL, "@secteur@", secteur)
     
        Q.SQL = SQL
        Q.Close
        Set Q = Nothing
     
        DoCmd.Hourglass True
        DoCmd.OpenQuery "recherche"
        DoCmd.Hourglass False
    End Sub
    Comment faire pour que le code choisisse dans ce cas tous les champs d'une liste si aucun n'est choisi ?

    J'ai beau chercher, je ne trouve rien sur la toile...

    merci

  2. #2
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 874
    Points : 3 461
    Points
    3 461
    Par défaut
    Bonjour,
    Voici une autre approche qui fonctionne à merveille, certaines de mes liste sont multi-select ce qui complique un peu le code. Ma requête est déjà existante naturellement:
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    Private Function funetEvenement()
     
        Dim strSQL As String, strUser As String, strSecteur As String, strÉdifice As String, strEvent As String
        Dim vaListe As Variant
        Dim db As DAO.Database
        Dim qdf As DAO.QueryDef
     
        strSecteur = ""
        strUser = ""
        strÉdifice = ""
        strEvent = ""
     
        If Me.lstUser.ItemsSelected.Count > 0 Then
            For Each vaListe In lstUser.ItemsSelected
                If strUser = "" Then
                    strUser = "IN(" & lstUser.ItemData(vaListe)
                Else
                    strUser = strUser & ", " & lstUser.ItemData(vaListe)
                End If
            Next
            strUser = strUser & ")"
        End If
        If Me.lstSecteur.ItemsSelected.Count > 0 Then
            For Each vaListe In lstSecteur.ItemsSelected
                If strSecteur = "" Then
                    strSecteur = "IN(" & lstSecteur.ItemData(vaListe)
                Else
                    strSecteur = strSecteur & ", " & lstSecteur.ItemData(vaListe)
                End If
            Next
            strSecteur = strSecteur & ")"
        End If
        If Me.lstÉdifice.ItemsSelected.Count > 0 Then
            For Each vaListe In lstÉdifice.ItemsSelected
                If strÉdifice = "" Then
                    strÉdifice = "IN(" & lstÉdifice.ItemData(vaListe)
                Else
                    strÉdifice = strÉdifice & ", " & lstÉdifice.ItemData(vaListe)
                End If
            Next
            strÉdifice = strÉdifice & ")"
        End If
        If Me.lstTypeÉvènement.ItemsSelected.Count > 0 Then
            For Each vaListe In lstTypeÉvènement.ItemsSelected
                If strEvent = "" Then
                    strEvent = "IN(" & lstTypeÉvènement.ItemData(vaListe)
                Else
                    strEvent = strEvent & ", " & lstTypeÉvènement.ItemData(vaListe)
                End If
            Next
            strEvent = strEvent & ")"
        End If
     
        strSQL = "SELECT tblEvenement.Date_Évènement, tblEvenement.Heure_Évènement, tblEvenement_Type.Titre_évènement, "
        strSQL = strSQL & "tblEvenement.Note, tblSecteur.Nom_Secteur, tblEdifice.Nom_Edi, tblEdifice.Adresse, tblUsager_Info.Nom, "
        strSQL = strSQL & "tblUsager_Info.Prénom, tblUsager_Info.Fonction "
        strSQL = strSQL & "FROM tblEvenement_Type INNER JOIN (((tblEvenement INNER JOIN tblUsager_Info ON tblEvenement.Utilisateur.Value "
        strSQL = strSQL & "= tblUsager_Info.NUMERO_USAGER) INNER JOIN tblSecteur ON tblEvenement.NUMERO_SECTEUR "
        strSQL = strSQL & "= tblSecteur.NUMERO_SECTEUR) INNER JOIN tblEdifice ON tblEvenement.NUMERO_BATIMENT "
        strSQL = strSQL & "= tblEdifice.NUMERO_EDI) ON tblEvenement_Type.NUMERO_TYPE_EVENEMENT = tblEvenement.Type_Évènement "
        strSQL = strSQL & "WHERE (((tblUsager_Info.NUMERO_USAGER)>1"
        If strUser <> "" Then
            strSQL = strSQL & " And (tblUsager_Info.NUMERO_USAGER) " & strUser & ")"
        Else
            strSQL = strSQL & ")"
        End If
        If strSecteur <> "" Then
            strSQL = strSQL & " AND ((tblSecteur.NUMERO_SECTEUR) " & strSecteur & ")"
        End If
        If strÉdifice <> "" Then
            strSQL = strSQL & " AND ((tblEdifice.NUMERO_EDI) " & strÉdifice & ")"
        End If
        If strEvent <> "" Then
            strSQL = strSQL & " AND ((tblEvenement_Type.NUMERO_TYPE_EVENEMENT) " & strEvent & ")"
        End If
        If Me.txtDébut <> "" And Not IsNull(Me.txtDébut) Then
            strSQL = strSQL & " AND ((tblEvenement.Date_Évènement)>=#" & Me.txtDébut & "#)"
        End If
        If Me.txtFin <> "" And Not IsNull(Me.txtFin) Then
            strSQL = strSQL & " AND ((tblEvenement.Date_Évènement)<=#" & Me.txtFin & "#)"
        End If
        strSQL = strSQL & ");"
        Set db = CurrentDb
        Set qdf = db.QueryDefs("rqEvent")
        qdf.SQL = strSQL
        Set qdf = Nothing
        Set db = Nothing
     
    End Function

Discussions similaires

  1. Gestion des NULL dans les tables externes
    Par plouf2244 dans le forum Firebird
    Réponses: 1
    Dernier message: 23/03/2006, 16h55
  2. Gestion des .log sous Oracle
    Par SANOORA dans le forum Administration
    Réponses: 10
    Dernier message: 08/11/2004, 09h29
  3. Gestion des null
    Par Bruno75 dans le forum Décisions SGBD
    Réponses: 19
    Dernier message: 20/09/2004, 13h34
  4. Routines de gestion des ports sous Windows XP
    Par wiccanhelios dans le forum Windows
    Réponses: 2
    Dernier message: 14/11/2003, 08h02

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