Probleme avec access

Résolu/Fermé
VulcaneRaven Messages postés 40 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 18 mai 2009 - 22 juil. 2008 à 09:39
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 - 24 juil. 2008 à 13:51
Bonjour, voila en faite j'ai une db qui regroupe des projets avec un % d'accompli. Il faud que quand ce % change, 3 email sois envoyer. Le probleme c'est que ici sur les 3 mails, il y en a que 1 qui est envoyer. Mon code en Vba est bon mais il y a une erreur dans le code Sql. Voici les codes :


Vba :

Option Compare Database

Private Sub Completed_Percentage_Change()
If Me.Completed_Percentage = 1 Then
Me.Actual_Completion_Date = Now()
Else
Me.Actual_Completion_Date = Null
End If

Dim NotesDB As Object
Dim NotesDoc As Object
Dim NotesRTF As Object
Dim NotesSession As Object

Set NotesSession = CreateObject("Notes.NotesSession")
Set NotesDB = NotesSession.GetDatabase("", "")

Call NotesDB.OpenMail

TTT = Me.Parent.[TTT Project Number].Value
PC = Me.Parent.[E-mail].Value
Analyst = Me.Parent.[E-mail].Value
Tester = Me.Parent.[E-mail].Value
Milestone = Me.MilestoneID
MilestoneName = Me.Milestone_Name
MilestoneValue = Me.Completed_Percentage

Set NotesDoc = NotesDB.createdocument
Call NotesDoc.replaceitemvalue("Sendto", PC & ", " & Analyst & ", " & Tester)
Call NotesDoc.replaceitemvalue("Subject", TTT & " - Milestone updated")

Set NotesRTF = NotesDoc.CreateRichTextItem("body")
Call NotesRTF.appendtext("In project " & TTT & " milestone " & Milestone & " (" & MilestoneName & ") has been updated to " & MilestoneValue)

Call NotesDoc.Send(False)

Set NotesSession = Nothing

End Sub


Sql :

SELECT [TTT Projects].[TTT ProjID], [TTT Projects].[Project N°] AS [TTT Project Number], CUST_References_Live.procod AS Procod, IIf/sword([TTT Projects]!Procod,IIf(IsNull([Traffic Type]),CUST_References_Live.name,CUST_References_Live.name+&­quot; ["+[Traffic Type]+"]")+" ("+CStr(Schedule![Slot Nb])+"/"+CStr([Number of slots per TTT Proj ID]![Number of Slots])+")") AS Processor, CUST_References_Live.country_iso_code AS Country, Schedule.[Act Mig day], Schedule.[Slot Nb] AS Slot, CUST_References_Live.name AS PC, [Staff contact details_1].Name AS Analyst, [Staff contact details_2].Name AS Tester, [TTT Projects].[Project Type], [TTT Projects].[Lifecycle Indicator], Schedule.[Ideal Mig Day], InStr([Project Type],"TBC")>0 AS TBC, [Staff contact details].[E-mail], [Staff contact details_2].[E-mail] AS [Tester E-mail], [Staff contact details_1].[E-mail] AS [Analyst E-mail]
FROM (((((([TTT Projects] LEFT JOIN CUST_References_Live ON [TTT Projects].Procod = CUST_References_Live.procod) LEFT JOIN Schedule ON [TTT Projects].SchedID = Schedule.SchedID) LEFT JOIN [Number of slots per TTT Proj ID] ON [TTT Projects].[TTT ProjID] = [Number of slots per TTT Proj ID].[TTT ProjID]) LEFT JOIN Assignments ON [TTT Projects].[TTT ProjID] = Assignments.[TTT ProjID]) LEFT JOIN [Staff contact details] ON [TTT Projects].PC = [Staff contact details].Acronym) LEFT JOIN [Staff contact details] AS [Staff contact details_1] ON Assignments.Analyst = [Staff contact details_1].Acronym) LEFT JOIN [Staff contact details] AS [Staff contact details_2] ON Assignments.Tester = [Staff contact details_2].Acronym
WHERE ((([TTT Projects].[Project Type]) Not In ("BAU","Contingency Slot")) AND (([TTT Projects].[Lifecycle Indicator]) In ("Assigned","Started")))
ORDER BY Schedule.[Act Mig day];

Il y a donc une table TTT Projects qui regroupe tout les information sur les projets.
une donner (PC) relier a (acronym) dans la table staff contact details (le mail qui par).
une donner (TTT ProjID) relier a (TTT ProjID) dans la table assignements qui assigne qui est le tester et qui est l'analyst (qui son les 2 mail qui ne s'envoie pas).
et oui j'oublier la table staff contact details et la table qui repertorie les adresses mail.

cette queries, ce n'est pas moi qui l'ai faite est pour etre franc je sais pas trop comment ca marche, moi je me debrouille en basic mais pour le Sql suis nul. Ci quelqu'un pouvai m'aider a trouver d'ou vien le probleme, pourquoi il y a que 1 mail qui par au lieu des 3 ca serai pratique.

12 réponses

Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
23 juil. 2008 à 17:08
si tu mets 3 pavés, un par destinataire, est ce que cela fonctionne :

Call NotesDB.OpenMail

TTT = Me.Parent.[TTT Project Number].Value
PC = Me.Parent.[E-mail].Value
Milestone = Me.MilestoneID
MilestoneName = Me.Milestone_Name
MilestoneValue = Me.Completed_Percentage


Call NotesDB.OpenMail

TTT = Me.Parent.[TTT Project Number].Value
Analyst = Me.Parent.[E-mail].Value
Milestone = Me.MilestoneID
MilestoneName = Me.Milestone_Name
MilestoneValue = Me.Completed_Percentage

Call NotesDB.OpenMail

TTT = Me.Parent.[TTT Project Number].Value
Tester = Me.Parent.[E-mail].Value
Milestone = Me.MilestoneID
MilestoneName = Me.Milestone_Name
MilestoneValue = Me.Completed_Percentage
1
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
22 juil. 2008 à 10:55
le sql, ça permet juste de selectionner les champs, ça ne permet pas d'envoyer quoi que ce soit.
tu es sur que le probleme ne vient pas de ton code associé ?
0
VulcaneRaven Messages postés 40 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 18 mai 2009
22 juil. 2008 à 11:08
Bin justement, ici c'est justement mal associé. Vu que le code en vba pour envoyer le mail fonctionne, car 1 des 3 mail son envoyer
0
VulcaneRaven Messages postés 40 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 18 mai 2009
22 juil. 2008 à 11:10
enfin mal associé, ce que je veux dir c'est que les table son mal associe.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
22 juil. 2008 à 11:11
si ton code fonctionnait, pour envoyer des mails, tu devrais en avoir au moins des vierges pour les 2 autres ?
la requete est correcte, donc le probleme ne vient pas de la directement.
0
VulcaneRaven Messages postés 40 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 18 mai 2009
22 juil. 2008 à 11:18
Bin ecoute le code en vba est la, pour moi tout semble correcte, ci tu y voi une erreur dit le moi. Et pour la requete, je vien de la retester fin j'ai fais un copier coller de ce que j'ai mit sur ce poste, et elle n'est pas bonne. Voila le code exacte : SELECT [TTT Projects].[TTT ProjID], [TTT Projects].[Project N°] AS [TTT Project Number], CUST_References_Live.procod AS Procod, IIf([TTT Projects]!Procod,IIf(IsNull([Traffic Type]),CUST_References_Live.name,CUST_References_Live.name+" ["+[Traffic Type]+"]")+" ("+CStr(Schedule![Slot Nb])+"/"+CStr([Number of slots per TTT Proj ID]![Number of Slots])+")") AS Processor, CUST_References_Live.country_iso_code AS Country, Schedule.[Act Mig day], Schedule.[Slot Nb] AS Slot, CUST_References_Live.name AS PC, [Staff contact details_1].Name AS Analyst, [Staff contact details_2].Name AS Tester, [TTT Projects].[Project Type], [TTT Projects].[Lifecycle Indicator], Schedule.[Ideal Mig Day], InStr([Project Type],"TBC")>0 AS TBC, [Staff contact details].[E-mail], [Staff contact details_2].[E-mail] AS [Tester E-mail], [Staff contact details_1].[E-mail] AS [Analyst E-mail]
FROM (((((([TTT Projects] LEFT JOIN CUST_References_Live ON [TTT Projects].Procod=CUST_References_Live.procod) LEFT JOIN Schedule ON [TTT Projects].SchedID=Schedule.SchedID) LEFT JOIN [Number of slots per TTT Proj ID] ON [TTT Projects].[TTT ProjID]=[Number of slots per TTT Proj ID].[TTT ProjID]) LEFT JOIN Assignments ON [TTT Projects].[TTT ProjID]=Assignments.[TTT ProjID]) LEFT JOIN [Staff contact details] ON [TTT Projects].PC=[Staff contact details].Acronym) LEFT JOIN [Staff contact details] AS [Staff contact details_1] ON Assignments.Analyst=[Staff contact details_1].Acronym) LEFT JOIN [Staff contact details] AS [Staff contact details_2] ON Assignments.Tester=[Staff contact details_2].Acronym
WHERE ((([TTT Projects].[Project Type]) Not In ("BAU","Contingency Slot")) AND (([TTT Projects].[Lifecycle Indicator]) In ("Assigned","Started")))
ORDER BY Schedule.[Act Mig day];

sof que il y a toujours que 1 mail qui par, et qaund je lance la requete, il me demande d'entre un traffic type. Bon comme je l'explique, moi je n'y comprent rien, c'est la premier foi que je travail avec access on va dir. J'ai u des cours mais qui ce son arreter au relation, je n'ai pas etais plus loin. Par contre pour vba, ca je code deja en basic donc ca va.
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
22 juil. 2008 à 11:22
le sql, c'est simple pourtant :)
les champs selectionnés, c'est ce qui se trouve avant le "from".
entre le "from" et le "where" se trouvent les tables utilisées et leurs liaisons.
et apres le where, ce sont les criteres de selection.
orderby, c'est pour classer les données.
0
VulcaneRaven Messages postés 40 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 18 mai 2009
22 juil. 2008 à 11:45
Ok, tu a lut tout ce que j'ai ecrit ou pas, pour savoir ci je te refai un petite topo de la structure de la requete. Il y a une table TTT Projets qui repertorie des projets. Quand c'est projets arrive a 100%, (ce qui est modifiable dans le form par le createur du projet) 3 mail doive etre envoyer. 1 au PC, 1 à l'analyst et 1 au tester. Dans la table TTT projets on a une colone qui regroupe les acronyme des PC, et cette colone et relier a la table Staff contact details qui repertori les adresse mail. Puis il y a la table assignements, qui est relier a la table TTT projects par la colone TTT projID, et dans cette table il y a l'acronyme du tester et de l'analyste. Cette table, assignments, et relier a 2 racourci on va dir de la table staff contact details. et a mon avie, le probleme vien de la.
0
VulcaneRaven Messages postés 40 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 18 mai 2009
23 juil. 2008 à 12:01
bon bin aparament le probleme viendrai du code vba, mais je vois vraiment pas ou il y a une erreur.
0
VulcaneRaven Messages postés 40 Date d'inscription jeudi 3 juillet 2008 Statut Membre Dernière intervention 18 mai 2009
24 juil. 2008 à 10:37
Oui lol, j'y est pencer hier matin et ca marche. Suis vraiment debil.
merci.
0
Frappe Misere Messages postés 2677 Date d'inscription vendredi 22 février 2008 Statut Membre Dernière intervention 10 août 2011 568
24 juil. 2008 à 10:49
quand je disais que ça venait de ton code...
0
fmvgld Messages postés 117 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 30 décembre 2015 9
24 juil. 2008 à 13:51
essaye

Call NotesDoc.replaceitemvalue("Sendto", PC & ";" & Analyst & ";" & Tester)
0