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

ajouter une condition dans un Where (sql)

4 réponses
Avatar
Gundt
Bonsoir à tous,

J'avais une requête qui fonctionnait bien. Mais je voudrais y ajouter
une condition supplémentaire avec Access 97.

sql2 = "INSERT INTO [LIGNES BL TEMP] ( [N°BL_temp] ) SELECT [LIGNES
CDES].*, BL.[N°BL] " _
& " FROM BL INNER JOIN [LIGNES CDES] ON BL.[N°Cde] = [LIGNES
CDES].[N°Cde] " _
& " WHERE (((BL.[N°BL])=[Forms]![BL malades]![N°BL]));"

Je voudrais ajouter la condition suivante :
AND ([SERVICES].[Factureindividuelle]=Yes)

[Factureindividuelle] : champ de table SERVICES

alors je l'ai écrite comme ceci à partir du where

& " WHERE (((BL.[N°BL])=[Forms]![BL malades]![N°BL]) AND
([SERVICES].[Factureindividuelle]=Yes));

Mais il me dit qu'il y a une erreur de syntaxe après le where.

Merci d'avance.

Gundt

4 réponses

Avatar
Gundt
Bonsoir à tous,
...


Je viens d'essayer ceci :
sql2 = "INSERT INTO [LIGNES BL TEMP] ( [N°BL_temp] )" _
& "SELECT [LIGNES CDES].*, BL.[N°BL]" _
& "FROM SERVICES INNER JOIN " _
& "(CLIENTS INNER JOIN (BL INNER JOIN [LIGNES CDES] ON BL.[N°Cde] =
[LIGNES CDES].[N°Cde]) " _
& "ON CLIENTS.Codeclient = BL.CodeClien) ON SERVICES.Codeservice =
CLIENTS.[Code service] " _
& "WHERE (((BL.[N°BL])=[Forms]![BL malades]![N°BL]) AND
((SERVICES.Factureindividuelle)=Yes));"


DoCmd.RunSQL sql2

Il n'y a plus d'erreur de compil mais la condition fonctionne apparemment.
Je referai des tests demain pour vérifier.

Excusez du bruit.

Gundt

Avatar
Eric
Bonsoir,

[Factureindividuelle] appartenant à la table Services, il te faut faire
une jointure supplémentaire car ce champ est absent des tables BL &
[LIGNES CDES].

La clause FROM pourrait ressembler à quelque chose comme:
(Adapter le nom de la table et du champ commun)

FROM (BL INNER JOIN [LIGNES CDES]
ON BL.[N°Cde] = [LIGNES CDES].[N°Cde])
INNER JOIN SERVICES ON
SERVICES.ChampCommun = BL(ou [LIGNES CDES]).ChampCommun

Pour le WHERE:
WHERE BL.[N°BL]=[Forms]![BL malades]![N°BL]
AND [SERVICES].[Factureindividuelle]=Yes;

Là encore, je serai enclin à sortir le [Forms]![BL malades]![N°BL] de la
chaine SQL.
" WHERE BL.[N°BL]=" & [Forms]![BL malades]![N°BL] & " AND
[SERVICES].[Factureindividuelle]=Yes;"



Bonsoir à tous,

J'avais une requête qui fonctionnait bien. Mais je voudrais y ajouter
une condition supplémentaire avec Access 97.

sql2 = "INSERT INTO [LIGNES BL TEMP] ( [N°BL_temp] ) SELECT [LIGNES
CDES].*, BL.[N°BL] " _
& " FROM BL INNER JOIN [LIGNES CDES] ON BL.[N°Cde] = [LIGNES
CDES].[N°Cde] " _
& " WHERE (((BL.[N°BL])=[Forms]![BL malades]![N°BL]));"

Je voudrais ajouter la condition suivante :
AND ([SERVICES].[Factureindividuelle]=Yes)

[Factureindividuelle] : champ de table SERVICES

alors je l'ai écrite comme ceci à partir du where

& " WHERE (((BL.[N°BL])=[Forms]![BL malades]![N°BL]) AND
([SERVICES].[Factureindividuelle]=Yes));

Mais il me dit qu'il y a une erreur de syntaxe après le where.

Merci d'avance.

Gundt


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Gundt
bonjour,

J'ai remodifié et ça marche. J'ai fait comme ceci même si je ne sais pas
si c'est la façon la plus élégante :
sql3 = "INSERT INTO [BL TEMP] ( NumBL, [N°BL_temp], [N°Cde_temp],
DateBL_temp, DateSortie_temp, TypeBL_temp, Facturé_temp, CodeClient )" _
& "SELECT BL.NumBL, BL.[N°BL], BL.[N°Cde], BL.DateBL, BL.DateSortie,
BL.TypeBL, BL.Facturé, BL.CodeClien " _
& "FROM SERVICES INNER JOIN (CLIENTS INNER JOIN BL ON CLIENTS.Codeclient
= BL.CodeClien) ON SERVICES.Codeservice = CLIENTS.[Code service] " _
& "WHERE (((BL.[N°BL])=[Forms]![BL malades]![N°BL]) AND
((SERVICES.Factureindividuelle)=Yes));"


Bonsoir,

[Factureindividuelle] appartenant à la table Services, il te faut faire
une jointure supplémentaire car ce champ est absent des tables BL &
[LIGNES CDES].
oui, j'avais ajouté dans la table BL le champ facturé de type O/N mais

je ne l'ai pas renseigné (je ne savais pas faire et j'ai fait autrement).
Mais cela aurait été certainement plus propre comme code.

La clause FROM pourrait ressembler à quelque chose comme:
(Adapter le nom de la table et du champ commun)

FROM (BL INNER JOIN [LIGNES CDES]
ON BL.[N°Cde] = [LIGNES CDES].[N°Cde])
INNER JOIN SERVICES ON
SERVICES.ChampCommun = BL(ou [LIGNES CDES]).ChampCommun
oui, c'est donc le champ facturé de la table BL.

Quand je coche manuellement le champ Facturé certains enregistrements de
la table BL, j'arrive facilement à ajouter dans la table BL TEMP.

Pour le WHERE:
WHERE BL.[N°BL]=[Forms]![BL malades]![N°BL]
AND [SERVICES].[Factureindividuelle]=Yes;

Là encore, je serai enclin à sortir le [Forms]![BL malades]![N°BL] de la
chaine SQL.
" WHERE BL.[N°BL]=" & [Forms]![BL malades]![N°BL] & " AND
[SERVICES].[Factureindividuelle]=Yes;"
Je n'ai pas trop compris cette technique que tu m'avais donné comme

solution la semaine dernière et hier : les & que l'on retrouve avant et
après le nom d'un ctrl de forms.

Quel avantage à écrire cela de cette façon ?

Un grand merci encore à Eric.

Gundt

Avatar
Eric
Bonjour,

Ne connaisssant pas la structure des tables donc les jointures
necessaires, je ne peux juger. Mais si ca marche c'est l'essentiel.


bonjour,

J'ai remodifié et ça marche. J'ai fait comme ceci même si je ne sais pas
si c'est la façon la plus élégante :
sql3 = "INSERT INTO [BL TEMP] ( NumBL, [N°BL_temp], [N°Cde_temp],
DateBL_temp, DateSortie_temp, TypeBL_temp, Facturé_temp, CodeClient )" _
& "SELECT BL.NumBL, BL.[N°BL], BL.[N°Cde], BL.DateBL, BL.DateSortie,
BL.TypeBL, BL.Facturé, BL.CodeClien " _
& "FROM SERVICES INNER JOIN (CLIENTS INNER JOIN BL ON CLIENTS.Codeclient
= BL.CodeClien) ON SERVICES.Codeservice = CLIENTS.[Code service] " _
& "WHERE (((BL.[N°BL])=[Forms]![BL malades]![N°BL]) AND
((SERVICES.Factureindividuelle)=Yes));"





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr