Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Is null = all

2 réponses
Avatar
Line
Bonsoir tout le monde,

Merci de prendre le temps de me venir en aide car j'en suis à mes bébuts en
access 2003.

J'ai un formulaire avec des champs de saisie en liste déroulante dans
chacun des champs.

Je veux faire afficher les résultats selon les critères sélectionnés et tout
ça en vb.
Mon problème est que si je n'entre pas de valeur dans une liste déroulante,
je voudrais que le recorset considère que la valeur par défaut soit '*'.

Donc dans mon code je valide si la valeur est null je mets '*' dans la string.

Lorsque j'exécute mon recorset ne me retoune rien mais pourtant je sais
qu'il y a au moins deux enregistrements qui devraient être retournés.

Voici le code :


If Not IsNull(Me.mdStatusProjet) Then
mdStatusProjet = "'*'"
Else
mdStatusProjet = Me.mdStatusProjet
End If

Set db = CurrentDb()
Set rst = db.OpenRecordset("SELECT DISTINCT [Projet Principal].[No
Projet principal], [Projet Principal].Titre, [Projet Principal].Produit,
[Projet Principal].MY, [Type pub tech].[Type pub tech], [Type pub
tech].[Lt(1) - CT(2)], [Sous-projet].[No S-projet], [Sous-projet].[No
S-projet SAV], [Sous-projet].Description, [suivi date].[date envoyé], [suivi
date].[date butoir], [suivi date].[date reçue], [suivi date].contact, [nom]
AS Responsable, [Sous-projet].Service " & _
"FROM ([Projet Principal] LEFT JOIN [Type pub tech] ON [Projet
Principal].FkTypePubTech=[Type pub tech].[No type pub tech]) INNER JOIN
([Liste employé] INNER JOIN (([Sous-projet] LEFT JOIN TbSousTypesPubTech ON
[Sous-projet].FkSousTypePubTech=TbSousTypesPubTech.PkSousTypePubTech) LEFT
JOIN [suivi date] ON [Sous-projet].[No S-projet]=[suivi date].[s-projet]) ON
[Liste employé].[No employé]=[Sous-projet].[Resp Rédaction]) ON [Projet
Principal].[No Projet principal]=[Sous-projet].[No projet principal]" & _
"WHERE [Projet Principal].Titre= '" & strModProjet & "' And
[Projet Principal].Produit='" & strProduit & "' And [Projet Principal].MY=" &
strMy & " And [Type pub tech].[Lt(1) - CT(2)]=" & strModTerme & "")

While Not rst.EOF
MsgBox rst("titre")
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set db = Nothing

Quel est le problème ?

merci pour tout

2 réponses

Avatar
Dragan
Bonjour Line,
tu as visiblement écrit le contraire de ce que tu souhaites.
essaie en enlevant le Not dans la ligne 'If Not IsNull'

"Line" a écrit :

Bonsoir tout le monde,

Merci de prendre le temps de me venir en aide car j'en suis à mes bébuts en
access 2003.

J'ai un formulaire avec des champs de saisie en liste déroulante dans
chacun des champs.

Je veux faire afficher les résultats selon les critères sélectionnés et tout
ça en vb.
Mon problème est que si je n'entre pas de valeur dans une liste déroulante,
je voudrais que le recorset considère que la valeur par défaut soit '*'.

Donc dans mon code je valide si la valeur est null je mets '*' dans la string.

Lorsque j'exécute mon recorset ne me retoune rien mais pourtant je sais
qu'il y a au moins deux enregistrements qui devraient être retournés.

Voici le code :


If Not IsNull(Me.mdStatusProjet) Then
mdStatusProjet = "'*'"
Else
mdStatusProjet = Me.mdStatusProjet
End If

Set db = CurrentDb()
Set rst = db.OpenRecordset("SELECT DISTINCT [Projet Principal].[No
Projet principal], [Projet Principal].Titre, [Projet Principal].Produit,
[Projet Principal].MY, [Type pub tech].[Type pub tech], [Type pub
tech].[Lt(1) - CT(2)], [Sous-projet].[No S-projet], [Sous-projet].[No
S-projet SAV], [Sous-projet].Description, [suivi date].[date envoyé], [suivi
date].[date butoir], [suivi date].[date reçue], [suivi date].contact, [nom]
AS Responsable, [Sous-projet].Service " & _
"FROM ([Projet Principal] LEFT JOIN [Type pub tech] ON [Projet
Principal].FkTypePubTech=[Type pub tech].[No type pub tech]) INNER JOIN
([Liste employé] INNER JOIN (([Sous-projet] LEFT JOIN TbSousTypesPubTech ON
[Sous-projet].FkSousTypePubTech=TbSousTypesPubTech.PkSousTypePubTech) LEFT
JOIN [suivi date] ON [Sous-projet].[No S-projet]=[suivi date].[s-projet]) ON
[Liste employé].[No employé]=[Sous-projet].[Resp Rédaction]) ON [Projet
Principal].[No Projet principal]=[Sous-projet].[No projet principal]" & _
"WHERE [Projet Principal].Titre= '" & strModProjet & "' And
[Projet Principal].Produit='" & strProduit & "' And [Projet Principal].MY=" &
strMy & " And [Type pub tech].[Lt(1) - CT(2)]=" & strModTerme & "")

While Not rst.EOF
MsgBox rst("titre")
rst.MoveNext
Wend
rst.Close
Set rst = Nothing
Set db = Nothing

Quel est le problème ?

merci pour tout


Avatar
Michel__D
Bonjour,

"Dragan" a écrit dans le message de news:
Bonjour Line,
tu as visiblement écrit le contraire de ce que tu souhaites.
essaie en enlevant le Not dans la ligne 'If Not IsNull'



Oui, mais cela ne devrait pas changer grand chose car le SQL du recordset
ne mentionne pas cette variable ou ce champ [mdStatusProjet].

"Line" a écrit :

> Bonsoir tout le monde,
>
> Merci de prendre le temps de me venir en aide car j'en suis à mes bébuts en
> access 2003.
>
> J'ai un formulaire avec des champs de saisie en liste déroulante dans
> chacun des champs.
>
> Je veux faire afficher les résultats selon les critères sélectionnés et tout
> ça en vb.
> Mon problème est que si je n'entre pas de valeur dans une liste déroulante,
> je voudrais que le recorset considère que la valeur par défaut soit '*'.
>
> Donc dans mon code je valide si la valeur est null je mets '*' dans la string.
>
> Lorsque j'exécute mon recorset ne me retoune rien mais pourtant je sais
> qu'il y a au moins deux enregistrements qui devraient être retournés.
>
> Voici le code :
>
>
> If Not IsNull(Me.mdStatusProjet) Then
> mdStatusProjet = "'*'"
> Else
> mdStatusProjet = Me.mdStatusProjet
> End If
>
> Set db = CurrentDb()
> Set rst = db.OpenRecordset("SELECT DISTINCT [Projet Principal].[No
> Projet principal], [Projet Principal].Titre, [Projet Principal].Produit,
> [Projet Principal].MY, [Type pub tech].[Type pub tech], [Type pub
> tech].[Lt(1) - CT(2)], [Sous-projet].[No S-projet], [Sous-projet].[No
> S-projet SAV], [Sous-projet].Description, [suivi date].[date envoyé], [suivi
> date].[date butoir], [suivi date].[date reçue], [suivi date].contact, [nom]
> AS Responsable, [Sous-projet].Service " & _
> "FROM ([Projet Principal] LEFT JOIN [Type pub tech] ON [Projet
> Principal].FkTypePubTech=[Type pub tech].[No type pub tech]) INNER JOIN
> ([Liste employé] INNER JOIN (([Sous-projet] LEFT JOIN TbSousTypesPubTech ON
> [Sous-projet].FkSousTypePubTech=TbSousTypesPubTech.PkSousTypePubTech) LEFT
> JOIN [suivi date] ON [Sous-projet].[No S-projet]=[suivi date].[s-projet]) ON
> [Liste employé].[No employé]=[Sous-projet].[Resp Rédaction]) ON [Projet
> Principal].[No Projet principal]=[Sous-projet].[No projet principal]" & _
> "WHERE [Projet Principal].Titre= '" & strModProjet & "' And
> [Projet Principal].Produit='" & strProduit & "' And [Projet Principal].MY=" &
> strMy & " And [Type pub tech].[Lt(1) - CT(2)]=" & strModTerme & "")
>
> While Not rst.EOF
> MsgBox rst("titre")
> rst.MoveNext
> Wend
> rst.Close
> Set rst = Nothing
> Set db = Nothing
>
> Quel est le problème ?
>
> merci pour tout