Avatar billede saviola Nybegynder
07. februar 2007 - 23:00 Der er 8 kommentarer og
3 løsninger

Asp : random afsendelse af mail

Kan jeg få denne funktion til at sende nyhedsbrev til random 50 brugere, istedet for at sende til alle brugere om det er ud nu ?

skal man lave en random udvælgelse i sin sql eller i loopet længere nede ?

Her er lidt kode:

'our variables for the email and for our objects
Dim strTo , strFrom , strSubject , strBody , objCDONTS , objRS
'get the results from the create newsletter form
strSubject = Request.Form("subject")
strBody = Request.Form("message")
          set objRS = Server.CreateObject("ADODB.Recordset")
          objRS.ActiveConnection = MM_conn_STRING
          objRS.Source = "SELECT Distinct p_email FROM users WHERE p_newsletter = 'y' AND p_approve = 'y' AND (p_ban is null)"
          objRS.CursorType = 0
          objRS.CursorLocation = 2
          objRS.LockType = 3
          objRS.Open()
          objRS_numRows = 0

'just a message to the admin
Response.Write ("<br><font size='2'>&nbsp;&nbsp;Newsletters are being sent..</font>")
response.Write ("<br><br>")
'loop through entries
While not objRS.EOF
    'create an instance of the CDONTS object
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Avatar billede boomshanka Nybegynder
07. februar 2007 - 23:03 #1
Det skulle du meget gerne kunne gøre i din SQL - prøv at tjekke den her fætter ud:

http://www.petefreitag.com/item/466.cfm
Avatar billede boomshanka Nybegynder
07. februar 2007 - 23:05 #2
Du burde så kunne sætte LIMIT op til 50 eller TOP hvis det er Microsoft SQL
Avatar billede madeindk Nybegynder
07. februar 2007 - 23:07 #3
objRS.Source = "SELECT Distinct p_email FROM users WHERE p_newsletter = 'y' AND p_approve = 'y' AND (p_ban is null) ORDER BY RAND() LIMIT 50 h"
Avatar billede madeindk Nybegynder
07. februar 2007 - 23:07 #4
Minus det sidste h...

objRS.Source = "SELECT Distinct p_email FROM users WHERE p_newsletter = 'y' AND p_approve = 'y' AND (p_ban is null) ORDER BY RAND() LIMIT 50 "
Avatar billede saviola Nybegynder
07. februar 2007 - 23:21 #5
virker det også med gode gamle access ?
Avatar billede saviola Nybegynder
07. februar 2007 - 23:25 #6
umiddelbart virker det ikke..skal de "twistes" lidt på SQLen ?
Avatar billede saviola Nybegynder
08. februar 2007 - 00:06 #7
Det her virker..å mangler der bare en LIMIT - hvis jeg sætter LIMIT 10 på denne sql så får jeg denne fejl : Syntax error (missing operator) in query expression 'RND() LIMIT 10'

SELECT p_email FROM users WHERE p_newsletter = 'y' AND p_approve = 'y' AND (p_ban is null) ORDER BY RND()
Avatar billede saviola Nybegynder
08. februar 2007 - 00:34 #8
tror ikke man kan bruge LIMIT med access ? kan man løse det med TOP ?
Avatar billede madeindk Nybegynder
08. februar 2007 - 08:12 #9
Sådan her ser den ud med access, skal indsættes efter While not rs.eof

rs.MoveFirst
Randomize
rs.Move(int(rs.RecordCount * rnd()))

If Not rs.EOF And Not rs.BOF Then
  Fundet = True
End If

Kig evt. på: http://www.opfinderen.dk/sites/2/
Avatar billede a1a1 Novice
08. februar 2007 - 17:23 #10
med sql server kan du bruge ORDER BY NEWID(), det virker muligvis også i access...

;o)
Avatar billede saviola Nybegynder
09. februar 2007 - 17:32 #11
jeg arbejder med det..tak for deltagelse..deler point ud.
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