Avatar billede bccinlove Nybegynder
07. november 2001 - 13:25 Der er 38 kommentarer og
1 løsning

VB til Benny

Jo Det drejer sig om samme problem som igår...

(opretter lige spørgsmålet så du kan logge ind på det)

forklaring forsætter
Avatar billede bccinlove Nybegynder
07. november 2001 - 13:31 #1
Jeg skal sende en mail til den person der har en opgave (det drejer sig om påmindelse af opgaver over mail) der er overskreddet.
I den tabel vi havde fat i igår kan vi kun se et medarbejder ID f.eks. 44. I en anden tabel har jeg alle id\'s sammen med initialer (hver medarbejders mailadresse er initialer@domain.dk)
Jeg skal på en eller anden måde have skrevet det medarbejder ID vi finder når en opgave er overskreddet skrevet ned i variabel - fundet de rigtige initialer i den anden tabel (tblMedarbejder) - skrevet disse initialer skrevet ned i en variabel og sidst kædet variablen med @domain.dk...

Any clues in this case...
Avatar billede bccinlove Nybegynder
07. november 2001 - 13:45 #2
ER DU HER ??
Avatar billede bennytordrup Nybegynder
07. november 2001 - 13:51 #3
select tblMedarbejder.ID + \'@domain.dk\' from
tblPrioritet AS P INNER JOIN tblMedarbejder AS M on P.MedarbejderID=M.ID

hvor MedarbejderID er det feltnavn, vi havde fat i i går.

Prøv den i Access med den where betingelse, vi fik fat i i går.
Avatar billede bccinlove Nybegynder
07. november 2001 - 13:54 #4
Jer er desværre ikke helt med på hvad du mener...
men godt at du er med på opgaven!
Avatar billede bennytordrup Nybegynder
07. november 2001 - 13:57 #5
Lige lidt guldkorn til senere: Denne kode kan du bruge til at sende e-mails via standard mail klient.

\' Consts to ShellExecute
Public Const SW_NORMAL = 1

Public Declare Function ShellExecute Lib \"shell32.dll\" Alias \"ShellExecuteA\" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Public Sub LaunchEMailClient(Receipient As String)
    On Error Resume Next
    Dim sShellCommand As String
    If Receipient <> \"\" Then
        sShellCommand = \"mailto:\" & Receipient
        ShellExecute frmStartUp.hWnd, vbNullString, sShellCommand, vbNullString, vbNullString, SW_NORMAL
    End If
End Sub


Du kalder LaunchEMailClient med modtager email som parameter.
Avatar billede bccinlove Nybegynder
07. november 2001 - 13:59 #6
Selve det med at få smidt mailen afsted er som sådan ikke noget problem... den har jeg ordnet... det er mere det med at få sendt den til den rigtigte adresse..

Du får lige hele koden...
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:00 #7
Private Sub Command1_Click()
Dim datDB As Database
Dim recPrioriteter As Recordset
Dim recMedarbIni As Recordset
Dim MedarbIni As Integer
Dim objSMTP As Object
Dim strSMTPDateFormat  As String
Dim varMonthArray As Variant
Dim varDayArray As Variant
Dim strTime As String
Dim intCharPos As Integer
   
Set objSMTP = CreateObject(\"SMTP.SMTP\")
    varMonthArray = Array(\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\")
    varDayArray = Array(\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\")
    strSMTPDateFormat = \"www, d mmm yy Hh:Nn:Ss\"
   
    objSMTP.MailPort = \"25\"
    objSMTP.MailServer = \"vip.cybercity.dk\"
    objSMTP.Action = 1                      \'Connect To Server
    strTime = Format(Now(), strSMTPDateFormat)
    intCharPos = InStr(1, strTime, \"www\")
    If intCharPos > 0 Then
        If intCharPos > 1 Then
            strTime = Left(strTime, intCharPos - 1) & varDayArray(Weekday(Date)) & Mid(strTime, intCharPos + 4)
        Else
            strTime = varDayArray(Weekday(Date)) & Mid(strTime, intCharPos + 4)
        End If
    End If
   
DBEngine.SystemDB = \"F:\\VB\\Troels\\system.mdw\"
DBEngine.DefaultUser = \"lj\"
DBEngine.DefaultPassword = \"pippen\"
   
Set datDB = DBEngine.Workspaces(0).OpenDatabase(\"F:\\VB\\Troels\\troels.mdb\")
Set recPrioriteter = datDB.OpenRecordset(\"SELECT * FROM tblPrioritet WHERE [PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")
   
Do While Not recPrioriteter.EOF
                             
        objSMTP.Action = a_ResetHeaders
        objSMTP.OtherHeaders = \"Content-type: text\" & vbCrLf
        objSMTP.From = \"tm@oyan.dk\"
        objSMTP.To =
        objSMTP.Date = Date & Now
        objSMTP.Subject = Text1.Text
        objSMTP.MessageText = \"Du har en opgave vedrørende en prioritet\"
        objSMTP.Action = 3                    \'If not connected then connect. Then send mail.
     
     
    recPrioriteter.MoveNext
    Loop
End Sub
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:02 #8
Det virker som det skal hvis jeg bare skriver en eller anden mailadresse efter objSMTP.To = tm@tm-support.dk...

Men det skal jo være til den der står som ansvarlig i tblPrioritet...
Avatar billede bennytordrup Nybegynder
07. november 2001 - 14:02 #9

dim sSQL as string
sSQL = \"SELECT *, M.ID + \'@domain.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.ID \"
ssql = ssql & \"WHERE P[PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")


    Set recPrioriteter = datDB.OpenRecordset(sSQL)
    Set objOutLook = CreateObject(\"Outlook.Application\")
    Do While Not recPrioriteter.EOF
         
        Set objMailItem = objOutLook.CreateItem(olMailItem)
       
        objMailItem.To = recPrioriteter!FullEMail
        objMailItem.Subject = \"TEST FRA VB\"
        objMailItem.Body = \"HURRA\"
       
        objMailItem.Send
       
        End Select
       
        recPrioriteter.MoveNext
    Loop
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:05 #10
Jeg kan ikke lige gennemskue dine forkortelser i koden...
Avatar billede bennytordrup Nybegynder
07. november 2001 - 14:06 #11
M er alias for tblMedarbejder, P er alias for tblPrioritet

Jeg er bare for doven til at skrive så lange feltnavne mere end en gang i en forespørgsel :-)
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:11 #12
Jeg får runtime error 20162

550 5.1.1 <SELECT *>... User unknown...

Min kode ser nu sådan ud:
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:12 #13
Private Sub Command1_Click()
Dim datDB As Database
Dim recPrioriteter As Recordset
Dim sSQL As String
Dim objSMTP As Object
Dim strSMTPDateFormat  As String
Dim varMonthArray As Variant
Dim varDayArray As Variant
Dim strTime As String
Dim intCharPos As Integer
   
Set objSMTP = CreateObject(\"SMTP.SMTP\")
    varMonthArray = Array(\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\")
    varDayArray = Array(\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\")
    strSMTPDateFormat = \"www, d mmm yy Hh:Nn:Ss\"
   
    objSMTP.MailPort = \"25\"
    objSMTP.MailServer = \"vip.cybercity.dk\"
    objSMTP.Action = 1                      \'Connect To Server
    strTime = Format(Now(), strSMTPDateFormat)
    intCharPos = InStr(1, strTime, \"www\")
    If intCharPos > 0 Then
        If intCharPos > 1 Then
            strTime = Left(strTime, intCharPos - 1) & varDayArray(Weekday(Date)) & Mid(strTime, intCharPos + 4)
        Else
            strTime = varDayArray(Weekday(Date)) & Mid(strTime, intCharPos + 4)
        End If
    End If
   
DBEngine.SystemDB = \"F:\\VB\\Troels\\system.mdw\"
DBEngine.DefaultUser = \"lj\"
DBEngine.DefaultPassword = \"pippen\"
   
Set datDB = DBEngine.Workspaces(0).OpenDatabase(\"F:\\VB\\Troels\\troels.mdb\")
Set recPrioriteter = datDB.OpenRecordset(\"SELECT * FROM tblPrioritet WHERE [PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")
   
sSQL = \"SELECT *, M.ID + \'@tm-support.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.ID \"
sSQL = sSQL & (\"WHERE P[PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")
   
Do While Not recPrioriteter.EOF
                             
        objSMTP.Action = a_ResetHeaders
        objSMTP.OtherHeaders = \"Content-type: text\" & vbCrLf
        objSMTP.From = \"tm@oyan.dk\"
        objSMTP.To = sSQL
        objSMTP.Date = Date & Now
        objSMTP.Subject = Text1.Text
        objSMTP.MessageText = \"Du har en opgave vedrørende en prioritet\"
        objSMTP.Action = 3                    \'If not connected then connect. Then send mail.
     
     
    recPrioriteter.MoveNext
    Loop
End Sub
Avatar billede bennytordrup Nybegynder
07. november 2001 - 14:15 #14
Skift det her kode

Set recPrioriteter = datDB.OpenRecordset(\"SELECT * FROM tblPrioritet WHERE [PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")
   
sSQL = \"SELECT *, M.ID + \'@tm-support.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.ID \"
sSQL = sSQL & (\"WHERE P[PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")


ud med det her

sSQL = \"SELECT *, M.ID + \'@tm-support.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.ID \"
sSQL = sSQL & (\"WHERE P[PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")
Set recPrioriteter = datDB.OpenRecordset(sSQL)
   

Linien objSMTP.To skal være

objSMTP.To = recPrioriteter!FullEMail
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:36 #15
Ja det er mega smart - den havde jeg ikke lige tænkt på :-)

Men der kommer en syntaksfejl...

Der mangler en operator.i forespørgselsudtrykker \"p[PrioritetHuskeDatpUdloeb\"<#11-07-01#\".
Avatar billede bennytordrup Nybegynder
07. november 2001 - 14:37 #16
Min fejl. Der skal lige et . ind mellem P og [
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:39 #17
Den er det ikke helt endnu...

Der er for få parametre. 1 var ventet!
Avatar billede bennytordrup Nybegynder
07. november 2001 - 14:42 #18
Det skal være p.[PrioritetHuskeDatoUdloeb]
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:48 #19
Det står der også...

Når jeg debugger fejl en denne linie gul:

Det recPrioriteter = datDB.OpenRecordset(sSQL)
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:51 #20
Set recPrioriteter = datDB.OpenRecordset(sSQL)
Avatar billede bennytordrup Nybegynder
07. november 2001 - 14:55 #21
Prøv at lave en debug.print sSQL umiddelbart før den linie og lad mig se den samlede sql
Avatar billede bccinlove Nybegynder
07. november 2001 - 14:58 #22
SELECT *, M.ID + \'@tm-support.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.ID WHERE p.[PrioritetHuskeDatoUdloeb]<#11-07-01#
Avatar billede bennytordrup Nybegynder
07. november 2001 - 15:00 #23
Hvad siger Access selv til den, hvis du laver den som forespørgsel
Avatar billede bccinlove Nybegynder
07. november 2001 - 15:04 #24
Når jeg kører følgende:

SELECT *, M.ID + \'@tm-support.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.ID WHERE p.[PrioritetHuskeDatoUdloeb]<#11-07-01#

Skal jeg indtaste en parameterværdi for M.ID
Avatar billede bennytordrup Nybegynder
07. november 2001 - 15:15 #25
OK. Du skal erstatte M.ID med M.[<FeltNavn>], hvor <FeltNavn> er navnet på ID-feltet i tblMedarbejder. De skal gøres alle de steder, hvor der står M.ID
Avatar billede bccinlove Nybegynder
07. november 2001 - 15:21 #26
Jaja så får jeg;

Type Mismatch

Debug peger på objSMTP.to = recPrioriteter!FullEMail
Avatar billede bennytordrup Nybegynder
07. november 2001 - 15:37 #27
Nu ved jeg ikke hvad type, objSMTP.To er (eller hvor objektet kommer fra).

Prøv med CStr(recPrioriteter!FullEMail)
Avatar billede bccinlove Nybegynder
07. november 2001 - 15:45 #28
Hmmm...

Med CStr får jeg
Datatyperne stemmer ikke overens i kriterieudtrykket...?

Tryl min ven TRYL!
Avatar billede bennytordrup Nybegynder
07. november 2001 - 15:48 #29
I Join-delen skal du have P.PrioritetHuskeDatoUdloebMedarbejderID=M.ID

I Select-delen skal du have M.Initialer+\'@tm-support.dk\' AS FullEMail
hvor Initialer skal være navnet på det felt, hvor initialerne er.
Avatar billede bccinlove Nybegynder
07. november 2001 - 15:54 #30
Som dette ?

Set datDB = DBEngine.Workspaces(0).OpenDatabase(\"F:\\VB\\Troels\\troels.mdb\")
sSQL = \"SELECT *, M.MedarbejderID + \'@tm-support.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.MedarbejderID \"
sSQL = sSQL & (\"WHERE p.[PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")
Debug.Print sSQL
Set recPrioriteter = datDB.OpenRecordset(sSQL)
Avatar billede bennytordrup Nybegynder
07. november 2001 - 15:55 #31
Hvad hedder feltet med medarbejderens initialer?
Avatar billede bccinlove Nybegynder
07. november 2001 - 15:57 #32
MedarbejderInitial
Avatar billede bennytordrup Nybegynder
07. november 2001 - 15:58 #33
Sådan her

Set datDB = DBEngine.Workspaces(0).OpenDatabase(\"F:\\VB\\Troels\\troels.mdb\")
sSQL = \"SELECT *, M.MedarbejderInitial + \'@tm-support.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.MedarbejderID \"
sSQL = sSQL & (\"WHERE p.[PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")
Debug.Print sSQL
Set recPrioriteter = datDB.OpenRecordset(sSQL)
Avatar billede bccinlove Nybegynder
07. november 2001 - 15:59 #34
Sådan her ?

Set datDB = DBEngine.Workspaces(0).OpenDatabase(\"F:\\VB\\Troels\\troels.mdb\")
sSQL = \"SELECT *, M.MedarbejderInitial + \'@tm-support.dk\' AS FullEMail FROM tblPrioritet P INNER JOIN tblMedarbejder M ON P.PrioritetHuskeDatoUdloebMedarbejderID = M.MedarbejderID \"
sSQL = sSQL & (\"WHERE p.[PrioritetHuskeDatoUdloeb]<#\" & Format$(Date, \"mm-dd-yy\") & \"#\")
Debug.Print sSQL
Set recPrioriteter = datDB.OpenRecordset(sSQL)
Avatar billede bennytordrup Nybegynder
07. november 2001 - 16:00 #35
Ja
Avatar billede bccinlove Nybegynder
07. november 2001 - 16:02 #36
YEEEEEESSSS !!!
Avatar billede bccinlove Nybegynder
07. november 2001 - 16:03 #37
Du er en stor stjerne...
Avatar billede bccinlove Nybegynder
08. november 2001 - 16:55 #38
Er du med på endnu en sjover?
Avatar billede bccinlove Nybegynder
08. november 2001 - 16:56 #39
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
Kurser inden for grundlæggende programmering

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