OVH Cloud OVH Cloud

Démultiplication des données dans une req ajout

2 réponses
Avatar
Jean-Marc
Salut à tous,

Chaque semaine je reçois un fichier csv contenant les nouveaux clients.
J'importe ce fichier dans une nouvelle table.
Ensuite j'ai fait une requête ajout que voici afin de les ajouter dans la
table des contacts.
Toutefois, j'ai un problème et je n'arrive pas à trouver d'où il vient.
Chaque nouvel enregistrement est multiplié par le nombre d'enregistrement de
la table de destination.
Par exemple, cette semaine j'ai 65 nouveaux clients et dans la table des
clients existants, il y a 2442 clients.
Il importe 2442 fois chaque nouveau client.

Pourquoi ?
Qu'ai-je mal fait ?

Voici le SQL de la requête :

INSERT INTO Contacts ( ImportéRécent, Prénom, NomFamille, Adresse, Ville,
CodePostal, RefEtat, NomSociété, TélPersonnel, NomCourrierÉlec )
SELECT Yes AS Expr3, NomPropre([00005302]![FIRST]) AS Expr1,
NomPropre([00005302]![LAST]) AS Expr2, [00005302].ADDRESS1, [00005302].CITY,
[00005302].ZIP, Etats.RefEtat, [00005302].COMPANY, [00005302].PHONE,
[00005302].EMAIL
FROM Contacts, 00005302 INNER JOIN Etats ON [00005302].STATE =
Etats.AbréviationEtat
ORDER BY NomPropre([00005302]![LAST]);


Merci de vos z'avis z'avisés

Jean-Marc

PS : La table de destination est Contacts
La table d'origine (Importation) est 00005302 dans laquelle il y a un
champs STATE qui contient l'abréviation de l'état du client. Il s'agit donc
d'aller dans la table Etats pour trouver la valeur de RefEtat
(correspondance de [00005302].[STATE] avec [Etat].[AbreviationEtat]) et le
placer dans [Contacts].[RefEtat]

2 réponses

Avatar
Raymond [mvp]
Bonjour.

une simple idée, pourquoi FROM Contacts ? ne serait-ce pas plutôt FROM
[00005302] ?
et pourquoi le INNER JOIN ? ce n'est pas nécessaire ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jean-Marc" a écrit dans le message de news:

Salut à tous,

Chaque semaine je reçois un fichier csv contenant les nouveaux clients.
J'importe ce fichier dans une nouvelle table.
Ensuite j'ai fait une requête ajout que voici afin de les ajouter dans la
table des contacts.
Toutefois, j'ai un problème et je n'arrive pas à trouver d'où il vient.
Chaque nouvel enregistrement est multiplié par le nombre d'enregistrement
de
la table de destination.
Par exemple, cette semaine j'ai 65 nouveaux clients et dans la table des
clients existants, il y a 2442 clients.
Il importe 2442 fois chaque nouveau client.

Pourquoi ?
Qu'ai-je mal fait ?

Voici le SQL de la requête :

INSERT INTO Contacts ( ImportéRécent, Prénom, NomFamille, Adresse, Ville,
CodePostal, RefEtat, NomSociété, TélPersonnel, NomCourrierÉlec )
SELECT Yes AS Expr3, NomPropre([00005302]![FIRST]) AS Expr1,
NomPropre([00005302]![LAST]) AS Expr2, [00005302].ADDRESS1,
[00005302].CITY,
[00005302].ZIP, Etats.RefEtat, [00005302].COMPANY, [00005302].PHONE,
[00005302].EMAIL
FROM Contacts, 00005302 INNER JOIN Etats ON [00005302].STATE > Etats.AbréviationEtat
ORDER BY NomPropre([00005302]![LAST]);


Merci de vos z'avis z'avisés

Jean-Marc

PS : La table de destination est Contacts
La table d'origine (Importation) est 00005302 dans laquelle il y a
un
champs STATE qui contient l'abréviation de l'état du client. Il s'agit
donc
d'aller dans la table Etats pour trouver la valeur de RefEtat
(correspondance de [00005302].[STATE] avec [Etat].[AbreviationEtat]) et le
placer dans [Contacts].[RefEtat]






Avatar
Jean-Marc
Merci Raymond,

C'était le From Contact qui posait pbl.
Par contre si le Inner Join n'est pas là, il envoie une boîte de dialogue
pour demander la valeur de Etats.RefEtat

Jean-Marc

"Raymond [mvp]" a écrit dans le message de
news:%
Bonjour.

une simple idée, pourquoi FROM Contacts ? ne serait-ce pas plutôt FROM
[00005302] ?
et pourquoi le INNER JOIN ? ce n'est pas nécessaire ?

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jean-Marc" a écrit dans le message de
news:


Salut à tous,

Chaque semaine je reçois un fichier csv contenant les nouveaux clients.
J'importe ce fichier dans une nouvelle table.
Ensuite j'ai fait une requête ajout que voici afin de les ajouter dans
la


table des contacts.
Toutefois, j'ai un problème et je n'arrive pas à trouver d'où il vient.
Chaque nouvel enregistrement est multiplié par le nombre
d'enregistrement


de
la table de destination.
Par exemple, cette semaine j'ai 65 nouveaux clients et dans la table des
clients existants, il y a 2442 clients.
Il importe 2442 fois chaque nouveau client.

Pourquoi ?
Qu'ai-je mal fait ?

Voici le SQL de la requête :

INSERT INTO Contacts ( ImportéRécent, Prénom, NomFamille, Adresse,
Ville,


CodePostal, RefEtat, NomSociété, TélPersonnel, NomCourrierÉlec )
SELECT Yes AS Expr3, NomPropre([00005302]![FIRST]) AS Expr1,
NomPropre([00005302]![LAST]) AS Expr2, [00005302].ADDRESS1,
[00005302].CITY,
[00005302].ZIP, Etats.RefEtat, [00005302].COMPANY, [00005302].PHONE,
[00005302].EMAIL
FROM Contacts, 00005302 INNER JOIN Etats ON [00005302].STATE > > Etats.AbréviationEtat
ORDER BY NomPropre([00005302]![LAST]);


Merci de vos z'avis z'avisés

Jean-Marc

PS : La table de destination est Contacts
La table d'origine (Importation) est 00005302 dans laquelle il y a
un
champs STATE qui contient l'abréviation de l'état du client. Il s'agit
donc
d'aller dans la table Etats pour trouver la valeur de RefEtat
(correspondance de [00005302].[STATE] avec [Etat].[AbreviationEtat]) et
le


placer dans [Contacts].[RefEtat]