Avatar billede janriis Nybegynder
30. maj 2007 - 12:09 Der er 17 kommentarer og
1 løsning

Send email når combo opdateres

Hej

Jeg har en forespørgsel som viser min forms aktuelle post baseret på nøglen defectID. Nu vil jeg gerne sende en rapport baseret på denne forespørgsel når en combo opdateres. Jeg vil gerne have en msgbox der spørger om rapporten skal sendes.

Min forespørgsel ser sådan ud :

SELECT tblDefect.defectID, tblDefect.description, tblDefect.application, tblDefect.environment, tblDefect.releaseversion, tblDefect.tester, tblDefect.assigndate, tblDefect.assignedto, tblDeveloper.email, tblDefect.status, tblDefect.comment, tblDefect.Severity
FROM tblDeveloper INNER JOIN tblDefect ON tblDeveloper.Developer = tblDefect.assignedto
WHERE (((tblDefect.defectID) Like [forms]![OpretDefect]![defectID]));

Nogen der har en god ide ? Jeg ved at der er mange spørgsmål på denne funktion, men har ikke lige fundet et svar jeg kan bruge.
Avatar billede mugs Novice
30. maj 2007 - 12:21 #1
Jeg er ikke sikker på, at du kan sende en rapport fra en forespørgsel.

Hvis du laver en formular, er det derimod intet problem. Du skal i så fald benytte kommandoen DoCmd.SendObject. Men jeg har skrevet en artikel om emnet. Der kan du også se, hvor du skal indsætte de forskellige variabler.
Avatar billede mugs Novice
30. maj 2007 - 12:22 #2
Avatar billede janriis Nybegynder
30. maj 2007 - 12:41 #3
Hej mugs
Jeg fik vist formuleret mig lidt uklart
Min rapport er klar og virker. Den viser indholdet af ovenstående forespørgsel baseret på værdien i feltet defectID. Nu vil jeg så bare gerne have sendt rapporten til den mailadresse som er i forespørgslen
Avatar billede Slettet bruger
30. maj 2007 - 13:17 #4
Private Sub NavnCombo_AfterUpdate()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim EmailAdr As String
If MsgBox("Ønsker du at sende e-mail?", vbYesNo) = vbYes Then
Set db = CurrentDb()
Set rst = db.OpenRecordset("NavnForespørgselEllerSelveForespørgslen")
With rst
.MoveFirst
Do
EmailAdr = ![email]
DoCmd.SendObject acSendReport, "NavnRapport", "Snapshot Format", EmailAdr, , , "Test", "Test besked...", False
.MoveNext
Loop Until .EOF
.Close
End With
End If
End Sub
Avatar billede Slettet bruger
30. maj 2007 - 13:18 #5
Jeg har lagt et loop ind, hvis nu der er flere e-mail adresser i forespørgslen!~)
Avatar billede janriis Nybegynder
30. maj 2007 - 13:49 #6
Hej spg, jeg får en runtime error '3061' Der er for få parametre. Der var ventet 1. Debuggeren peger på linien med "Set rst = db.OpenRecordset("QDefectMail") Min forespørgsel og rapport hedder begge QDefectMail (dårlig navngivning, ved det)

Min kode ser sådan ud :

Private Sub assignedto_AfterUpdate()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim EmailAdr As String
If MsgBox("Ønsker du at sende e-mail?", vbYesNo) = vbYes Then
Set db = CurrentDb()
Set rst = db.OpenRecordset("QDefectMail")
With rst
.MoveFirst
Do
EmailAdr = ![email]
DoCmd.SendObject acSendReport, "QDefectMail", "Snapshot Format", EmailAdr, , , "Test", "Test besked...", False
.MoveNext
Loop Until .EOF
.Close
End With
End If

End Sub
Avatar billede Slettet bruger
30. maj 2007 - 14:08 #7
Jeg havde selv en forespørgsel, hvor jeg havde lagt et fast kriterie ind og det virkede. Så lagde jeg efterfølgende et kriterie ind, som var afhængig af komboboksen og fik den samme fejlmeddelse, som du fik....

Du kan prøve at skrive selve sql'en ind:

Set rst = db.OpenRecordset("SELECT tblDefect.defectID, tblDefect.description, tblDefect.application, tblDefect.environment, tblDefect.releaseversion, tblDefect.tester, tblDefect.assigndate, tblDefect.assignedto, tblDeveloper.email, tblDefect.status, tblDefect.comment, tblDefect.Severity FROM tblDeveloper INNER JOIN tblDefect ON tblDeveloper.Developer = tblDefect.assignedto WHERE (((tblDefect.defectID) Like [forms]![OpretDefect]![defectID]));")
Avatar billede Slettet bruger
30. maj 2007 - 14:09 #8
ellers er du nød til at rode lidt rundt med forespørgslen... jeg er nemlig på vej ud af døren!~)
Avatar billede janriis Nybegynder
30. maj 2007 - 14:28 #9
Du har ret, da jeg fjernede kriteriet fra min forespørgsel, så virkede det. Jeg prøvede så med at skrive selve sql'en ind, men det virkede ikke. Jeg ikke brug for loopet, da der kun er en post med en email adr, hvad skal jeg ændre for at fjerne loopet ?

Jeg må rode lidt videre, men du får alligevel point for en solid indsatt :-) takker.
Avatar billede mugs Novice
30. maj 2007 - 14:29 #10
Nej - Jeg tror ikke jeg har misforstået. Her uddrag fra min artikel vedr. dine manglende argumenter:

DoCmd.SendObject 1 arg , "2 arg", "3 arg", "4arg", "5arg", "6 arg", "7 arg", "8 arg", False, "9 arg"

Idet ”1 arg”, ”2 arg” o.s.v henviser til handlingens argumenter således:

-1. argument er den objekttype du evt. vil vedhæfte.
-2. argument er Objektnavnet på en evt. vedhæftet rapport.
-3. argument er hvilket Outputformat rapporten skal have.
-4. argument er modtagerens e-mailadresse.
-5. argument er Cc adressat.
-6. argument er Bcc adressat.
-7. er e-mailens emne.
-8. er e-mailens tekst (Brødtekst).
-False betyder, at du ikke vil redigere meddelelsen inden afsendelse.
-9. er til markering om benyttelse af en skabelonfil.

4. Argumenterne 1 og 2 er valgfrie og skal blot være tomme, hvis der ikke skal vedhæftes en rapport. Hvis argument 1 er udfyldt er 2 og 3 obligatoriske. Du vælger et format i Argument 3. Der kan vælges flg formater:
Avatar billede janriis Nybegynder
30. maj 2007 - 14:58 #11
Hej mugs, jeg har kun hørt godt om din artikel og flere har haft glæde af den, men jeg gik desværre kold på den, hvilket var min skyld og ikke artiklens.
Avatar billede mugs Novice
30. maj 2007 - 15:03 #12
Du kan jo se koden ovenfor, og blot udfylde de forskellige argumenter, som også er nævnt.
Avatar billede janriis Nybegynder
30. maj 2007 - 15:16 #13
Hej spg, når jeg åbner min forespørgsel, får jeg beskeden "Kan ikke angive egenskaben BegrænsTilListe til Nej nu. Kunne det være den manglende parameter jeg får en fejl om ? Hvis man kunne sætte et "Enter" ind var det måske løsningen på mit problem
Avatar billede Slettet bruger
30. maj 2007 - 21:36 #14
Så er jeg på igen...

Jeg kom til at tænke, du kan også lave det helt simpelt ved at lade en dlookup hente email fra forespørgslen!~)

A'la.. EmailAdr = dlookup("[email]","QDefectMail","[DefectId] = " & forms!OpretDefect!defectID)

"[DefectId] = '" & forms!OpretDefect!defectID & "'") hvis DefectID er en tekststreng!~)

Jeg vil kigge lidt på mit første løsningsforslag, da jeg selv vil bygge lidt videre på det og bruge det en anden gang, så hvis det lykkedes gi'r jeg besked!~)
Avatar billede Slettet bruger
30. maj 2007 - 21:38 #15
DLookup'en bør se nogenlunde sådan her ud!~)

Private Sub DefectID_AfterUpdate()
Dim EmailAdr As String
If MsgBox("Ønsker du at sende e-mail?", vbYesNo) = vbYes Then
EmailAdr = dlookup("[email]","QDefectMail","[DefectId] = " & forms!OpretDefect!defectID)
DoCmd.SendObject acSendReport, "NavnRapport", "Snapshot Format", EmailAdr, , , "Test", "Test besked...", False
End If
End Sub
Avatar billede Slettet bruger
30. maj 2007 - 21:41 #16
Du kan selvfølgelig vælge et andet format, men der kan ske alt muligt med rapporten. Snapshot har den ulempe, at man skal have snapshot viewer, den kan dog hentes gratis hos microsoft!~)

ps. man kan hvis heller ikke rette i en snapshot rapport...
Avatar billede Slettet bruger
30. maj 2007 - 23:48 #17
Ok... Problemet var runtime error 3061, "Too few parameters. Expected 1"....
Jet-engine tror at kriteriet er forespørgslens "svar", så løsningen er at fodre jet med den rette parameter:

Private Sub assignedto_AfterUpdate()
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset
Dim EmailAdr As String
If MsgBox("Ønsker du at sende e-mail?", vbYesNo) = vbYes Then
Set db = CurrentDb()
Set qdf = db.QueryDefs("QDefectMail")
qdf.Parameters(0) = forms!OpretDefect!defectID
Set rst = qdf.OpenRecordset
With rst
.MoveFirst
Do
EmailAdr = ![email]
DoCmd.SendObject acSendReport, "QDefectMail", "Snapshot Format", EmailAdr, , , "Test", "Test besked...", False
.MoveNext
Loop Until .EOF
.Close
End With
End If
End Sub
Avatar billede janriis Nybegynder
01. juni 2007 - 11:55 #18
Perfekt. Det virker....takker og bukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester