Mina Users kan göra ett antal beställningar varje dag. Antal beställningar är olika för olika User (1 till 5) och detta kallar jag för KVOT som jag lagrar i DBtabellen aspnet_Users. SET @Dagensdatum = DateTime.DaysInMonth jag insåg ganska snabbt att jag inte är så bra på det här med lag.proc. Kan förenkla det till bara två frågor. Vilket blir något ungefär så här:Uppdatera
I en annan post (SALDO) lagrar jag antal beställningar som en User har kvar för dagen. Om SALDO=3 => User kan göra 3 beställningar till idag men inte mer.
Nu vill jag mha. lagrade procedurer uppdatera SALDO varje gång en beställning skickas till mig. Dvs. Kolla om sista LastActivityDate (finns i samma DBtabell) är lika med dagensdatum.
Om ja => minska SALDO för 1
Om nej => KVOT = SALDO och minska SALDO med 1
Jag har försökt med följande men får syntaxfel:
ALTER PROC dbo.aspnet_GetSaldo
@user nvarchar(256) 'inparameter
AS
DECLARE @Dagensdatum DATETIME
DECLARE @Saldo int
DECLARE @Kvot int
DECLARE @Sistaaktivitet DATETIME
SET @Dagensdatum = DateTime.DaysInMonth
DECLARE @id nvarchar(256)
SET @id = ''
SELECT @id = UserId from aspnet_Users WHERE UserName = @user
SELECT @Saldo = Saldo From aspnet_Users WHERE UserId = @id
SELECT @Kvot = Kvot From aspnet_Users WHERE UserId = @id
SELECT @Sistaaktivitet = LastActivityDate From aspnet_Users WHERE UserId = @id
IF (@Dagensdatum = @Sistaaktivitet)
@Saldo = @Saldo - 1
IF (@Dagensdatum <> @Sistaaktivitet)
@Saldo = @Kvot
@Saldo = @Saldo - 1
INSERT dbo.aspnet_Users (Saldo) VALUES (@Saldo)WHERE UserId = @id
RETURN
Nån som kan hjälpa mig med detta???Sv: Uppdatera
Skulle väl må bättre av att vara
SET @Dagensdatum = GETDATE()
Sen undrar jag om du vill uppdatera, varför gör du en INSERT och inte en UPDATE?
Sen undrar jag om du verkligen vill ha @Saldo till @Saldo - 2, för det är det det blit om dagensdatum är sistaaktivitet. Du vill nog kapsla IF med en BEGIN...END för att köra rätt kod, eller?
IF (@Dagensdatum = @Sistaaktivitet)
@Saldo = @Saldo - 1
IF (@Dagensdatum <> @Sistaaktivitet)
@Saldo = @Kvot
@Saldo = @Saldo - 1 --Körs ALLTID!
/mickeSv:Uppdatera
Nu gör jag det här med asp istället...
tack för att du tog dig tid å svaraSv: Uppdatera
ALTER PROC dbo.aspnet_GetSaldo
@user nvarchar(256) 'inparameter
AS
UPDATE Saldo = Kvot, Sistaaktivitet = GETDATE()
FROM aspnet_Users
WHERE Sistaaktivitet < DATEADD(day, -1, GETDATE())
UPDATE Saldo = Saldo - 1
FROM aspnet_Users
WHERE UserName = @user
Orkar inte kolla upp syntaxen för DATEADD() funktionen.