Dans un bdd en Access 2000 j'ai 2 tables liées. L'une contient les Contacts
et l'autre les envois qui ont été effectués.
Les tables sont liées par le champs RéfContact.
Dans la table Contacts existe un champs ImprimerEtiquette qui est de type
Yes/No.
Dans l'état qui me sert à imprimer les étiquettes, j'ai créé une procédure
de fermeture qui devrait mettre le champs ImprimerEtiquette à No.
Dans la table Envois, je voudrais qu'un nouveau champs se crée pour chaque
record de l'état. Dans la procédure j'utilise des inputbox pour définir la
date de l'envoi et la personne qui a effectué l'envoi.
J'ai essayé une requête de mise à jour qui fonctionne bien quand il n'y a
encore aucun enregistrement relié à ce contact dans la table Envois. Par
contre si plusieurs envois pour ce contact existent déjà, tous ces champs
sont mis à jours, ce qui est logique mais évidemment pas ce que je
recherche.
J'ai essayé de créer une requête ajout mais là j'ai d'autres types de
problèmes : S'il n'y a aucun record lié à ce contact dans la table envoi, il
n'ajoute aucune ligne. Par contre si j'ai déjà 3 record d'envois pour ce
contact, il m'ajoutera 3 lignes avec les données que j'ai effectivement
introduites par les inputbox.
Quelle est mon erreur ?
Voici les SQL :
DoCmd.RunSQL "UPDATE DISTINCTROW (Etats RIGHT JOIN Contacts ON Etats.RefEtat
= Contacts.RefEtat) LEFT JOIN Envois ON Contacts.RéfContact =
Envois.RéfContact SET Envois.RéfContact = [contacts].[réfcontact],
Envois.DateEnvoi = #" & Format(DateEnvoye, "mm/dd/yyyy") & "#,
Envois.Description = 'Brochure Info', Envois.Personnel = '" & Personne & "',
Contacts.ImprimerEtiquette = 'No' WHERE
(((Contacts.ImprimerEtiquette)=Yes));"
DoCmd.RunSQL "INSERT INTO Envois ( RéfContact, DateEnvoi, Description,
Personnel ) SELECT DISTINCTROW Envois.RéfContact, '" & DateEnvoye & "' AS
Expr1, 'Brochure info' AS Expr2, '" & Personne & "' AS Expr3 FROM (Etats
RIGHT JOIN Contacts ON Etats.RefEtat = Contacts.RefEtat) LEFT JOIN Envois ON
Contacts.RéfContact = Envois.RéfContact WHERE
(((Contacts.ImprimerEtiquette)=Yes));"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc
A force de chercher j'ai fini par trouver. Pour ceux que cela intéresse, voici la solution. C'était pourtant évident ... Trop, peut-être ... En fait je reprenais le RéfContact dans la table Envois, donc la requête ajoutait une ligne à chaque fois qu'elle trouvait le RéfContact dans la table Envois. Il fallait définir d'introduire le RéfContact de la table Contacts dans la nouvelle ligne a ouvrir.
La solution était donc :
INSERT INTO Envois ( DateEnvoi, Description, Personnel, RéfContact ) SELECT DISTINCTROW '" & DateEnvoye & "', 'Brochure info', '" & Personne & "', [Contacts].[RéfContact] FROM Contacts LEFT JOIN Envois ON Contacts.RéfContact = Envois.RéfContact WHERE (((Contacts.ImprimerEtiquette)=Yes));
JM
"Jean-Marc" a écrit dans le message de news:
Salut à tous,
Dans un bdd en Access 2000 j'ai 2 tables liées. L'une contient les Contacts
et l'autre les envois qui ont été effectués. Les tables sont liées par le champs RéfContact.
Dans la table Contacts existe un champs ImprimerEtiquette qui est de type Yes/No.
Dans l'état qui me sert à imprimer les étiquettes, j'ai créé une procédure de fermeture qui devrait mettre le champs ImprimerEtiquette à No. Dans la table Envois, je voudrais qu'un nouveau champs se crée pour chaque record de l'état. Dans la procédure j'utilise des inputbox pour définir la date de l'envoi et la personne qui a effectué l'envoi. J'ai essayé une requête de mise à jour qui fonctionne bien quand il n'y a encore aucun enregistrement relié à ce contact dans la table Envois. Par contre si plusieurs envois pour ce contact existent déjà, tous ces champs sont mis à jours, ce qui est logique mais évidemment pas ce que je recherche. J'ai essayé de créer une requête ajout mais là j'ai d'autres types de problèmes : S'il n'y a aucun record lié à ce contact dans la table envoi, il
n'ajoute aucune ligne. Par contre si j'ai déjà 3 record d'envois pour ce contact, il m'ajoutera 3 lignes avec les données que j'ai effectivement introduites par les inputbox.
Quelle est mon erreur ?
Voici les SQL :
DoCmd.RunSQL "UPDATE DISTINCTROW (Etats RIGHT JOIN Contacts ON Etats.RefEtat
Contacts.ImprimerEtiquette = 'No' WHERE (((Contacts.ImprimerEtiquette)=Yes));"
DoCmd.RunSQL "INSERT INTO Envois ( RéfContact, DateEnvoi, Description, Personnel ) SELECT DISTINCTROW Envois.RéfContact, '" & DateEnvoye & "' AS Expr1, 'Brochure info' AS Expr2, '" & Personne & "' AS Expr3 FROM (Etats RIGHT JOIN Contacts ON Etats.RefEtat = Contacts.RefEtat) LEFT JOIN Envois ON
Contacts.RéfContact = Envois.RéfContact WHERE (((Contacts.ImprimerEtiquette)=Yes));"
Merci de vos z'avis z'avisés,
JM
A force de chercher j'ai fini par trouver.
Pour ceux que cela intéresse, voici la solution.
C'était pourtant évident ...
Trop, peut-être ...
En fait je reprenais le RéfContact dans la table Envois, donc la requête
ajoutait une ligne à chaque fois qu'elle trouvait le RéfContact dans la
table Envois.
Il fallait définir d'introduire le RéfContact de la table Contacts dans la
nouvelle ligne a ouvrir.
La solution était donc :
INSERT INTO Envois ( DateEnvoi, Description, Personnel, RéfContact ) SELECT
DISTINCTROW '" & DateEnvoye & "', 'Brochure info', '" & Personne & "',
[Contacts].[RéfContact] FROM Contacts LEFT JOIN Envois ON
Contacts.RéfContact = Envois.RéfContact WHERE
(((Contacts.ImprimerEtiquette)=Yes));
JM
"Jean-Marc" <NoSpam.jm.deneyer@advalvas.be> a écrit dans le message de
news:OWZUC9qXEHA.1888@TK2MSFTNGP10.phx.gbl...
Salut à tous,
Dans un bdd en Access 2000 j'ai 2 tables liées. L'une contient les
Contacts
et l'autre les envois qui ont été effectués.
Les tables sont liées par le champs RéfContact.
Dans la table Contacts existe un champs ImprimerEtiquette qui est de type
Yes/No.
Dans l'état qui me sert à imprimer les étiquettes, j'ai créé une procédure
de fermeture qui devrait mettre le champs ImprimerEtiquette à No.
Dans la table Envois, je voudrais qu'un nouveau champs se crée pour chaque
record de l'état. Dans la procédure j'utilise des inputbox pour définir la
date de l'envoi et la personne qui a effectué l'envoi.
J'ai essayé une requête de mise à jour qui fonctionne bien quand il n'y a
encore aucun enregistrement relié à ce contact dans la table Envois. Par
contre si plusieurs envois pour ce contact existent déjà, tous ces champs
sont mis à jours, ce qui est logique mais évidemment pas ce que je
recherche.
J'ai essayé de créer une requête ajout mais là j'ai d'autres types de
problèmes : S'il n'y a aucun record lié à ce contact dans la table envoi,
il
n'ajoute aucune ligne. Par contre si j'ai déjà 3 record d'envois pour ce
contact, il m'ajoutera 3 lignes avec les données que j'ai effectivement
introduites par les inputbox.
Quelle est mon erreur ?
Voici les SQL :
DoCmd.RunSQL "UPDATE DISTINCTROW (Etats RIGHT JOIN Contacts ON
Etats.RefEtat
Contacts.ImprimerEtiquette = 'No' WHERE
(((Contacts.ImprimerEtiquette)=Yes));"
DoCmd.RunSQL "INSERT INTO Envois ( RéfContact, DateEnvoi, Description,
Personnel ) SELECT DISTINCTROW Envois.RéfContact, '" & DateEnvoye & "' AS
Expr1, 'Brochure info' AS Expr2, '" & Personne & "' AS Expr3 FROM (Etats
RIGHT JOIN Contacts ON Etats.RefEtat = Contacts.RefEtat) LEFT JOIN Envois
ON
Contacts.RéfContact = Envois.RéfContact WHERE
(((Contacts.ImprimerEtiquette)=Yes));"
A force de chercher j'ai fini par trouver. Pour ceux que cela intéresse, voici la solution. C'était pourtant évident ... Trop, peut-être ... En fait je reprenais le RéfContact dans la table Envois, donc la requête ajoutait une ligne à chaque fois qu'elle trouvait le RéfContact dans la table Envois. Il fallait définir d'introduire le RéfContact de la table Contacts dans la nouvelle ligne a ouvrir.
La solution était donc :
INSERT INTO Envois ( DateEnvoi, Description, Personnel, RéfContact ) SELECT DISTINCTROW '" & DateEnvoye & "', 'Brochure info', '" & Personne & "', [Contacts].[RéfContact] FROM Contacts LEFT JOIN Envois ON Contacts.RéfContact = Envois.RéfContact WHERE (((Contacts.ImprimerEtiquette)=Yes));
JM
"Jean-Marc" a écrit dans le message de news:
Salut à tous,
Dans un bdd en Access 2000 j'ai 2 tables liées. L'une contient les Contacts
et l'autre les envois qui ont été effectués. Les tables sont liées par le champs RéfContact.
Dans la table Contacts existe un champs ImprimerEtiquette qui est de type Yes/No.
Dans l'état qui me sert à imprimer les étiquettes, j'ai créé une procédure de fermeture qui devrait mettre le champs ImprimerEtiquette à No. Dans la table Envois, je voudrais qu'un nouveau champs se crée pour chaque record de l'état. Dans la procédure j'utilise des inputbox pour définir la date de l'envoi et la personne qui a effectué l'envoi. J'ai essayé une requête de mise à jour qui fonctionne bien quand il n'y a encore aucun enregistrement relié à ce contact dans la table Envois. Par contre si plusieurs envois pour ce contact existent déjà, tous ces champs sont mis à jours, ce qui est logique mais évidemment pas ce que je recherche. J'ai essayé de créer une requête ajout mais là j'ai d'autres types de problèmes : S'il n'y a aucun record lié à ce contact dans la table envoi, il
n'ajoute aucune ligne. Par contre si j'ai déjà 3 record d'envois pour ce contact, il m'ajoutera 3 lignes avec les données que j'ai effectivement introduites par les inputbox.
Quelle est mon erreur ?
Voici les SQL :
DoCmd.RunSQL "UPDATE DISTINCTROW (Etats RIGHT JOIN Contacts ON Etats.RefEtat
Contacts.ImprimerEtiquette = 'No' WHERE (((Contacts.ImprimerEtiquette)=Yes));"
DoCmd.RunSQL "INSERT INTO Envois ( RéfContact, DateEnvoi, Description, Personnel ) SELECT DISTINCTROW Envois.RéfContact, '" & DateEnvoye & "' AS Expr1, 'Brochure info' AS Expr2, '" & Personne & "' AS Expr3 FROM (Etats RIGHT JOIN Contacts ON Etats.RefEtat = Contacts.RefEtat) LEFT JOIN Envois ON
Contacts.RéfContact = Envois.RéfContact WHERE (((Contacts.ImprimerEtiquette)=Yes));"