OVH Cloud OVH Cloud

Syntaxe pour requête

3 réponses
Avatar
Sophie
Bonjour,

Je dois créer une requête qui provient de 2 autres requêtes, j'aimerais
savoir si possible qu'elle est la syntaxe pour créer mes requêtes
directement dans VB, j'utilise la méthode DAO, Voici les trois requêtes:

Première requête
---------------------
SELECT [Table ventes].*, [Table expcons].Shipper, [Table
expcons].AdresseShip, [Table expcons].VilleShip, [Table
expcons].ProvinceShip, [Table expcons].PaysShip, [Table expcons].CodeShip,
[Table expcons].ContactShip, [Table expcons].TelShip, [Table
expcons].Consignataire, [Table expcons].AdresseCons, [Table
expcons].VilleCons, [Table expcons].ProvinceCons, [Table expcons].PaysCons,
[Table expcons].CodePostCons, [Table expcons].ContactCons, [Table
expcons].TelCons, [Table clients].NomCli, [Table transpo].Nom,
TableAssureur.NomAssureur
FROM ((([Table ventes] LEFT JOIN [Table expcons] ON [Table ventes].NumVente
= [Table expcons].NumVente) INNER JOIN [Table clients] ON [Table
ventes].NumClient = [Table clients].Numéro) INNER JOIN [Table transpo] ON
[Table ventes].NumTransporteur = [Table transpo].Numéro) LEFT JOIN
TableAssureur ON [Table ventes].NumAssureur = TableAssureur.Numero
WHERE ((([Table ventes].Date) Between #4/1/2004# And #11/2/2004#) AND
(([Table ventes].Termine)=True) AND (([Table ventes].NoVente)<>26544));

Deuxième requête
-----------------------
SELECT [Table ventes].NoVente, [Table ventes].Termine
FROM [Table ventes]
WHERE ((([Table ventes].Termine)=False));

Dernière requête (les données dont j'ai besoin proviennent de cette requête)
----------------------------------------------------------------------------
-----
SELECT Premiere.*, Deuxieme.NoVente
FROM Premiere LEFT JOIN Deuxieme ON Premiere.NoVente = Deuxieme.NoVente
WHERE (((Deuxieme.NoVente) Is Null));

Merci d'avance,

Sophie

3 réponses

Avatar
Zoury
Salut Sophie!


essai ceci :

SELECT
Premiere.*,
Deuxieme.NoVente
FROM
(
SELECT
[Table ventes].*,
[Table expcons].Shipper,
[Table expcons].AdresseShip,
[Table expcons].VilleShip,
[Table expcons].ProvinceShip,
[Table expcons].PaysShip,
[Table expcons].CodeShip,
[Table expcons].ContactShip,
[Table expcons].TelShip,
[Table expcons].Consignataire,
[Table expcons].AdresseCons,
[Table expcons].VilleCons,
[Table expcons].ProvinceCons,
[Table expcons].PaysCons,
[Table expcons].CodePostCons,
[Table expcons].ContactCons,
[Table expcons].TelCons,
[Table clients].NomCli,
[Table transpo].Nom,
TableAssureur.NomAssureur
FROM
[Table ventes] LEFT JOIN
[Table expcons] ON [Table ventes].NumVente = [Table
expcons].NumVente INNER JOIN
[Table clients] ON [Table ventes].NumClient = [Table
clients].Numéro INNER JOIN
[Table transpo] ON [Table ventes].NumTransporteur = [Table
transpo].Numéro LEFT JOIN
TableAssureur ON [Table ventes].NumAssureur TableAssureur.Numero
WHERE
[Table ventes].Date Between #4/1/2004# And #11/2/2004# AND
[Table ventes].Termine = True AND
[Table ventes].NoVente<>26544
) Premiere LEFT JOIN
(
SELECT
[Table ventes].NoVente,
[Table ventes].Termine
FROM
[Table ventes]
WHERE
[Table ventes].Termine = False
) Deuxieme ON Premiere.NoVente = Deuxieme.NoVente
WHERE
Deuxieme.NoVente Is Null


tu peux utilisé une sous-requête dans la clause FROM en l'entourant de
parethèse et en donnant un nom au sous-ensemble, soit Premiere et Deuxieme
dans ce cas-ci...


--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic
"Sophie" a écrit dans le message de
news:%
Bonjour,

Je dois créer une requête qui provient de 2 autres requêtes, j'aimerais
savoir si possible qu'elle est la syntaxe pour créer mes requêtes
directement dans VB, j'utilise la méthode DAO, Voici les trois requêtes:

Première requête
---------------------
SELECT [Table ventes].*, [Table expcons].Shipper, [Table
expcons].AdresseShip, [Table expcons].VilleShip, [Table
expcons].ProvinceShip, [Table expcons].PaysShip, [Table expcons].CodeShip,
[Table expcons].ContactShip, [Table expcons].TelShip, [Table
expcons].Consignataire, [Table expcons].AdresseCons, [Table
expcons].VilleCons, [Table expcons].ProvinceCons, [Table


expcons].PaysCons,
[Table expcons].CodePostCons, [Table expcons].ContactCons, [Table
expcons].TelCons, [Table clients].NomCli, [Table transpo].Nom,
TableAssureur.NomAssureur
FROM ((([Table ventes] LEFT JOIN [Table expcons] ON [Table


ventes].NumVente
= [Table expcons].NumVente) INNER JOIN [Table clients] ON [Table
ventes].NumClient = [Table clients].Numéro) INNER JOIN [Table transpo] ON
[Table ventes].NumTransporteur = [Table transpo].Numéro) LEFT JOIN
TableAssureur ON [Table ventes].NumAssureur = TableAssureur.Numero
WHERE ((([Table ventes].Date) Between #4/1/2004# And #11/2/2004#) AND
(([Table ventes].Termine)=True) AND (([Table ventes].NoVente)<>26544));

Deuxième requête
-----------------------
SELECT [Table ventes].NoVente, [Table ventes].Termine
FROM [Table ventes]
WHERE ((([Table ventes].Termine)úlse));

Dernière requête (les données dont j'ai besoin proviennent de cette


requête)
--------------------------------------------------------------------------


--
-----
SELECT Premiere.*, Deuxieme.NoVente
FROM Premiere LEFT JOIN Deuxieme ON Premiere.NoVente = Deuxieme.NoVente
WHERE (((Deuxieme.NoVente) Is Null));

Merci d'avance,

Sophie






Avatar
Sophie
Bonjour Zoury,

Merci beaucoup pour votre aide, j'essaie votre code et je vous redonne des
nouvelles.

Merci encore,

Sophie

"Zoury" a écrit dans le message de
news:
Salut Sophie!


essai ceci :

SELECT
Premiere.*,
Deuxieme.NoVente
FROM
(
SELECT
[Table ventes].*,
[Table expcons].Shipper,
[Table expcons].AdresseShip,
[Table expcons].VilleShip,
[Table expcons].ProvinceShip,
[Table expcons].PaysShip,
[Table expcons].CodeShip,
[Table expcons].ContactShip,
[Table expcons].TelShip,
[Table expcons].Consignataire,
[Table expcons].AdresseCons,
[Table expcons].VilleCons,
[Table expcons].ProvinceCons,
[Table expcons].PaysCons,
[Table expcons].CodePostCons,
[Table expcons].ContactCons,
[Table expcons].TelCons,
[Table clients].NomCli,
[Table transpo].Nom,
TableAssureur.NomAssureur
FROM
[Table ventes] LEFT JOIN
[Table expcons] ON [Table ventes].NumVente = [Table
expcons].NumVente INNER JOIN
[Table clients] ON [Table ventes].NumClient = [Table
clients].Numéro INNER JOIN
[Table transpo] ON [Table ventes].NumTransporteur = [Table
transpo].Numéro LEFT JOIN
TableAssureur ON [Table ventes].NumAssureur > TableAssureur.Numero
WHERE
[Table ventes].Date Between #4/1/2004# And #11/2/2004# AND
[Table ventes].Termine = True AND
[Table ventes].NoVente<>26544
) Premiere LEFT JOIN
(
SELECT
[Table ventes].NoVente,
[Table ventes].Termine
FROM
[Table ventes]
WHERE
[Table ventes].Termine = False
) Deuxieme ON Premiere.NoVente = Deuxieme.NoVente
WHERE
Deuxieme.NoVente Is Null


tu peux utilisé une sous-requête dans la clause FROM en l'entourant de
parethèse et en donnant un nom au sous-ensemble, soit Premiere et Deuxieme
dans ce cas-ci...


--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic
"Sophie" a écrit dans le message de
news:%
> Bonjour,
>
> Je dois créer une requête qui provient de 2 autres requêtes, j'aimerais
> savoir si possible qu'elle est la syntaxe pour créer mes requêtes
> directement dans VB, j'utilise la méthode DAO, Voici les trois requêtes:
>
> Première requête
> ---------------------
> SELECT [Table ventes].*, [Table expcons].Shipper, [Table
> expcons].AdresseShip, [Table expcons].VilleShip, [Table
> expcons].ProvinceShip, [Table expcons].PaysShip, [Table


expcons].CodeShip,
> [Table expcons].ContactShip, [Table expcons].TelShip, [Table
> expcons].Consignataire, [Table expcons].AdresseCons, [Table
> expcons].VilleCons, [Table expcons].ProvinceCons, [Table
expcons].PaysCons,
> [Table expcons].CodePostCons, [Table expcons].ContactCons, [Table
> expcons].TelCons, [Table clients].NomCli, [Table transpo].Nom,
> TableAssureur.NomAssureur
> FROM ((([Table ventes] LEFT JOIN [Table expcons] ON [Table
ventes].NumVente
> = [Table expcons].NumVente) INNER JOIN [Table clients] ON [Table
> ventes].NumClient = [Table clients].Numéro) INNER JOIN [Table transpo]


ON
> [Table ventes].NumTransporteur = [Table transpo].Numéro) LEFT JOIN
> TableAssureur ON [Table ventes].NumAssureur = TableAssureur.Numero
> WHERE ((([Table ventes].Date) Between #4/1/2004# And #11/2/2004#) AND
> (([Table ventes].Termine)=True) AND (([Table ventes].NoVente)<>26544));
>
> Deuxième requête
> -----------------------
> SELECT [Table ventes].NoVente, [Table ventes].Termine
> FROM [Table ventes]
> WHERE ((([Table ventes].Termine)úlse));
>
> Dernière requête (les données dont j'ai besoin proviennent de cette
requête)

--------------------------------------------------------------------------
--
> -----
> SELECT Premiere.*, Deuxieme.NoVente
> FROM Premiere LEFT JOIN Deuxieme ON Premiere.NoVente = Deuxieme.NoVente
> WHERE (((Deuxieme.NoVente) Is Null));
>
> Merci d'avance,
>
> Sophie
>
>
>
>




Avatar
Sophie
Bonjour Zoury,

J'ai essayé votre code mais il y a une erreur, je reçois le message suivant:
élément non trouvé dans la collection No.Vente
Est ce que le problème peut venir du premier SELECT...

strSQL = "SELECT Premiere.*,Deuxieme.NoVente" & _
" FROM" & _
" (" & _
" SELECT" & _
" [Table ventes].*,[Table expcons].Shipper,[Table
expcons].AdresseShip,[Table expcons].VilleShip," & _
" [Table expcons].ProvinceShip,[Table expcons].PaysShip,[Table
expcons].CodeShip,[Table expcons].ContactShip," & _
" [Table expcons].TelShip,[Table expcons].Consignataire,[Table
expcons].AdresseCons,[Table expcons].VilleCons," & _
" [Table expcons].ProvinceCons,[Table expcons].PaysCons,[Table
expcons].CodePostCons,[Table expcons].ContactCons," & _
" [Table expcons].TelCons,[Table clients].NomCli,[Table
transpo].Nom,TableAssureur.NomAssureur" & _
" FROM ((([Table ventes] LEFT JOIN [Table expcons]" & _
" ON [Table ventes].NumVente = [Table expcons].NumVente)" & _
" INNER JOIN [Table clients] ON [Table ventes].NumClient [Table clients].Numéro)" & _
" INNER JOIN [Table transpo] ON [Table ventes].NumTransporteur
= [Table transpo].Numéro)" & _
" LEFT JOIN TableAssureur ON [Table ventes].NumAssureur TableAssureur.Numero" & _
" WHERE [Table ventes].Date Between #" & Debut & "# AND #" &
Fin & "#" & _
" AND[Table ventes].Termine = True" & _
" AND[Table ventes].NoVente <> " & dblMaxNum & "" & _
" ) Premiere LEFT JOIN" & _
" (" & _
" SELECT [Table ventes].NoVente, [Table ventes].Termine" & _
" FROM [Table ventes]" & _
" WHERE [Table ventes].Termine = False" & _
" ) Deuxieme ON Premiere.NoVente = Deuxieme.NoVente" & _
" WHERE Deuxieme.NoVente Is Null;"

Merci pour votre aide,

Sophie

"Zoury" a écrit dans le message de
news:
Salut Sophie!


essai ceci :

SELECT
Premiere.*,
Deuxieme.NoVente
FROM
(
SELECT
[Table ventes].*,
[Table expcons].Shipper,
[Table expcons].AdresseShip,
[Table expcons].VilleShip,
[Table expcons].ProvinceShip,
[Table expcons].PaysShip,
[Table expcons].CodeShip,
[Table expcons].ContactShip,
[Table expcons].TelShip,
[Table expcons].Consignataire,
[Table expcons].AdresseCons,
[Table expcons].VilleCons,
[Table expcons].ProvinceCons,
[Table expcons].PaysCons,
[Table expcons].CodePostCons,
[Table expcons].ContactCons,
[Table expcons].TelCons,
[Table clients].NomCli,
[Table transpo].Nom,
TableAssureur.NomAssureur
FROM
[Table ventes] LEFT JOIN
[Table expcons] ON [Table ventes].NumVente = [Table
expcons].NumVente INNER JOIN
[Table clients] ON [Table ventes].NumClient = [Table
clients].Numéro INNER JOIN
[Table transpo] ON [Table ventes].NumTransporteur = [Table
transpo].Numéro LEFT JOIN
TableAssureur ON [Table ventes].NumAssureur > TableAssureur.Numero
WHERE
[Table ventes].Date Between #4/1/2004# And #11/2/2004# AND
[Table ventes].Termine = True AND
[Table ventes].NoVente<>26544
) Premiere LEFT JOIN
(
SELECT
[Table ventes].NoVente,
[Table ventes].Termine
FROM
[Table ventes]
WHERE
[Table ventes].Termine = False
) Deuxieme ON Premiere.NoVente = Deuxieme.NoVente
WHERE
Deuxieme.NoVente Is Null


tu peux utilisé une sous-requête dans la clause FROM en l'entourant de
parethèse et en donnant un nom au sous-ensemble, soit Premiere et Deuxieme
dans ce cas-ci...


--
Cordialement
Yanick Lefebvre
MVP pour Visual Basic
"Sophie" a écrit dans le message de
news:%
> Bonjour,
>
> Je dois créer une requête qui provient de 2 autres requêtes, j'aimerais
> savoir si possible qu'elle est la syntaxe pour créer mes requêtes
> directement dans VB, j'utilise la méthode DAO, Voici les trois requêtes:
>
> Première requête
> ---------------------
> SELECT [Table ventes].*, [Table expcons].Shipper, [Table
> expcons].AdresseShip, [Table expcons].VilleShip, [Table
> expcons].ProvinceShip, [Table expcons].PaysShip, [Table


expcons].CodeShip,
> [Table expcons].ContactShip, [Table expcons].TelShip, [Table
> expcons].Consignataire, [Table expcons].AdresseCons, [Table
> expcons].VilleCons, [Table expcons].ProvinceCons, [Table
expcons].PaysCons,
> [Table expcons].CodePostCons, [Table expcons].ContactCons, [Table
> expcons].TelCons, [Table clients].NomCli, [Table transpo].Nom,
> TableAssureur.NomAssureur
> FROM ((([Table ventes] LEFT JOIN [Table expcons] ON [Table
ventes].NumVente
> = [Table expcons].NumVente) INNER JOIN [Table clients] ON [Table
> ventes].NumClient = [Table clients].Numéro) INNER JOIN [Table transpo]


ON
> [Table ventes].NumTransporteur = [Table transpo].Numéro) LEFT JOIN
> TableAssureur ON [Table ventes].NumAssureur = TableAssureur.Numero
> WHERE ((([Table ventes].Date) Between #4/1/2004# And #11/2/2004#) AND
> (([Table ventes].Termine)=True) AND (([Table ventes].NoVente)<>26544));
>
> Deuxième requête
> -----------------------
> SELECT [Table ventes].NoVente, [Table ventes].Termine
> FROM [Table ventes]
> WHERE ((([Table ventes].Termine)úlse));
>
> Dernière requête (les données dont j'ai besoin proviennent de cette
requête)

--------------------------------------------------------------------------
--
> -----
> SELECT Premiere.*, Deuxieme.NoVente
> FROM Premiere LEFT JOIN Deuxieme ON Premiere.NoVente = Deuxieme.NoVente
> WHERE (((Deuxieme.NoVente) Is Null));
>
> Merci d'avance,
>
> Sophie
>
>
>
>