set rs = "select message,username from members,messages"
while not rs.eof
'skicka
rs.movenext
wend
Hur gör du sen så att du inte skickar allt en gång till? Tra du bort dom eller har du något statusfält?
18 svar · 376 visningar · startad av M.Cheraghi
Tjenare..
jag har ett litet dilemma!
jag har en tabell där alla som är medlemmar står.
sen har jag en till tabell i databasen där "systemmedelanden "står! så vill jag skicka ett medelande till alla andvändare! varsitt medelande till varje medlem!
men jag har inte kommit i underfund med hur jag ska göra för att få det och fungera!
altså jobba med 2 tabeller
/MVH
set rs = "select message,username from members,messages"
while not rs.eof
'skicka
rs.movenext
wend
Hur gör du sen så att du inte skickar allt en gång till? Tra du bort dom eller har du något statusfält?
LarsG skrev:
set rs = "select message,username from members,messages" while not rs.eof 'skicka rs.movenext wendHur gör du sen så att du inte skickar allt en gång till? Tra du bort dom eller har du något statusfält?
h
mm jag hade tänkt att så här
[members]
- username
[systemmess]
- till
- medelande
- status
dvs hämta ut alla andvändarnamnen, å loopa medelandet i systemmess tabellen i databasen..
* till = motagaren
* medelande = medelandet om ni inte listat ut det :P
* status = om det är läst eller in (0 eller 1)
Jaha det var ju en annan sak.
Innehåller till och username samma värde eller hur är tabellerna relaterade?
LarsG skrev:
Jaha det var ju en annan sak.
Innehåller till och username samma värde eller hur är tabellerna relaterade?
precis... username (ligger i members ) innehåller andvändarnamn, och till (ligger i systemmess) ska innehålla vem medelandet ska gå till... dvs dem ska innehålla samma värde
å jag vill loopa medelandet till alla andvändare, som finns i members tabellen.
//MVH
R) fixade till lite särskrivning.. :P
Detta skapar ett nytt meddeande till varje medlem
Set Rs = conn.execute("SELECT username FROM members")
Do until Rs.EOF
conn.execute("INSERT INTO systemmess (till, meddelande, status) VALUES(" & Rs("username") & ", 'mess', 'status')")
Rs.MoveNext
Loop
Vad är det då för information du behöver från tabellen members? Email kanske eller vad menar du mes skicka?
'öppna databas
q = "select medelande, till,emailadress " & _
" from members m inner join systemmess s" & _
" on m.username = s.till " & _
" where status = 1 "
set rs = connect.execute(q)
while not rs.eof
on error resume next
'skicka mail
on error goto 0
if err.number <> 0 then
'hantera felet. Hur vill du ha det?
else
connect.execute "update systemmess set status = 0 where till = '" & till & "'",,128
end if
rs.movenext
wend
'stäng
LarsG skrev:
Vad är det då för information du behöver från tabellen members? Email kanske eller vad menar du mes skicka?
'öppna databas q = "select medelande, till,emailadress " & _ " from members m inner join systemmess s" & _ " on m.username = s.till " & _ " where status = 1 " set rs = connect.execute(q) while not rs.eof on error resume next 'skicka mail on error goto 0 if err.number <> 0 then 'hantera felet. Hur vill du ha det? else connect.execute "update systemmess set status = 0 where till = '" & till & "'",,128 end if rs.movenext wend 'stäng
det är ett community för vår skola, o jag ska inte hämta email, utan messet ska skickas internt som du vet i communitys :P
bara hämta andvändarnamn, allihoppa från tabellen members samt loopa in dem i "systemmess" tabellen tillsammans med medelandet som skall skickas ut till samtliga personer som finns under members
nehepp, inget svar här inte, LarsG kanske glömt bort tråden?
Hmm. Hur var mitt exempel fel?
cyprys skrev:
Hmm. Hur var mitt exempel fel?
OMG, jag måste till synsam snarast :P jag såg inte ens att du hade svarat :) ber så hemst mycket om ursäkt fördet!!!
okej nu har jag pulat lite med din kod Cyprys, men jag får ett error hur jag än vrider och vänder på det
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i INSERT INTO-uttryck.
/weborg/test.asp, line 13
och med koden... rad 13 är bold
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databaser/members.mdb")&";"
Set Rs = conn.execute("SELECT username FROM members")
Do until Rs.EOF
user = RS("username")
read = "0"
tid = now
mess = "hej gay"
[b]conn.execute("INSERT INTO systemmess (till, medelande, time, read) VALUES( '"&user&"', '"&mess&"', "&tid&", "&read&")")[/b]
Rs.MoveNext
Loop
RS.close
Conn.close
%>
Kan tänka mig att user är integer-kolumn
conn.execute("INSERT INTO systemmess (till, medelande, time, read) VALUES("&user&", '"&mess&"', "&tid&", "&read&")")
jag får samma fel :( på samma rad.. även fast jag tog bort '-tecken från user
men ska det inte se ut så här???
Set Rs = conn.execute("INSERT INTO systemmess (till, medelande, time, read) VALUES('"&user&"', '"&mess&"', "&tid&", "&read&")")
Hmm. Testa att sätta [runt] time och read.. Tror att de är ord man helst inte ska använda.
cyprys skrev:
Hmm. Testa att sätta [runt] time och read.. Tror att de är ord man helst inte ska använda.
hur menar du?!?
men ska det inte vara
SET RS = conn.execute. på insert strängen?
conn.execute "INSERT INTO systemmess (till, medelande, [b][time][/b], [b][read][/b])" & _
" VALUES('"& user &"', '"& mess &"', "& tid &", "& read &")", , 128
/r: Just det... inget Set Rs...
Nej, inte Set RS = .
Vi ska ju inte ha någon data tillbaka, då ska vi inte heller skapa något recordset.
pustar ut... nu fungerar det! över lycklig... wooohooo =)
skriver ut en fullständig kod för dem som andvänder dökfunktionen nångång
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("databaser/members.mdb")&";"
Set Rs = conn.execute("SELECT username FROM members")
Do until Rs.EOF
user = RS("username")
read = "0"
tid = now
mess = "hej gay"
conn.execute("INSERT INTO systemmess (till, medelande, [tid], [status])" & _
" VALUES('"&user&"', '"&mess&"', '"&now&"', "&read&")")
Rs.MoveNext
Loop
RS.close
Conn.close
%>