Toon posts:

[VBS] Script netjes maken

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hello,

Ik het volgende script (heb het even simpel gehouden)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Dim objMessage
Set objMessage = CreateObject("CDO.Message")

If (Hour(now) > 8 AND Hour(now) < 17) Then
        objMessage.Subject = "1"
        objMessage.Sender = ""
                 objMessage.From = ""
        objMessage.To = ""
        objMessage.TextBody = ""
        objMessage.Send

        End If
Else
    If (Hour(now) = 22) Then
        
                 objMessage.Subject = "2"
        objMessage.Sender = ""
                 objMessage.From = ""
        objMessage.To = ""
        objMessage.TextBody = ""
        objMessage.Send


    Else
          objMessage.Subject = "3"
        objMessage.Sender = ""
                 objMessage.From = ""
        objMessage.To = ""
        objMessage.TextBody = ""
        objMessage.Send

    End If

End If


Zoals je ziet wordt een email verstuurd afhankeling van de tijdstip.

Hoe is het mogelijk om de 3 verschillende e-mails in een object te zetten en vervolgens alleen een variable te hoeven aan roepen.

Dus in plaats van:
objMessage.Subject = "1"
objMessage.Sender = ""
objMessage.From = ""
objMessage.To = ""
objMessage.TextBody = ""
objMessage.Send

Alleen iets van sendMail_1

Kan dit in vbs?

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08-2025
of je doet het met een with

code:
1
2
3
With Object
         .eigenschap = ""
End With

  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

de code die je nu binnen je vergelijking dubbel hebt, kun je er buiten halen.
Je hoeft alleen je objMessage.Subject binnen de vergelijking te laten. Al het andere kun je er buiten halen.
Wel je .send pas opgeven na je vergelijking natuurlijk :)
Dat is de simpelste methode.

Een andere methode is met een subroutine werken.
Al je code voor het versturen van de email zet je in de sub, die je vervolgens aanroept met het gewenste onderwerp oid.

voorbeeldje:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
If (Hour(now) > 8 AND Hour(now) < 17) Then
  sendMail ( "1" )
ElseIf (Hour(now) = 22) Then
  sendMail ( "2" )
Else
  sendMail ( "3" )
End If

Sub sendMail ( subject )
  '... maak het object enzo
  objMessage.Subject = subject
  '... Overige code
  objMessage.Send
End Sub

[ Voor 5% gewijzigd door wizzkizz op 07-03-2005 11:44 . Reden: Typo ]

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


Verwijderd

Topicstarter
wizzkizz schreef op maandag 07 maart 2005 @ 11:41:
de code die je nu binnen je vergelijking dubbel hebt, kun je er buiten halen.
Je hoeft alleen je objMessage.Subject binnen de vergelijking te laten. Al het andere kun je er buiten halen.
Wel je .send pas opgeven na je vergelijking natuurlijk :)
Dat is de simpelste methode.

Een andere methode is met een subroutine werken.
Al je code voor het versturen van de email zet je in de sub, die je vervolgens aanroept met het gewenste onderwerp oid.

voorbeeldje:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
If (Hour(now) > 8 AND Hour(now) < 17) Then
  sendMail ( "1" )
ElseIf (Hour(now) = 22) Then
  sendMail ( "2" )
Else
  sendMail ( "3" )
End If

Sub sendMail ( subject )
  '... maak het object enzo
  objMessage.Subject = subject
  '... Overige code
  objMessage.Send
End Sub
Thanks, Dat is precies wat ik wilde. :)

Ik snap dat laatste stuk alleen niet, kun je dat misschien ook in je voorbeeld zetten?

Dit stuk:
code:
1
2
3
4
 '... maak het object enzo
  objMessage.Subject = subject
  '... Overige code
  objMessage.Send


Waar moet ik precies de 3 verschilende objMessage.Subject zetten en hoe geef ik aan welke nr 1, 2 of 3 is.

bvd

[ Voor 14% gewijzigd door Verwijderd op 07-03-2005 11:57 ]


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

Verwijderd schreef op maandag 07 maart 2005 @ 11:56:
Thanks, Dat is precies wat ik wilde. :)

Ik snap dat laatste stuk alleen niet, kun je dat misschien ook in je voorbeeld zetten?

Dit stuk:
code:
1
2
3
4
 '... maak het object enzo
  objMessage.Subject = subject
  '... Overige code
  objMessage.Send


Waar moet ik precies de 3 verschilende objMessage.Subject zetten en hoe geef ik aan welke nr 1, 2 of 3 is.

bvd
Je maakt gewoon 1 subroutine om e-mail te versturen. Door het argument wat je meegeeft aan de subroutine, wordt het onderwerp van de e-mail ingesteld.
Daarom zit de regel
Visual Basic:
1
objMessage.Subject=subject
erin. Deze regel zorgt ervoor dat het argument van de subroutine het onderwerp van de e-mail wordt.
Je moet het argument dus in je vergelijking instellen, niet in je subroutine.


P.S. nofi, maar is overigens beetje basiskennis hoor ;) klik hier voor meer info over subroutines en functies

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


Verwijderd

Topicstarter
Het wil maar niet lukken hoor. ;(

Ik heb er zo iets van gemaakt, maat het is natuurlijk fout.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Option explicit
Dim objMessage

Set objMessage = CreateObject("CDO.Message")
objMessage.Sender = ""
objMessage.From = ""
objMessage.To = ""

 If (Hour(now) > 8 AND Hour(now) < 17) Then
  sendMail1
ElseIf (Hour(now) = 22) Then
  sendMail2
Else
  sendMail3
End If

Sub sendMail1

objMessage.Subject = "1"
objMessage.TextBody = "1"
objMessage.Send
End Sub

Sub sendMail2

objMessage.Subject = "2"
objMessage.TextBody = "2"
objMessage.Send
End Sub

Sub sendMail3

objMessage.Subject = "3"
objMessage.TextBody = "3"
objMessage.Send
End Sub


Zou je me even kunnen helpen?

[ Voor 23% gewijzigd door Verwijderd op 07-03-2005 13:23 ]


Verwijderd

Kom op zeg... wizzkizz heeft het je gewoon voorgekauwd, en nog ga je het helemaal verkeerd aanpakken:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
If (Hour(now) > 8 AND Hour(now) < 17) Then
  sendMail ( "1" )
ElseIf (Hour(now) = 22) Then
  sendMail ( "2" )
Else
  sendMail ( "3" )
End If

Sub sendMail ( subject )
   Set objMessage = CreateObject("CDO.Message")
   objMessage.Sender = ""
   objMessage.From = ""
   objMessage.To = ""
   objMessage.Subject = subject  ' hier komt dus 1,2 of 3 te staan omdat je de sub aanroept met "subject"
   objMessage.Send
End Sub

[ Voor 12% gewijzigd door Verwijderd op 07-03-2005 17:30 ]


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Verwijderd schreef op maandag 07 maart 2005 @ 13:22:
Het wil maar niet lukken hoor. ;(

Ik heb er zo iets van gemaakt, maat het is natuurlijk fout.
Ga anders even een tutorial lezen over wat een sub/method/functie nou precies is en hoe je het moet gebruiken. Ik denk je dat verder helpt dan hier nog een topic openen straks. :)

Noushka's Magnificent Dream | Unity


  • wizzkizz
  • Registratie: April 2003
  • Laatst online: 19-12-2025

wizzkizz

smile...tomorrow will be worse

ff miereneuke hoor ;)

Verander
Visual Basic:
1
  Set objMessage = CreateObject("CDO.Message") 
liever in
Visual Basic:
1
  Set objMessage = Server.createObject("CDO.Message") 

Make it idiot proof and someone will make a better idiot.
Real programmers don't document. If it was hard to write, it should be hard to understand.


Verwijderd

Topicstarter
okay bedankt, het werkt.

Maar hoe zit het als ik nog een veld objMessage.TextBody = "" wil toevoegen? Dien ik dan een tweede sub aan te maken of kun de huidige sub aangepast worden?

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 08:55

sopsop

[v] [;,,;] [v]

Omdat het over netjes maken gaat:

Aangezien er bij de declaratie van het object van een soort naming convention gebruik wordt gemaakt, namelijk "soort variable + variabele naam", een object genaamd message, dus:
Visual Basic:
1
Dim objMessage

Dan zou dat bij de declaratie van de sub ook zo moeten:
Visual Basic:
1
Sub sendMail ( sSubject )

Zo zie je meteen dat het een string is (de eerste 's' staat voor string). Zeker bij VBS is dat noodzaak omdat de variabelen bij declaratie geen Type meekrijgen.

En over de vraag van de TS:
Visual Basic:
1
Sub sendMail ( sSubject, sMailBody )

En de rest kan je dan zelf wel uitzoeken neem ik aan.

[ Voor 4% gewijzigd door sopsop op 08-03-2005 10:42 ]

Pagina: 1