Avatar billede neander Nybegynder
16. januar 2005 - 16:08 Der er 5 kommentarer

slette post med checkboxe

Jeg har en række checkboxe på en side ud for records jeg henter frem fra en accessdatabase.

De felter der er sat kryds i skal nu slettes, men kun hvis feltet [slettetAfsender]=true.

Hvad er galt med dette kode, hvor jeg vil lave reglen og finde de checkboxe der er sat hak i?

------
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM [post] WHERE beskedID=" & Request.Form("beskedID")
Connect.execute(sql)

If rs("slettetAfsender")=true then
rs.Delete
Else
rs.Update
rs("slettetModtager")=true
End if
------

Hvis ikke [slettetAfsender] er true skal feltet [slettetModtager] opdateres med hak i databasen.

Fejlmedd.: Item cannot be found in the collection corresponding to the requested name or ordinal.
Avatar billede thesurfer Nybegynder
16. januar 2005 - 20:51 #1
Hvis du har sat kryds i flere checkbox, er indholdet vist nok "navn1,navn2,navn3" osv..

Du skal derfor dele dem op, og lave en loop..

Jeg går ud fra, at beskedID er af typen tal.. derfor bruger jeg CInt().. ellers skal der bruges ' tegnet udenom værdien..

f.eks:

dim i, cb, acb, bid, fejl
' i = Integer, en tæller
' cb = CheckBox
' acb = ArrayCheckBox
' bid = BeskedID
' fejl = en variabel der indeholder bid der var fejl ved

cb = request.form("beskedID")
acb = split(request.form("beskedID") ' cb deles op og laves om til et array
fejl = "" ' nulstil fejl-strengen
tblNavn = "INDSÆT NAVNET PÅ TABELLEN HER" ' her indsætter du navnet på tabllen..
' hvis "post" er et reserveret ord, skal det være "[post]".

for i 0 to ubound(acb)

  ' bid = "'" & acb(i) & "'"    ' beskedID er af typen tekst

  bid = CInt(acb(i))  ' BeskedID er af typen tal

  sql = "select * from " & tblNavn & " where beskedID = " & bid

  set rs = Connect.execute(sql)

  if not (rs.bof or rs.eof) then
    ' vi har fundet en post
    If rs("slettetAfsender") = true then
      Connect.execute ("delete from " & tblNavn & " where beskedID =" & bid)
    else
          ' opdater til "true":
          Connect.execute ("update " & tblNavn & " set slettetModtager = true where beskedID = " & bid)
    end if
    else
      ' posten blev ikke fundet.. tilføj til beskedID til fejl-strengen
        fejl = fejl & bid & "<br>"
    end if

    set rs = nothing ' muligvis overflødig
   
next

' luk forbindelserne:
set rs = nothing
connect.close
set connect = nothing

if fejl <> "" then response.write "Følgende beskedID'er kunne ikke findes:<br><br>" & fejl



Dette script er ikke testet..
Hvis du er i tvivl om hvordan select, delete, update virker, se:

http://www.html.dk/tutorials/asp/ (lektionerne 17-22)
Avatar billede neander Nybegynder
18. januar 2005 - 10:49 #2
lukker... læg et svar, så kan du få halvdelen af points, pga god vilje ;o)
Avatar billede thesurfer Nybegynder
18. januar 2005 - 12:55 #3
eh? hvad med at teste det først? :-)
Avatar billede neander Nybegynder
19. januar 2005 - 22:33 #4
men jeg har fundet en anden løsning som fungerer tip top...
Avatar billede thesurfer Nybegynder
23. januar 2005 - 15:04 #5
Offentliggør venligst svaret, jvf. Ekspertens regel §2.8., så andre kan få gavn af svaret.

Ekspertens regel §2.8:
"Hvis der udloddes andre præmier end point såsom penge, så skal spørgsmålet placeres i kategorierne Opgaver eller Job/opgaver. Svaret på - eller løsningen til - et sådant spørgsmål behøver ikke at blive offentliggjort på Eksperten - i modsætning til spørgsmål, der involverer point. De skal offentliggøres på sitet. Kategorierne Opgaver og Job/opgaver kan stadig indeholde spørgsmål med point som præmier. I så fald gælder de almindelige regler såsom offentliggørelse af svar."

Ekspertens regler: http://www.eksperten.dk/regler.phtml
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