webForumDet fria alternativet

Generera unikt ordernummer

ASP

23 svar · 603 visningar · startad av Janspeed · sida 2 av 2

Frågan, av Janspeed

Hejsan! Undrar om det är någon som vet ett bra sätt att generera ett unikt ordernummer som ska läggas till en beställning? Jag sitter och spekulerar över mina alternativ. Tanken är att nummret ska skickas med i ett mail samt visas på sidan när beställningen bekräftats för kunden. Än så länge har jag kommit fram till 3 st alternativ. Det första är att lagra senaste ordernummret i en databas och

Läs frågan i sin helhet →
Medlem sedan dec. 200012 464 inlägg
#21

Sessionid kommer du åt via session-objektet.

<%
id = Session.SessionID
%>

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 2001510 inlägg
#22

Aha. Så servern loggar alla besökare i Sessions oavsett?

Jättehyggligt alla som hjälper till. Jag ska strax lägga ner och inte fråga mer. :)

Tänkte att jag skulle pröva ett test till med lagrade procedurer i SQL Server. Är det någon som vet om det går att generera datum direkt i en lagrad procedur eller om jag måste hämta det utifrån i en parameter?

CREATE PROCEDURE spInsOrder
@Kampanjkod VARCHAR(10),
@OrderText TEXT,
@Produkt VARCHAR(50), 
@Epost VARCHAR(50)
AS
INSERT INTO tblOrder2(Kampanjkod, OrderText, Datum, Produkt, Epost) VALUES(@Kampanjkod, @OrderText, Date(), @Produkt, @Epost)
RETURN @@IDENTITY

GO

Är det också någon som vet hur jag hämtar IDENTITY värdet som returneras? Måste jag ha en kolumn som heter IDENTITY också? Kan jag göra så här?

SQL = "lagrad_procedur"
Set rs = Conn.Execute(SQL)
RefNr = rs("IDENTITY")

/JANspeed

Medlem sedan dec. 200012 464 inlägg
#23

För att få tag på datum i sql-server kan du använda någon av funktionerna

current_timestamp

eller

getdate()

(Dom är helt synonyma men current_timestamp är den som är definierad i ANSI standarden)

Om du använder return i en procedure så måste du använda ett command-objekt för att få tag på värdet.

Det är enklare om du skriver

select @@identity as identity

så kan du göra som du skrivit nu.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 09 nov 2001]

Medlem sedan jan. 2001510 inlägg
#24

Vad använder man RETURN till i lagrade procedurer då? Snodde det från en annan procedur som låg och skräpade.

Nu ser min lagrade procedur ut så här:

CREATE PROCEDURE spOrderIns
@Kampanjkod VARCHAR(10),
@OrderText TEXT,
@Produkt VARCHAR(50), 
@Epost VARCHAR(50)
AS
INSERT INTO tblOrder2(Kampanjkod, OrderText, Datum, Produkt, Epost) VALUES(@Kampanjkod, @OrderText, current_timestamp, @Produkt, @Epost)
SELECT @@IDENTITY AS ID
GO

Och den verkar fungera himla bra. Tiderna låg på lägre nivå än till och med hämta nummret från en fil. current_timestamp gjorde susen. Något mer jag bör tänka på? :)

271 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)