Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2010, 00h38   #1
Nouveau Membre du Club
 
Homme Alf Cedano
Inscription : septembre 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Homme Alf Cedano
Localisation : France, Cher (Centre)

Informations forums :
Inscription : septembre 2010
Messages : 71
Points : 30
Points : 30
Par défaut Requête multicritère dont un critère possible null

Bonjour à tous.

Je voudrais faire une requête avec trois critères, mais il se peut que des trois critères un soit null. Si c'est le cas, la requête ne me montre rien et je voudrais qu'elle me montre les enregistrements qui contiennent les des critères qui ont de valeur.

Voici l'instruction SQL, que je passe a un recordset:

Code :
1
2
        strSQL = "SELECT * FROM qryIds  WHERE IdA =" & intIdA & "" _
                 & " AND IdB =" & IntIdB & " AND IdC =" & intIdC & ""
Supposons que IdB ne contient pas de valeur, l'instruction SQL me donne cela:
Code :
SELECT * FROM qryIds  WHERE IdA =10 AND IdB =0 AND IdC =7387
Comment faire pour que Access ne me mette pas 0 dans la valeur nulle?

Merci d'avance.
alfhcg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 08h30   #2
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
Bonjour,

Je suppose que IntIdB est un integer. Or un integer ne peut pas être null.
Peut-être que
Code :
... " AND nz(IdB, 0) = " & IntIdB & "...
peut convenir.
Sinon, il faudrait transformer IntIdB en variant pour qu'il puisse prendre la valeur Null.
Code :
... " AND " & iif (isnull(IntIdB), "", "IdB = " & IntIdB & " and ") & "...
__________________
[Access] Les bases du débogage => ici
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 23h26   #3
Nouveau Membre du Club
 
Homme Alf Cedano
Inscription : septembre 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Homme Alf Cedano
Localisation : France, Cher (Centre)

Informations forums :
Inscription : septembre 2010
Messages : 71
Points : 30
Points : 30
Bonjour.
Merci pour la réponse.
J'ai opté pour la solution suivante, en regardant ce qui fait le générateur de requêtes de Access.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
    strSQL = "SELECT * FROM qryIds WHERE "
 
    If intIdA = 0 Then
        strSQL = strSQL & "IdA Is Null" & ""
    Else
        strSQL = strSQL & "IdA =" & intIdA & ""
    End If
 
    If intIdB = 0 Then
        strCritere = "IdB Is Null" & ""
    Else
        strCritere = "IdB =" & intIdB & ""
    End If
    strSQL = strSQL & " AND " & strCritere
 
    If intIdC= 0 Then
        strCritere = "IdC Is Null" & ""
    Else
        strCritere = "IdC =" & intIdC& ""
    End If
        strSQL = strSQL & " AND " & strCritere
Je vais marquer résolu.

Merci encore.
alfhcg est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h18.


 
 
 
 
Partenaires

Hébergement Web