webForumDet fria alternativet
Logga in / Bli medlem

radera x 2

ASP

9 svar · 272 visningar · startad av lillen_009

Medlem sedan nov. 2002137 inlägg
Trådstart#1

Jag har ett litet problem...

Jag håller på och gör en funktion så att man kan skicka privata meddelanden till varandra. Har fått problem med raderingsbiten. Koden under tar bort flera marerade inlägg precis som jag vill. Nu är det så att när man raderar ett från utkorgen som ännu inte blivit läst så vill jag även ta bort det från andra personens inkorg. Hur kan man göra det på ett bra sätt?

meddelandena ligger som två rader i databasen. Det gäller ASP/MySQL.

Har en relation mellan raderna i databasen.
Ex på hur databasen ser ut

IsmID______sender_____receiver_____original_____showed
234________34_________45__________0___________0000-00-00 00:00:00
235________34_________45__________234________0000-00-00 00:00:00
236________13_________42__________0___________0000-00-00 00:00:00
237________13_________42__________236________2003-09-29 18:16:12

skickade meddelanden får original=0. Vill jag radera post med ID=234 så ska alltså även 235 raderas eftersom där inte fnn något datum i kolumnen showed. Vill jag även radera ID=236 ska inte ID=237 raderas eftersom meddelande redan kommit fram och lästs.

Dim alsmID1, SQL1 
alsmID1 = split(request.form("IsmID"), ", ") 
for i=0 to UBound(alsmID1) 
SQL1 = "DELETE FROM ism WHERE IsmID="& alsmID(1) & " AND sender="&request.form("sender") 
Set RS1 = con.execute(SQL1)

(delar kommer från en tidigare tråd på wF)

Vore mycket, mycket tacksam om någon kunde hjälpa mig en bit iallafall

Medlem sedan dec. 200012 464 inlägg
#2
sql1 = "delete from ism where (IsmID="& alsmID(1) &_
 " AND sender="&request.form("sender") & _
") or (original = " & alsmID(1) & _
" and showed = '0000-00-00 00:00:00') "
Medlem sedan nov. 2002137 inlägg
#3

tack, men får 0x800A000D "inkompatibla typer. Det går inte ens med response.wrte SQL1. Felet kommer då med

Medlem sedan dec. 200012 464 inlägg
#4

Hmm

Kan du visa lite mer kod markera vilken rad som orsakar felet?

Hur är alsmid definierad?

Medlem sedan nov. 2002137 inlägg
#5

allt jag skrivit om alsmid står i första meddeladet. felet pekar på din SQL-rad.

det fungerar med min inledande kod att radera flera poster. problemet kommer när man vill radera även de som är skickade men ännu inte lästa

Medlem sedan dec. 200012 464 inlägg
#6

Borde det inte stå almsid(i) istället?

Medlem sedan nov. 2002137 inlägg
#7

ja, såklart ska det vara så. Det ville sig inte iallafall. Samma fel.

 Dim alsmID1, SQL1
alsmID1 = Split(request.form("IsmID"), ",")
for i=0 to UBound(alsmID1)
SQL1="DELETE FROM ism WHERE (IsmID="& alsmID(i) & " AND sender="&request.form("sender") & ") or (original = " & alsmID(i) & " and showed = '0000-00-00 00:00:00') "
Set rs1 = con.execute(SQL1)
next
Medlem sedan nov. 2002137 inlägg
#8

showed är ett datumfält som ska vara tomt...

0000-00-00 00:00:00 är inputmasken

Medlem sedan dec. 200012 464 inlägg
#9

Får du samma fel (0x800A000D "inkompatibla typer)?

Om du med tomt menar null så skall du använda

sql1 = "delete from ism where (IsmID="& alsmID(i) &_
 " AND sender="&request.form("sender") & _
") or (original = " & alsmID(i) & _
" and showed is null) "
connect.execute sql1,,128

Det behövs inget recordset när du gör execute.

Medlem sedan nov. 2002137 inlägg
#10

ska det vara ,,128?

Om det ska vara så, så blev det ingen skillnad. Börjar ge upp nu. Får designa om tabellen i databasen och lösadet på annat sätt. *suck*

384 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
126 ms — deklarationer (db)
121 ms — hämta statistik (db)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)