/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
At sende mails til et recordset ?
Fra : Jakob Munck


Dato : 01-05-02 21:37

Jeg har en lille datingsite på nettet, hvor deltager skriver "breve" til
hinanden v.hj.a. en database. (www.topdating.dk). Nu vil jeg gerne lave det
sådan, at jeg kan lave et udtræk af medlemslisten - f.eks. alle medlemmer
over 30 år - og sende en bestemt meddelelse til alle disse mennesker på en
gang. Men hvordan gør jeg det?

Koden her er forenklet for at gøre testning lettere, og i praksis vil der
være tid mellem at den første sql-søgning laves, og der hvor brevene rent
faktisk sendes afsted. Derfor mener jeg, at det klogeste må være, at skrive
det fundne recordset op som en applicationvariabel, da jeg så senere (når
brevet er udformet), kan hente det ned igen og bruge det til at sende
brevene efter.

Her er hvad jeg har forsøgt uden held:

<%
...........
' her vælger jeg ud hvem jeg vil sende mails til::
Sql = "select * from tbBruger where alder > 30"
Set rs = Conn.Execute(Sql)

' her skriver jeg recordsets for brugerNavn og brugerId op som
applicationvariable
' med det formål at kunne hente det ned på et senere tidspunkt:
Application.Contents("brugerNavn") = rs("brugerNavn")
Application.Contents("brugerId") = rs("brugerId")

' her er nogle testvariable (ændres i den endelige version):
emne2 = "Test-overskrift"
besked2 = "Test-besked"

' her henter jeg de 2 recordsets ned igen:
modtagerNavn2 = Application("brugerNavn")
modtagerId2 = Application("brugerId")

' her laver jeg et loop for at
do while not RS.eof

sql_insert = "insert into mail (afsenderNavn, afsenderId, modtagerNavn,
modtagerId, mailEmne, mailBesked) values ('" & afsenderNavn2 & "', '" &
afsenderId2 & "', '" & modtagerNavn2 & "', '" & modtagerId2 & "', '" & emne2
& "', '" & besked2 & "')"

set RS= Conn.execute(SQL_insert)

RS.movenext
loop
........
%>

Koden virker ikke. Der sættes ganske enkelt intet ind i db, og kommer ingen
fejlmelding, så jeg gør altså noget helt forkert. Jeg er i tvivl om man
overhovedet kan skrive et recordset op i en applicationvariabel sådan som
jeg forsøger? Og om man kan lave et loop med en sql_insert som vist?

Er der nogen, der kan finde fejlene i min kode?


v.h.
Jakob Munck




 
 
Jakob Andersen (02-05-2002)
Kommentar
Fra : Jakob Andersen


Dato : 02-05-02 08:08

"Jakob Munck" <jakob.munck@tdcadsl.dk> skrev i en meddelelse
news:3cd04eba$0$11919$edfadb0f@dspool01.news.tele.dk...
> Sql = "select * from tbBruger where alder > 30"

Undgå "SELECT *" når du alligevel kun bruger to felter:

SELECT brugerNavn, brugerId FROM tbBruger WHERE alder > 30

og vær sikker på at din SQL returnerer et resultat

> Application.Contents("brugerNavn") = rs("brugerNavn")
> Application.Contents("brugerId") = rs("brugerId")

Du lægger jo kun en værdi ind i din application variabel. Lav istedet et
Array. En helt anden ting er at jeg ikke forstår hvorfor du vil have dit
udtræk i applicationscope du bruger det jo ikke helt rigtigt til noget.

> do while not RS.eof
[SNIP]
> set RS= Conn.execute(SQL_insert)
> RS.movenext
> loop

Dette her ser lidt forkert ud. Lav istedet din INSERT statement som en lang
streng der er kommasepereret og så eksekver den efter loopet.

--
Jakob Andersen



Peter Lykkegaard (02-05-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 02-05-02 09:04


"Jakob Munck" <jakob.munck@tdcadsl.dk> wrote in message
news:3cd04eba$0$11919$edfadb0f@dspool01.news.tele.dk...
> Jeg har en lille datingsite på nettet, hvor deltager skriver "breve" til
> hinanden v.hj.a. en database. (www.topdating.dk). Nu vil jeg gerne lave
det
> sådan, at jeg kan lave et udtræk af medlemslisten - f.eks. alle medlemmer
> over 30 år - og sende en bestemt meddelelse til alle disse mennesker på en
> gang. Men hvordan gør jeg det?


> Sql = "select * from tbBruger where alder > 30"
> Set rs = Conn.Execute(Sql)
>
> sql_insert = "insert into mail (afsenderNavn, afsenderId, modtagerNavn,
> modtagerId, mailEmne, mailBesked) values ('" & afsenderNavn2 & "', '" &
> afsenderId2 & "', '" & modtagerNavn2 & "', '" & modtagerId2 & "', '" &
emne2
> & "', '" & besked2 & "')"
>
> Koden virker ikke. Der sættes ganske enkelt intet ind i db, og kommer
ingen
> fejlmelding, så jeg gør altså noget helt forkert. Jeg er i tvivl om man
> overhovedet kan skrive et recordset op i en applicationvariabel sådan som
> jeg forsøger? Og om man kan lave et loop med en sql_insert som vist?

Prøv at overveje din implementering en gang til
Databaser er _mængde_ orienteret

fx
sql_insert = "insert into mail (" & _
"afsenderNavn, " & _
"afsenderId, " & _
"modtagerNavn, " & _
"modtagerId, " & _
"mailEmne, " & _
"mailBesked & "_
") " &
"Select " &
"'" & afsenderNavn2 & "' As AfsenderNavn, " &
'" & afsenderId2 & "' As AfsenderID, " & _
"tbBruger.BrugerNavn, " & _
"tbBruger.BrugerID, " & _
"'" & emne2 & "' As MailEmne, " & _
"'" & besked2 & "' As MailBesked " & _
"from tbBruger where tbBruger.Alder > 30"

Dvs tag alle forekomster af rækker i tabellen tbBruger hvor alder er større
end 30 og indsæt disse rækker i tabellen Mail - sammen med dine "konstanter"
AfsenderNavn, AfsenderID, MailEmne, MailBesked

mvh/Peter Lykkegaard



Jakob Munck (02-05-2002)
Kommentar
Fra : Jakob Munck


Dato : 02-05-02 15:27

Tak for jeres svar. Meningen med koden er, at man først skal kunne lave en
udskrift i listeform af et antal medlemmerer (f.eks. 1000 stk.) og derefter
skal man kunne sende et formindput (brev) til netop disse 1000 medlemmer.

Men kan man have 1000 navne og id-numre i et Array?
Er der en anden og bedre måde at sende formindput til 1000 udvalgte brugere?


v.h.
Jakob Munck



PS. Når de udvalgte records først skal lægges op som en Applicationvariabel
er det fordi arbejdsgangen på siten er sådan, at man først laver en liste
over de brugere man vil sende post til, og derefter skriver den tekst man
vil sende og først til sidst sender den. Derfor skal recordsettet gemmes, så
det er klar medens teksten skrives til den skal sendes. Jeg håber det er
forståeligt ?



Jakob Andersen (02-05-2002)
Kommentar
Fra : Jakob Andersen


Dato : 02-05-02 15:21

"Jakob Munck" <jakob.munck@tdcadsl.dk> skrev i en meddelelse
news:3cd14987$0$11920$edfadb0f@dspool01.news.tele.dk...
> Tak for jeres svar. Meningen med koden er, at man først skal kunne lave en
> udskrift i listeform af et antal medlemmerer (f.eks. 1000 stk.) og
derefter
> skal man kunne sende et formindput (brev) til netop disse 1000 medlemmer.

Kan du ikke bare først lave udtrækket vise resultaterne, lægge SQL'en i din
Application variabel. Og så senere bruge peters forslag når de skal sendes
ud.

--
Jakob Andersen



Jakob Munck (02-05-2002)
Kommentar
Fra : Jakob Munck


Dato : 02-05-02 15:30

Jeg skal lige gøre opmærksom på, at det recordset der findes har forskellig
størrelse fra gang til gang. Det er måske et argument imod at anvende et
Array? Men findes der overhovedet andre metoder gemme et recordset?


jakob



Peter Lykkegaard (02-05-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 02-05-02 16:04


"Jakob Munck" <jakob.munck@tdcadsl.dk> wrote in message
news:3cd14a2b$0$11941$edfadb0f@dspool01.news.tele.dk...
> Jeg skal lige gøre opmærksom på, at det recordset der findes har
forskellig
> størrelse fra gang til gang. Det er måske et argument imod at anvende et
> Array? Men findes der overhovedet andre metoder gemme et recordset?
>
xml...

mvh/Peter Lykkegaard



Jakob Andersen (02-05-2002)
Kommentar
Fra : Jakob Andersen


Dato : 02-05-02 19:11

"Peter Lykkegaard" <polonline@hotmail.com> wrote in message
news:3cd1552d$0$97300$edfadb0f@dspool01.news.tele.dk...
> xml...

Midlertidige tabeller er også et bud, da jeg forestiller mig at det ikke er
hver dag du sender sådan en besked ud.

--
Jakob Andersen



Jakob Munck (05-05-2002)
Kommentar
Fra : Jakob Munck


Dato : 05-05-02 07:06

I skal begge have tak for inspirerende feedback. Jeg har (næsten) løst
problemer.

v.h.
Jakob



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste