Avatar billede -anders- Juniormester
11. november 2006 - 15:25 Der er 13 kommentarer og
2 løsninger

Fejlhåndtering (automation af mailhåndtering)

Hej eksperter

Jeg har en database med en masse musiknumre, for hver post er det muligt at angive en lydfil og en tekstfil i felterne "Midifil" og "Sangtekst" i disse felter er der således angivet hele stien til den aktuelle lydfil og eller tekstfil.

På min form er disse 2 felter sat ind, jeg har så en knap på min form "cmdmail", når jeg klikker på denne knap oprettes en ny email i outlook og vedhæfter de filer der er angivet i de før nævnte felter, dette virker fint jf. nedenstående kode som ligger i et modul:

'fil1 = lydfilen, fil2 = tekstfilen'

Function sendMidifil(fil1 As String, fil2 As String) As String

    Dim objOl As New Outlook.Application
    Dim objPost As MailItem
    Dim vFiles As Attachments
   
   
    Set objPost = objOl.CreateItem(olMailItem)
   
    Set vFiles = objPost.Attachments

    vFiles.Add fil1
    vFiles.Add fil2
 
       
    With objPost
        .Subject = ""
        .To = ""
        .Body = ""
        '.Send
        .Display
    End With
 
    Set objPost = Nothing
    Set vFiles = Nothing
  End Function

Som skrevet virker det perfekt, men der opstår problemer hvis ikke der er angivet filsti i begge felter (runtime error 94), der kan sagtens være angivet en lydfil og ikke en tekstfil eller omvendt.

Hvordan håndterer jeg at der blot oprettes en mail med den eller de angivne filer der er registeret i de omtalte felter, som det er nu skal der være angivet filstier i begge felterne.

Nogen forslag til en løsning :o)

Hilsen Anders.
Avatar billede -anders- Juniormester
11. november 2006 - 15:27 #1
Glemte lige paste koden til selve knappen:

Call sendMidifil(Me.Midifil, Me.Sangtekst)
Avatar billede Slettet bruger
11. november 2006 - 23:00 #2
If err.Number = 94 then
osv!~)
Avatar billede Slettet bruger
11. november 2006 - 23:26 #3
Nåh ja... der var jeg måske lidt for hurtig (smart!~), jeg prøver lige at sætte mig lidt mere ind i problemet!~)
Avatar billede Slettet bruger
11. november 2006 - 23:36 #4
Hvis du ikke vil til at redigere i din funktion kan du sikkert:

if me.midifil = null then
me.midifil = ""
end if
if me.sangtekst = null then
me.sangtekst = ""
end if
Call sendMidifil(Me.Midifil, Me.Sangtekst)
Avatar billede Slettet bruger
11. november 2006 - 23:39 #5
Det lyder forresten, som en interessant db!~)
Avatar billede terry Ekspert
12. november 2006 - 10:39 #6
I prefer to test the fields content length because a field might be empty but not null

and it might help if you chage the paramaters to the function (fil2, fil2) to variant.

Then change lines

vFiles.Add fil1
vFiles.Add fil2

to
If If Len(Trim(fil1)) > 0 Then vFiles.Add fil1
If If Len(Trim(fil2)) > 0 Then vFiles.Add fil2
Avatar billede -anders- Juniormester
12. november 2006 - 11:25 #7
Hej, Tak for indlæggende

Jeg har testet begge forslag, men desværre opstår der den samme fejl som beskrevet i starten Invalid use of Null. Den vil simpelthen have en filsti angivet i begge felter før koden virker.

>terry, jeg har også prøvet at ændre fil1 og fil2 til en variant i koden på denne måde, men igen med samme fejl:

Function sendMidifil(fil1 As String, fil2 As String) As Variant

    Dim objOl As New Outlook.Application
    Dim objPost As MailItem
    Dim vFiles As Attachments
         
    Set objPost = objOl.CreateItem(olMailItem)
   
    Set vFiles = objPost.Attachments
       
    'vFiles.Add fil1
    'vFiles.Add fil2
         
If Len(Trim(fil1)) > 0 Then vFiles.Add fil1
If Len(Trim(fil2)) > 0 Then vFiles.Add fil2
   
    With objPost
        .Subject = ""
        .To = ""
        .Body = ""
        '.Send
        .Display
    End With
 
    Set objPost = Nothing
    Set vFiles = Nothing
  End Function

Måske jeg skal tænke det igennem på en anden måde, men kan ikke lige se det

Hilsen Anders
Avatar billede hugopedersen Nybegynder
12. november 2006 - 11:57 #8
Du skal måske kombinere Terry's forslag med at ændre Call sendMidifil(Me.Midifil, Me.Sangtekst) til  Call sendMidifil(Nz(Me.Midifil,""), Nz(Me.Sangtekst,""))
Jeg tror det vil løse dit Null problem
Avatar billede -anders- Juniormester
12. november 2006 - 12:04 #9
Hej hugopedersen
Tak for indlægget, jeg tester lige og vender tilbage
Avatar billede -anders- Juniormester
12. november 2006 - 12:08 #10
Bingo der var den :o)

Sidste indlæg fra hugopedersen var det der skulle til. Tak for alle indlæggende, jeg deler point lige mellem  hugopedersen og terry. Mange tak for hjælpen.

Hilsen Anders
Avatar billede hugopedersen Nybegynder
12. november 2006 - 12:11 #11
Altid rart at kunne hjælpe :-)
Avatar billede terry Ekspert
12. november 2006 - 12:23 #12
I was a bit puzzled as to why it should be necessary to use
(Me.Midifil,""), Nz(Me.Sangtekst,""))

but after looking at your code I think I see the reason

Function sendMidifil(fil1 As String, fil2 As String) As Variant

should be

Function sendMidifil(fil1 As variant, fil2 As variant) As Variant
Avatar billede terry Ekspert
12. november 2006 - 12:23 #13
og tak
Avatar billede -anders- Juniormester
12. november 2006 - 12:28 #14
Hej terry, jeg havede faktisk prøvet Function sendMidifil(fil1 As variant, fil2 As variant) As Variant

Men dette gav en type objektfejl hvorfor ved jeg ikke, men jeg ændrede så til strings i stedet, og med inputtet fra hugopedersen fik jeg det til at virke ved at kombinere begge metoder
Avatar billede terry Ekspert
12. november 2006 - 12:42 #15
Well whats important is its working :o)
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