Probleme avec access

Résolu
VulcaneRaven Messages postés 40 Statut Membre -  
fmvgld Messages postés 118 Statut Membre -
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 2702 Statut Membre 568
 
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 2702 Statut Membre 568
 
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 Statut Membre
 
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 Statut Membre
 
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 2702 Statut Membre 568
 
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 Statut Membre
 
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 2702 Statut Membre 568
 
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 Statut Membre
 
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 Statut Membre
 
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 Statut Membre
 
Oui lol, j'y est pencer hier matin et ca marche. Suis vraiment debil.
merci.
0
Frappe Misere Messages postés 2702 Statut Membre 568
 
quand je disais que ça venait de ton code...
0
fmvgld Messages postés 118 Statut Membre 9
 
essaye

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