Jag skickar iväg ett mail till användaren när personen har registrerat sig, personen öppnar mailet för att verifiera epostadressen samt aktiveringskoden. Hej! Hej Håkan. Jag ändrade Hej igen! Har du ändrat till "IF @LoginCheck = 0"? Jag har ändrat datatypen till int Öppnar upp tabellen för att kolla om någon ändring har skett. Eftersom allt ser ok ut, verkar det vara datarelaterat. Jag kodar in värderna Har du ändrat datatypen i tabellen på Active? Håkan du kommer slå ihjäl mig om jag berättar vad felet va. <b>ActivetCode=bifjeb82tiAktivera en användare
Tanken med denna SP är att den skall kolla ifall användaren redan är aktiverad, är inte användaren aktiverad så skall kolumnen Aktive som är satt på default = 0 vid ny post updateras till 1 och sedan skicka besökaren vidare till en sida som förklarar att besökaren kan logga in.
Har kunden redan aktiverat sig så slussas användaren vidare till en annan sida.
Därav så deklarerar jag LoginCheck som då ser ifall användaren är aktiv eller inte.
Vad jag inte får att fungera är updatera från 0 till 1, har provat i Query Analyser och fungerar där.
CREATE PROCEDURE spAktiveraUser (@anv_namn char(10), @epostadress varchar(50), @ActivateCode char(10))
AS
SET NOCOUNT ON
DECLARE @LoginCheck char(1)
SET @LoginCheck = (SELECT Active FROM dbuser WHERE anv_namn = @anv_namn AND epostadress = @epostadress AND ActivateCode = @ActivateCode)
IF @LoginCheck = NULL
BEGIN
UPDATE dbUser SET Active = 1
WHERE (anv_namn = @anv_namn AND epostadress = @epostadress AND ActivateCode = @ActivateCode)
END
SET NOCOUNT OFF
RETURN @LoginCheck
GOSv: Aktivera en användare
Några funderingar.
Du sätter Aktive till 0 som default.
Varför söker du då på NULL (i IF satsen) när du ska uppdatera?
Finns användaren har han antingen 0 eller 1.
Borde stå: "IF @LoginCheck = 0"
MEN, sen kan man fundera, då @LoginCheck är en char(1), vilken datatyp har Aktive?
Är den också char(1), ska det stå, "IF @LoginCheck = '0'"
EDIT: RETURN vill ha en integer som returvärde, borde inte gå med en char.
//HåkanSv:Aktivera en användare
-Du sätter Aktive till 0 som default.
Varför söker du då på NULL (i IF satsen) när du ska uppdatera?
Finns användaren har han antingen 0 eller 1.
Borde stå: "IF @LoginCheck = 0"
Det har du en poäng i
Aktive har datatypen bit.
Jag provade med bit först men fick bara fel, jag provade char för att komma vidare.
Har du något förslag?Sv: Aktivera en användare
DECLARE @LoginCheck char(1)
Till
DECLARE @LoginCheck bit
Då gick det bra men posten updateras inteSv:Aktivera en användare
Pelle hann emellan, blev utestängd ett tag.
Jag tycker att du ska ändra till TINYINT i stället.
//HåkanSv:Aktivera en användare
Annars körs inte UPDATE.
//HåkanSv: Aktivera en användare
samt
IF @LoginCheck = 0
Händer inget skall prova bara med att erhålla ett värde av dom tre nämnda.Sv: Aktivera en användare
Japp kört den i QA, inget fel
CREATE PROCEDURE spAktiveraUser (@ActivateCode char(10))
AS
SET NOCOUNT ON
DECLARE @LoginCheck int
SET @LoginCheck = (SELECT Active FROM dbuser WHERE ActivateCode = @ActivateCode)
IF @LoginCheck = 0
BEGIN
UPDATE dbUser SET Active = 1
WHERE (ActivateCode = @ActivateCode)
END
SET NOCOUNT OFF
RETURN @LoginCheck
GOSv:Aktivera en användare
Hur gör du i QA när du kör?
Klistrar du in texten och hårdkodar in värden, eller högerklickar du och kör debug på proceduren?
//HåkanSv: Aktivera en användare
När jag kör en parse query så är allt ok
När jag kör Execute så får jag felmeddelande på rad 7 och 11 med server msg 207Sv:Aktivera en användare
Ändra till TINYINT t.ex.
//HåkanSv:Aktivera en användare
Ett av värderna fån mailet va fel
ActivetCode=bifjeb82ti
Till
ActiveCode=bifjeb82ti
Sorry Håkan
Du skall ha ett sådant FET TACK för din tid, jag kan inte mer än be om ursäkt.
Skulle ha kollat detta först Sv: Aktivera en användare
Till
ActiveCode=bifjeb82ti
</b>
Ser lika ut för mig, alltså det efter =.
Inga problem, sånt som händer i datavärlden.
Se vad jag skrev ovan <b>"Eftersom allt ser ok ut, verkar det vara datarelaterat."</b>
Hade det på känn, att det var det det kunde fela.
PRINT är ett bra hjäpmedel (fattigmansdebug).
Då kan man snabbt verifiera vad variablerna innehåller.. ;-)
Lycka till med resten.
//Håkan