Dataene bliver fint sat ind i databasen, men hvordan kan de fjernes igen? Bruger skal indtaste værdier i form felterne "navn2" og "email2", og hvis de stemmer overens med en række i databasen, skal den slettes!
Sådan står det nu, og det virker slet ikke (jeg aner ikke hvordan det skal gøres, derfor har jeg bare kopieret koden fra spm 328612 ind med lidt modifikationer):
Den virker, med kun en af parametrene. F.eks. slettes hele rækken, hvor "navn2" indgår. Men jeg kan ikke få det til at virke, så den både tjekker Navn og Email!
strSQL = "Delete from mailliste where Navn = ('" & Request.Form("navn2") & "')" Conn.Execute(strSQL)
"DELETE FROM mailliste WHERE Navn='" & Request.Form("navn2") & "' AND Email='" & Request.Form("email2") & "'"
Der skal ingen parenteser, og der skal slet ikke fortælles hvilke felter der skal slettes.
Ovenstående SQL streng giver et resultat magen til dette, forudsat at navn2=websmith og email2=websmith@websmith.dk
"DELETE FROM mailliste WHERE Navn='websmith' AND Email='websmith@websmith.dk'"
Såre simpelt.
Det nemmeste er at oprette en variabel til at holde SQL strengen, og ved fejl, så printer man lige sin sql streng for at se om den nu også er helt korrekt.
En lille krølle på halen kunne måske være at det er dårlig skik at bruge lighedstegn (=) i forbindelse med sammenligning af felter som indeholder tekst.
Som regel bruger LIKE i forbindelse med tekst sammenligning, og = (lighedstegn) i forbindelse med tal.
Dog er der databaser som understøtter lighedstegn ved tekstsammenligninger, men man skal ikke regne med det.
Næh ikke så vidt jeg ved, problemet er jo at et = med tegn signalerer at de skal være fuldstændigt ens, men i et tekstfelt, så kan størrelsen på feltet jo være variabelt, og nogen databaser putter automatisk blanktegn ind efter indholdet, hvis det ikke fyldet det hele, og så vil = ikke virke, da
"websmith"="websmith " ikke er korrekt, hvorimod "websmith" like "websmith " er korrekt. Da Like kigger om feltet indeholder det søgte og = checker om feltet er lig med det søgte.
Hvis du skriver Like 'websmith' så vil den finde alt som indeholder det fulde ord websmith, hvis du skriver like '%websmith%' så vil den fx også finde 'nowebsmithyes' og 'yeswebsmithno' osv. like uden wild cards kigger på fulde ord, og like med wild cards på det hele.
Nej, og jeg har lige testet på en SQL server 2000, og det ser faktisk ud til at du har ret :)
Jeg var bare sikker, og synes selv at mine indlæg giver god mening :)
Og på en SQL server kan man ikke sammenligne med = på tekstfelter.
Fejlen man får når man prøver. ----------------- The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator. ----------------
Så like er nok stadigvæk det korrekte, da det kan køre over alt. Dog sammenliger Like på hele feltet og ikke på hele ord som jeg skrev, og med wildcards så søger den i feltet.
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.